我的情况:我有一个正在使用IdentityServer4保护的客户端ASP.NET MVC应用程序,仅将IDSRV4用作联合网关(不需要本地用户)。也就是说,任何访问该应用程序的用户都只能使用外部提供商进行身份验证(对于内部公司用户是ADFS,对于所有都是比利时公民的外部用户,则是通过SAML2通过比利时eID登录提供商)。 IDSRV4将外部声明返回到客户端应用程序(使用OpenIDConnect OWIN中间件),然后将其用于登录用户。
此流程在身份验证(即身份令牌)方面起作用。但是,如果我想开始请求访问令牌,或者如果我可以继续与InMemory用户保持联系(甚至没有),我是否会在IDSRV4上需要持久的用户存储(例如ASP.NET Core Identity),我有点困惑。商店),因为我的所有用户都将始终由上述两个外部提供商之一标识。
感谢您的见解。
Mathieu
答案 0 :(得分:0)
您不需要任何永久性的用户存储来发放访问令牌, 由Identity Server处理。在IdentityServer中,客户端应用程序的配置需要使用混合流(AllowedGrantTypes = GrantTypes.Hybrid),并且客户端应用程序必须请求授权码和身份令牌(options.ResponseType =“ code id_token”)。>
但是,将用户的唯一标识(主题声明或另一条唯一标识用户的声明)从外部提供程序传递到客户端应用程序可能不是最佳实践。您可能希望使用您自己的用户唯一标识来映射该用户信息。在这种情况下,您将需要一个持久的用户存储来保留您自己的唯一用户标识。