仅需要外部用户时的 Identityserver4 用户管理
Identityserver4 user management when only external users are needed
我的场景:我有一个客户端 ASP.NET MVC 应用程序,我现在使用 IdentityServer4 保护它,仅将 IDSRV4 用作联合网关(不需要本地用户)。即,任何访问该应用程序的用户只能使用外部提供商进行身份验证(我们公司内部用户使用 ADFS,或者通过 SAML2 为所有比利时公民的外部用户使用比利时 eID 登录提供商)。 IDSRV4 returns 对客户端应用程序的外部声明(使用 OpenIDConnect OWIN 中间件),然后用于登录用户。
此流程在身份验证(即 identitytoken)方面有效。但是,如果我想开始请求访问令牌,或者我是否可以继续与 InMemory 用户(或甚至根本没有商店)因为我的所有用户将始终由上述两个外部提供商之一识别。
感谢您的任何见解。
马修
您不需要任何持久性用户存储来分发访问令牌,
由 Identity Server 处理。 IdentityServer 中客户端应用程序的配置需要使用混合流 (AllowedGrantTypes = GrantTypes.Hybrid),并且客户端应用程序必须请求授权码和身份令牌 (options.ResponseType = "code id_token").
但是,将用户的唯一标识(主题声明或其他唯一标识用户的声明)从外部提供商传递到您的客户端应用程序可能不是最佳做法。您可能希望将该用户信息映射到您自己的唯一用户标识。在那种情况下,您将需要一个持久的用户存储来保存您自己的唯一用户标识。
我的场景:我有一个客户端 ASP.NET MVC 应用程序,我现在使用 IdentityServer4 保护它,仅将 IDSRV4 用作联合网关(不需要本地用户)。即,任何访问该应用程序的用户只能使用外部提供商进行身份验证(我们公司内部用户使用 ADFS,或者通过 SAML2 为所有比利时公民的外部用户使用比利时 eID 登录提供商)。 IDSRV4 returns 对客户端应用程序的外部声明(使用 OpenIDConnect OWIN 中间件),然后用于登录用户。
此流程在身份验证(即 identitytoken)方面有效。但是,如果我想开始请求访问令牌,或者我是否可以继续与 InMemory 用户(或甚至根本没有商店)因为我的所有用户将始终由上述两个外部提供商之一识别。
感谢您的任何见解。
马修
您不需要任何持久性用户存储来分发访问令牌, 由 Identity Server 处理。 IdentityServer 中客户端应用程序的配置需要使用混合流 (AllowedGrantTypes = GrantTypes.Hybrid),并且客户端应用程序必须请求授权码和身份令牌 (options.ResponseType = "code id_token").
但是,将用户的唯一标识(主题声明或其他唯一标识用户的声明)从外部提供商传递到您的客户端应用程序可能不是最佳做法。您可能希望将该用户信息映射到您自己的唯一用户标识。在那种情况下,您将需要一个持久的用户存储来保存您自己的唯一用户标识。