Azure active directory 在Azure AD中创建自定义角色时,";行动“;真的吗?
我正在考虑创建一个自定义Azure广告角色,作为Azure web app服务中[授权]的一部分使用。当您包含“操作”列表时,您是否也在该角色中创建权限Azure active directory 在Azure AD中创建自定义角色时,";行动“;真的吗?,azure-active-directory,Azure Active Directory,我正在考虑创建一个自定义Azure广告角色,作为Azure web app服务中[授权]的一部分使用。当您包含“操作”列表时,您是否也在该角色中创建权限 “动作”可以是空的吗?假设我只想测试控制器中的一个角色,然后从那里控制数据访问?在“操作”部分我真的需要什么吗?有两个非常不同的概念: Azure中的自定义角色(用于基于角色的Azure资源访问控制) Azure AD中的应用程序角色(用于使用Azure AD的应用程序中的授权) 根据您的问题,您需要仔细研究第二个问题,即应用程序角色。他们没有
“动作”可以是空的吗?假设我只想测试控制器中的一个角色,然后从那里控制数据访问?在“操作”部分我真的需要什么吗?有两个非常不同的概念:
{
"Name": "Virtual Machine Operator",
"Id": "88888888-8888-8888-8888-888888888888",
"IsCustom": true,
"Description": "Can monitor and restart virtual machines.",
"Actions": [
"Microsoft.Storage/*/read",
"Microsoft.Network/*/read",
"Microsoft.Compute/*/read",
"Microsoft.Compute/virtualMachines/start/action",
"Microsoft.Compute/virtualMachines/restart/action",
"Microsoft.Authorization/*/read",
"Microsoft.Resources/subscriptions/resourceGroups/read",
"Microsoft.Insights/alertRules/*",
"Microsoft.Insights/diagnosticSettings/*",
"Microsoft.Support/*"
],
"NotActions": [
],
"DataActions": [
],
"NotDataActions": [
],
"AssignableScopes": [
"/subscriptions/{subscriptionId1}",
"/subscriptions/{subscriptionId2}",
"/subscriptions/{subscriptionId3}"
]
}
Azure AD中的应用程序角色(这些角色没有“操作”列表,但用于应用程序中的授权逻辑)
Microsoft文档-
目的-这些角色在应用程序清单中为组织正在开发并在Azure Active Directory中注册的应用程序定义。这些角色非常特定于您的应用程序,可以在应用程序的代码中用于为经过身份验证的用户实现授权逻辑
使用“allowedMemberTypes”,您可以控制谁可以被分配这些角色(给用户、组甚至应用程序)
然后,您可以从Azure Portal或以编程方式分配角色。
一个简单的方法如下面的屏幕截图所示-
在尝试实现授权逻辑时,这些角色将作为角色“声明”提供。因此,您可以使用下面的代码检查角色
if (context.User.HasClaim(ClaimTypes.Role, "Admin")) { ... }
创建应用程序角色并将其用于授权的示例应用程序
示例
这是JSON,它将作为应用程序清单的一部分
"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"
}
]
好的,我正在努力解决这个问题。我看到,从广告的应用程序注册中,我可以选择一个应用程序(在我的例子中,它是一个WebAPI)并编辑清单。这应该控制用户可以访问应用程序的内容。我不太确定的是,是否定义了“用户”、“SurveyCreator”和“SurveyAdmin”。(跟我来,我是新手)。我假设“用户”是广告管理员在将用户输入广告时指定的股票用户类型。但是SurveyCreator和SurveyAdmin呢?这些定义在哪里?他们是团体还是角色?我还必须创建自定义角色吗?我知道了,你在应用程序注册刀片中添加了角色,并在企业应用程序bladeI中为用户分配了角色。我希望你能完成这一任务。您需要通过编辑json将角色添加到应用程序清单中。您可以添加您喜欢的任何角色,因为这仅适用于您的应用程序。如您所说,在企业应用程序刀片中将角色分配给用户。请遵循此处的实现部分—另外,看看这个示例应用程序,它不仅为应用程序创建了一些自定义角色,而且在进一步的代码中使用它们来做出授权决策。