我有一个使用Azure AD进行身份验证的功能最差的.NET Core 3 Web应用程序,但我试图弄清楚如何在自己的SQL数据库中使用自己的自定义角色进行授权。
最终,我想验证用户,然后从数据库中获取他们的关联角色,并从那里创建策略。我不害怕进行研究,但是我的搜索没有找到任何看起来正确的东西。谁能指出我正确的方向?
AFAIK最适合您需求的Azure AD功能将是“应用程序角色”。
您可以在此处阅读有关Microsoft文档的更多详细信息-应用程序角色
这是一个相关的代码示例-使用应用程序角色和角色声明向ASP.NET Core Web应用程序添加授权
简而言之,您将能够定义特定于应用程序的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应用程序时,您将获得角色作为具有传入访问令牌的声明的集合。
这是另一个很好的文档,其中通过示例说明了基于角色的授权和基于资源的授权,并使用了授权策略。
如果这一切都不适合您的应用程序,则您始终可以实施一些自定义,并将角色信息以及分配存储在应用程序数据库中。
在这种情况下,Azure AD在定义或分配角色方面无济于事。您将需要以自定义方式维护用户及其角色之间的映射。如果可以的话,可以使用RoleManager类。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句