繁体   English   中英

OpenID可以从客户端而不是内部生成IdentityServer4请求令牌中的Connect吗?

[英]Can OpenID Connect in IdentityServer4 Request Tokens from Client rather than generate internally?

我试图更好地了解IdentityServer4的OpenID Connect协议,并且不清楚在哪里可以找到该问题的答案。

我喜欢Identity Server在身份验证结束时提供承载令牌的想法,其中包括关于用户身份以及他们可以访问哪些资源的声明。 但是,在Identity Server环境中存储用户可以访问哪些资源时,我有些不舒服。 我希望在我的客户应用程序上创作此授权作品。 OpenID回调中是否存在任何类型的回调,允许IdentityServer调用客户端并直接从客户端请求授权声明,而不是直接将其组合在一起?

例如,我正在开发一种产品,该产品要求用户使用Windows身份验证,用户名/密码或Google帐户登录。

该客户端应用程序将托管在云环境中,并将与Active Directory服务器托管在同一域中。
我的想法是创建一个内部托管的Identity Server解决方案,并创建一个托管在云中的客户端应用程序。

当用户登录到客户端应用程序时,它们将被重定向到Identity Server进行登录。IdentityServer将与Active Directory Server托管在同一域中,因此,如果有Windows凭据,我们可以自动将其登录。 否则,将出现一个登录屏幕,他们可以在其中输入用户名/密码,使用Google登录等。

一旦用户登录,Identity Server将返回一个承载令牌(可能是JWT),其中包含其声明信息。

我可以预见,这台Identity Server将被许多不同的客户端应用程序使用,因为它本质上允许Windows身份验证。 出于这个原因,我不愿意在Identity Server本身中存储用户可以访问的所有API资源。 我担心的是,如果我向客户端应用程序添加新权限(如Report Admin声明),则需要修改Identity Server以包括该新声明。 并且如果4个或5个客户端都使用此Identity Server,则可能会有些麻烦。

相反,我希望构建Identity Server,以便当用户登录特定客户端时,Identity Server将向客户端应用程序发出回调请求,以请求适用于该用户的声明。 这样,客户端应用程序知道并关心用户/声明映射,而不是Identity Server。 如果需要添加新的索赔,则可以在“客户端”应用程序中执行此操作。 如果需要将用户映射到声明,则可以在客户端应用程序上执行此操作。 我不需要在Identity Server上执行此操作。

该功能已经存在吗? 如果是这样,我需要寻找什么? 据我所知,似乎用户和他们有权访问的资源之间的映射都发生在Identity Server上。

我遵循的指南是这样的: http : //docs.identityserver.io/en/release/quickstarts/1_client_credentials.html#defining-the-api

感谢您的指导。

身份声明不应该用于授权,实际上,身份验证和授权是两个完全不同的关注点。

我建议您观看此视频该视频解释了原因并提供了替代的PolicyServer来回答您的问题(IdentityServer开发人员的精彩演讲)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM