首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Azure AD删除注册应用程序的权限

问Azure AD删除注册应用程序的权限
EN

Stack Overflow用户
提问于 2018-05-17 14:47:42
回答 1查看 301关注 0票数 0

我正在使用Azure来保护我的服务以服务于呼叫。(每个服务都具有Azure AD中的应用程序标识)。

示例:Application A希望访问Application B。

我注意到,当使用客户端凭据流(有证书)从Application A请求访问时,会发出访问证书,而不需要我显式设置访问Application B的权限。

这在我看来很奇怪,因为返回的令牌将其受众设置为Application B,甚至还以为我没有显式地授予它访问权限。

如果我理解正确的话,所有注册的应用程序默认都可以相互访问?。

Azure AD中是否有一种方法可以显式地要求设置权限,以便应用程序相互访问?

下面是Application A所需权限的屏幕截图。如您所见,这里没有列出Application B。

​

​

在下面的屏幕截图中,我将TodoListService (又名应用程序B)分配给Application A所需的权限

​

​

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-05-17 16:00:51

我注意到,当使用客户端凭据流(带证书)从应用程序A请求访问时,颁发的访问证书不需要我显式设置访问应用程序B的权限。

是的,这可能有点令人惊讶,我也不知道为什么会这样。

您需要做的是在API上定义应用程序权限,然后在客户机上分配它。然后,您需要检查调用方是否在令牌中具有所需的应用程序权限。

我有一篇关于这个主题的文章:在Azure AD中定义应用程序提供的权限范围和角色。

要在API上定义应用程序权限,您必须在Azure AD中编辑其清单,并添加一个具有成员类型Application的app角色,如下所示:

代码语言:javascript
复制
{
  "appRoles": [
  {
    "allowedMemberTypes": [
      "Application"
    ],
    "displayName": "Read all todo items",
    "id": "f8d39977-e31e-460b-b92c-9bef51d14f98",
    "isEnabled": true,
    "description": "Allow the application to read all todo items as itself.",
    "value": "Todo.Read.All"
  }
  ]
}

你必须为身份生成一个GUID。在API上定义此权限后,转到客户端应用程序,并在所需权限中添加应用程序权限。然后,您应该按Grant权限来授予应用程序权限。

现在,当客户端获取具有客户端凭据的令牌时,令牌将包含:

代码语言:javascript
复制
{
  "roles": [
    "Todo.Read.All"
  ]
}

所以你得检查一下它是否存在。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50394388

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档