我有这样的情况:我有一个App Service,我将其授权设置为允许匿名请求,将身份验证提供程序设置为Active Directory设置Azure AD应用程序。
在这个AD应用程序中,我在其清单中添加了一些像这样的角色:
"appRoles": [
{
"allowedMemberTypes": [
"User"
],
"displayName": "Approver",
"id": "8f29f99b-5c77-4fba-a310-4a5c0574e8ff",
"isEnabled": true,
"description": "Approvers can mark documents as approved",
"value": "approver"
},
使用我的AD App ID发布到URL https://login.windows.net/ / oauth2 / token我收到一个令牌,我期望在此令牌中找到该角色。它不像这样工作,我找不到原因。
我想要的是使用Azure和我的API生成令牌,设置[Authorize(Role =“approver”)]来过滤使用同一租户的不同客户端访问的控制器。
答案 0 :(得分:1)
如果您的方案是关于为用户/组分配应用程序角色。将用户分配给应用程序角色后(通过直接分配或通过分配给用户所属的组),Azure AD在用户登录应用程序时在令牌中包含角色声明。然后,应用程序可以使用.net等IsInRole(“reader”)或[Authorize(Roles =“reader”)]等构造来授权用户。你应该做:
"allowedMemberTypes": [
"User"
],
然后您不需要使用客户端凭据流。 here是一篇关于如何配置该文章的文章,另请参阅代码示例here。
如果您的方案是允许Web应用程序和充当客户端的Web API并访问其他资源API,则请求为其分配资源API的应用程序角色(使用客户端凭据流)。在Azure AD客户安装角色时,该角色将分配给客户端应用程序。您可以参考以下步骤来实现这一目标:
设置登录网址和应用ID网址。
在“配置”选项卡上,向下滚动到“其他应用程序的权限”部分。在此处,通过首先选择客户端应用程序请求应用程序角色的API,然后在“应用程序权限”下拉列表中选择所需的应用程序角色来添加新权限。在我的API应用程序(名称是testRole)中,我设置了以下角色:
然后我们可以获取令牌,让我的网络应用程序使用客户端凭据流访问“testRole”API:
发布https://login.microsoftonline.com/YourTenant/oauth2/token
内容类型:application / x-www-form-urlencoded
资源= HTTP%3A%2F%2Ftestbasic1.onmicrosoft.com%2Ftestrole&安培; CLIENT_ID =安培; client_secret =安培; grant_type = client_credentials
您可以使用here
中的Azure AD在云应用程序中阅读有关基于角色的访问控制的更多信息修改强>
在新门户中为其他应用程序设置权限:
1.单击左侧面板中的azure ad图标,选择Web应用程序,单击所需权限,单击添加,选择API,然后搜索要访问的API: