我正在设计一个安全后端,它应该为多个客户端提供令牌,以保护多个 API。用户数据库位于 Azure B2C https://azure.microsoft.com/en-us/services/active-directory-b2c/。 我想创建包含基于用户访问的不同声明的 API 令牌。例如:用户 A 应该能够调用 /api/stores/11,但不能调用 /api/stores/12。
使用案例:
到目前为止我的解决方案:
我的问题是这是否是一个可行的解决方案?是不是太复杂了?在这种情况下,你会采取什么不同的做法?我不想实现第二个用户登录,而且Azure B2C似乎不支持细粒度的访问权限。
这其实是一个很常见的架构。
核心身份和代币平台归你所有——这是唯一明智的做法。
然后您可以使用任何机制(在您的情况下是 Azure B2C)来进行身份验证。将来您可能希望添加包含用户或其他身份验证机制的本地数据库。那完全没问题。
重要的一点是 - 您的应用程序不关心这一点。他们只知道您的平台(在您的情况下使用身份服务器构建)。如果您决定有一天需要更改身份验证提供商 - 没关系。您的应用程序不受这一事实的影响。
此时,您的应用程序和服务只需要信任来自 IdentityServer 的令牌 - IdentityServer 负责与外部各方建立信任关系。
这对于 IdentityServer4 来说是非常可行的。您的用例可以得到满足。我建议查看样本。