首页 > 解决方案 > 只需要外部用户时的 Identityserver4 用户管理

问题描述

我的场景:我有一个客户端 ASP.NET MVC 应用程序,我现在使用 IdentityServer4 保护它,仅使用 IDSRV4 作为联合网关(不需要本地用户)。即任何访问该应用程序的用户只能使用外部提供商进行身份验证(我们的内部公司用户的 ADFS 或通过 SAML2 的比利时 eID 登录提供商,用于所有比利时公民的外部用户)。IDSRV4 将外部声明返回到客户端应用程序(使用 OpenIDConnect OWIN 中间件),然后用于登录用户。

此流程在身份验证(即身份令牌)方面工作。但是,如果我想开始请求访问令牌,或者我是否可以继续与 InMemory 用户一起生活(甚至没有完全存储)因为我的所有用户将始终由上述两个外部提供商之一识别。

感谢您的任何见解。

马修

标签: asp.net-identityidentityserver4

解决方案


您不需要任何持久性用户存储来分发由 Identity Server 处理的访问令牌。IdentityServer 中客户端应用程序的配置需要使用混合流(AllowedGrantTypes = GrantTypes.Hybrid),并且客户端应用程序必须请求授权码和身份令牌(options.ResponseType = "code id_token")。

但是,将用户的唯一标识(主题声明或唯一标识用户的另一个声明)从外部提供者传递给您的客户端应用程序可能不是最佳实践。您可能希望将该用户信息与您自己的用户唯一标识进行映射。在这种情况下,您将需要一个持久的用户存储来保存您自己的唯一用户标识。


推荐阅读