【发布时间】:2021-12-17 01:28:00
【问题描述】:
我已将 angular 应用程序 和 Asp.Net 核心 Web API 注册到 Azure Active Directory。我已将 应用角色 添加到 Angular 的注册中。我还将角色分配给了一位用户。
当我登录用户时,我在访问令牌中看不到角色属性。我看到的都是"scp": "Directory.Read.All openid profile User.Read email",。
角色属性出现在 id 标记中。像这样:
"roles": [
"can_read_own_application"
],
鉴于 access_token 是 API 所期望的,为什么这个角色出现在 id_token 而不是 access_token 中。
顺便说一下,关于这个主题的文档数不胜数。我刚刚看了这个由微软员工制作的video。我找不到它说明应用角色应该添加到客户端应用程序还是 API 应用程序的位置。也许我这就是为什么角色没有出现在访问令牌中的原因。但是,添加到 API 注册中的应用角色甚至没有出现在令牌中。
感谢您的帮助。
编辑
"knownClientApplications": ["351d2a1d-fb5f-4527-b614-edb6d7277043" ]
- 我为客户端更新了 API 的权限
- 我更新了我的 Angular 代码
现在当我登录时,找不到上述范围。访问令牌具有以下值:
{
"app_displayname": "MyApplication-Client-Local",
//..
"scp": "openid profile User.Read email",
}
我什至不记得曾询问过openid 和email。我提到的范围是User.Read和access_as_user。
【问题讨论】:
-
你将graph api
user.read和你的自定义apiapi"//xxx/access_as_user设置在一起,这是不允许的。您只能设置一种 api 权限一次。您可以尝试将api://xxxx/access_as_user放在user.read之前,然后您会发现scp 包含您自定义的api 权限但没有graph api 权限。 -
@TinyWang,我知道我并没有真正理解整个概念。谢谢你的耐心。我还有更多要学的东西,但至少我现在可以建立一些具体的东西。 +1 为您提供帮助
-
很好。感谢您的回复和投票:)