我是 Azure Active Directory 新手,想了解如何保护 Multi-Tenancy 客户端应用和 API。
我想理解的示例场景是,如果 API 有一个操作 getcompany
,则应允许客户端应用程序代表登录用户调用此操作,并分配一个 公司读取角色
.
但是,列出所有已注册公司的操作只应允许由我的 AAD 租户中具有相关角色的用户调用。
我如何应用此类限制?什么是防止其他人编写客户端并为他们的应用程序分配角色,然后访问我的 Api。
最佳答案
prevent someone else writing a client and assigning their app with roles
如果您将 azure ad 集成到您的应用程序中,您还需要将身份验证应用程序的信息(客户端 ID、客户端 key 等)设置到应用程序的配置中,这样即使其他人知道您的角色名称,他们仍然不知道能够创建自己的 azure 广告应用程序进行身份验证。
should only ever be allowed to be called by a user with relevant role
如您所知,我们通常使用访问 token 来保护 api,在 azure ad 中,我们通常做的是公开一个 api(具有委托(delegate)应用程序权限),然后生成具有此范围的访问 token ,在后端 api 中进行授权如果 token 包含该范围。
但在您的场景中,您还需要检查该用户是否有足够的权限来获取所有公司
,因此您认为您也需要验证用户角色。说实话,azure ad access token不包含用户角色的声明,只有 id token 包含用户角色。所以我建议你让所有允许的用户加入一个安全组。然后,当您解码 jwt 访问 token 时,您可以检查 groups
声明来检查用户是否有足够的权限。
关于azure - 使用 Azure AD 保护 Multi-Tenancy Web API,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70887024/