.NET Core 3 Azure AD身份验证的自定义角色

时间:2019-10-17 14:51:34

标签: .net-core azure-active-directory asp.net-identity

我有一个使用Azure AD进行身份验证的功能最低的.NET Core 3 Web应用程序,但是我试图弄清楚如何在自己的SQL数据库中使用自己的自定义角色进行授权。

最终,我想验证用户,然后从我的数据库中获取他们的关联角色并从那里创建策略。我不害怕进行研究,但是我的搜索没有找到任何看起来正确的东西。谁能指出我正确的方向?

1 个答案:

答案 0 :(得分:2)

对于您的要求而言,最有帮助的Azure FA功能就是FAFAIK。

您可以在此处查看有关Microsoft文档的更多详细信息-Application Roles

这是一个相关的代码示例-Add authorization using app roles & roles claims to an ASP.NET Core web app

简而言之,您将能够定义特定于应用程序的Azure AD清单的角色。稍后,您可以从Azure门户将这些角色分配给用户,或使用Microsoft Graph API。

"appRoles": [
  {
    "allowedMemberTypes": [
      "User"
    ],
    "description": "Creators can create Surveys",
    "displayName": "SurveyCreator",
    "id": "1b4f816e-5eaf-48b9-8613-7923830595ad",
    "isEnabled": true,
    "value": "SurveyCreator"
  },
  {
    "allowedMemberTypes": [
      "User"
    ],
    "description": "Administrators can manage the Surveys in their tenant",
    "displayName": "SurveyAdmin",
    "id": "c20e145e-5459-4a6c-a074-b942bbd4cfe1",
    "isEnabled": true,
    "value": "SurveyAdmin"
  }
],

请注意,角色定义本身以及有关已为哪些用户分配了哪些角色的信息都将出现在Azure AD中(而不是您在问题中提到的SQL数据库)。

现在,在登录Web应用程序时,您将获得角色作为具有传入访问令牌的声明的集合。

这是另一个很好的文档,其中用示例解释了Role based and Resource based authorization并使用了授权策略。


如果这一切都不适合您的应用程序,则可以始终实施一些自定义并将角色信息以及分配存储在应用程序数据库中。

在这种情况下,Azure AD在定义或分配角色方面无济于事。您将需要以自定义方式维护用户及其角色之间的映射。如果可以的话,您可以使用RoleManager类。

相关问题