【发布时间】:2016-08-30 13:53:55
【问题描述】:
我正在设计一个安全后端,它应该为多个客户端提供令牌以保护多个 API。用户数据库位于 Azure B2C https://azure.microsoft.com/en-us/services/active-directory-b2c/。 我想创建包含基于用户访问权限的不同声明的 API 令牌。例如:用户 A 应该能够调用 /api/stores/11,但不能调用 /api/stores/12。
用例:
- 直接进入 Azure B2C 以进行用户登录和生成令牌的应用程序 (ipad)。使用此令牌调用 API 以进行用户个人资料社交互动等。
- 将调用具有访问权限限制的相同 API(不同模块)的外部系统。外部系统将有管理员,他们也将从 Azure B2C 获取凭据。
到目前为止我的解决方案:
- IdentityServer4 (https://github.com/IdentityServer/IdentityServer4) 调用 Azure B2C 登录来验证用户凭据。
- 一旦身份验证完成(回调),IdentityServer 将应用用户对外部系统拥有的任何声明(访问权限等),然后生成令牌。 IdentityServer 将有一个本地数据库,该数据库将用户 ID/电子邮件与访问权限连接起来。
- API 将使用多租户身份验证提供程序来支持来自 Azure B2C 的令牌和我的“中间”IdentityServer。提供者分别是 IdentityServerAuthentication 和 OpenIdConnectAuthentication。
我的问题是这是否是一个可行的解决方案?是不是太复杂了?在这种情况下你会做些什么不同的事情?我不想实现第二个用户登录,Azure B2C 似乎不支持细粒度的访问权限。
提前谢谢你。
【问题讨论】:
标签: .net api azure authentication identityserver4