【问题标题】:Identityserver4 user management when only external users are needed只需要外部用户时的 Identityserver4 用户管理
【发布时间】:2018-10-05 07:43:22
【问题描述】:

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

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

感谢您的任何见解。

马修

【问题讨论】:

    标签: asp.net-identity identityserver4


    【解决方案1】:

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

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

    【讨论】:

    • 谢谢。一个客户端应用程序需要存储用户信息,因此我使用 ASP.NET Identity 来存储它,但仅在客户端数据库中,而不是在 Identityserver 存储中。另一个将在不久的将来开发的客户端应用程序将不需要自己的用户,因为它的所有用户都将通过比利时 eID 登录,该 eID 具有比利时国家注册号作为主键(主题声明),我可以使用它来提供安全访问我的 API 中的数据。所以基本上我让客户决定他们是否需要自己的用户存储,但据我所知,IdentityServer 本身并不需要......
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-10-30
    • 2020-11-20
    • 2015-08-02
    • 2021-04-28
    • 1970-01-01
    • 1970-01-01
    • 2017-09-14
    相关资源
    最近更新 更多