gpt4 book ai didi

.net - 使用外部身份验证提供程序来获取用户凭据,使用私有(private) IdentityServer 来生成 token

转载 作者:行者123 更新时间:2023-12-02 07:41:16 26 4
gpt4 key购买 nike

我正在设计一个安全后端,它应该为多个客户端提供 token ,以保护多个 API。用户数据库位于 Azure B2C https://azure.microsoft.com/en-us/services/active-directory-b2c/ 中。我想创建包含基于用户访问的不同声明的 API token 。例如:用户 A 应该能够调用/api/stores/11,但不能调用/api/stores/12。

用例:

  • 直接进入 Azure B2C 以进行用户登录和 token 生成的应用程序 (ipad)。使用此 token 调用 API 以进行用户个人资料社交互动等。
  • 将调用具有访问权限限制的相同 API(不同模块)的外部系统。外部系统将有管理员,他们也将从 Azure B2C 获取凭据。

到目前为止我的解决方案:

  1. IdentityServer4 ( https://github.com/IdentityServer/IdentityServer4 ) 调用 Azure B2C 登录来验证用户凭据。
  2. 身份验证完成后(回调时),IdentityServer 将应用用户对外部系统拥有的任何声明(访问权限等),然后生成 token 。 IdentityServer 将有一个本地数据库,将用户 ID/电子邮件与访问权限连接起来。
  3. API 将使用 Multi-Tenancy 身份验证提供程序来支持来自 Azure B2C 的 token 和我的“中间”IdentityServer。提供程序分别是 IdentityServerAuthentication 和 OpenIdConnectAuthentication。

我的问题是这是否是一个可行的解决方案?是不是太复杂了?在这种情况下,你会采取什么不同的做法?我不想实现第二个用户登录,并且Azure B2C似乎不支持细粒度的访问权限。

提前谢谢您。

最佳答案

这实际上是一个非常常见的架构。

核心身份和代币平台归所有 - 这是唯一明智的做法。

然后,您可以使用任何机制(在您的情况下为 Azure B2C)进行身份验证。您将来可能希望添加包含用户或其他身份验证机制的本地数据库。这完全没问题。

重要的一点是 - 您的应用程序不关心这一点。他们只知道您的平台(在您的情况下使用身份服务器构建)。如果您决定有一天需要更改身份验证提供商 - 没关系。您的应用程序不受这一事实的影响。

此时,您的应用程序和服务只需要信任来自 IdentityServer 的 token - IdentityServer 负责与外部各方建立信任关系。

关于.net - 使用外部身份验证提供程序来获取用户凭据,使用私有(private) IdentityServer 来生成 token ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39206487/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com