c# - 基于 asp.net mvc 和 azure Active Directory 安全组的授权

标签 c# asp.net azure azure-active-directory

我正在寻找有关 ASP.NET MVC 应用程序的帮助。它对单租户 Azure Active Directory 用户进行身份验证,并可以使用 Active Directory 安全组对用户进行授权。即,如果用户是该安全组的一部分,则仅允许访问网站,否则访问被拒绝。

Active Directory 身份验证可以由 Visual Studio 本身使用向导完成,但不确定如何通过 AAD 安全组执行授权。

附注我是 ASP.NET 安全新手

最佳答案

当用户登录应用程序时,只要您适当修改应用程序的 list (请参阅下面的示例应用程序链接了解步骤),来自 Azure AD 的传入 token 将包含组声明。然后,您的应用程序代码可以读取这些声明并根据它们做出授权决策。

这是一个基于组声明进行授权的示例应用程序 -

Authorization in a web app using Azure AD groups & group claims

Group claims

enter image description here

实现授权逻辑时要考虑的其他信息

  1. 您特别询问了组,但您还应该考虑使用应用程序角色,它可以帮助您实现基于角色的授权逻辑。查看 Microsoft 文档链接 Application Roles 。这是另一个类似问题的链接,其中我提供了有关应用程序角色和组的更多详细信息以及两者的示例代码的链接。 Azure Active Directory Integration with Custom RBAC

    一旦您了解了应用程序角色和组的用法/目的,您完全可以决定将授权逻辑基于登录用户的角色和组信息的组合,而不仅仅是一个。

  2. 如果用户属于多个组(据我所知 6 个或更多),Azure AD token 不会直接作为 token 的一部分跨“组”发送,而是发送一个超额指示器,然后您可以在单独的调用中查询组。在这里查看 token 相关文档 - Claims in id_tokens

enter image description here

关于c# - 基于 asp.net mvc 和 azure Active Directory 安全组的授权,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52469913/

相关文章:

c# - Resharper 6.1 VS 2010 - 无法编辑只读文件。 (在内存中)

c# - 为什么 C# 预先绑定(bind)局部变量?

c# - 删除具有子目录(非空)的目录

php - Azure 函数应用程序 - PHP $_GET/$_POST/$_REQUEST

C# - 如何获取当前光标状态(如果当前是箭头、手、等待等)

c# - 如何在 .aspx Web 表单中的文本框中显示 python 程序的输出?

asp.net - 当值不为空时在 ASP.NET MVC View 中输出值的简洁方法

c# - 防止 ASP.NET Web 应用程序上的 SQL 注入(inject)

Fedora-33 上的 git(1) CLI 在创建 SSH key 对并将其添加到 Azure DevOps(或 GitHub)后请求密码 -(步骤如下)

azure - 如何在不授予整个订阅所有权的情况下部署 ARM 模板?