azure - 使用 Azure AD 保护 Multi-Tenancy Web API

标签 azure api azure-active-directory

我是 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/

相关文章:

azure - 如何通过 VSTS 将 Azure WebJob 和应用程序部署到同一应用程序服务?

.htaccess - URL重写Azure PHP?

php - linkedin api 中的 Oauth::timestamp 拒绝错误

c# - 注销后重定向在 Asp.net Core 2 中不起作用

azure - OAuth 2.0 SAML 承载断言流程

azure - 通过 RDP 连接到 Azure VM : An internal error has occurred

azure - 从 Github 部署 Function App .csproj

ios - 如何解决在 swift 中使用 Alamofire 从 API 中提取数据时的无效 json 问题?

c# - TFS Git Commit 网页 API 调用获取相关 WorkItems

azure - 从浏览器应用程序联系我的 ASP.NET Core 3.1 API 时,无法在访问 token 中看到角色声明