Azure OAuth2代码流-访问令牌中没有组声明(也没有“hasgroups”)
我正在使用OAuth2代码流,并试图在我的访问令牌中获取用户的组。我读到的所有东西都说我应该看到一个团体声明或一个hasgroups声明,但我什么也看不到 我已更改我的客户端应用程序的应用程序注册清单中的以下字段:Azure OAuth2代码流-访问令牌中没有组声明(也没有“hasgroups”),azure,oauth-2.0,claims,Azure,Oauth 2.0,Claims,我正在使用OAuth2代码流,并试图在我的访问令牌中获取用户的组。我读到的所有东西都说我应该看到一个团体声明或一个hasgroups声明,但我什么也看不到 我已更改我的客户端应用程序的应用程序注册清单中的以下字段: "groupMembershipClaims": "SecurityGroup", "optionalClaims": { "idToken": [], "accessToken": [ { "n
"groupMembershipClaims": "SecurityGroup",
"optionalClaims": {
"idToken": [],
"accessToken": [
{
"name": "groups",
"source": null,
"essential": false,
"additionalProperties": [
"dns_domain_and_sam_account_name"
]
}
],
"saml2Token": []
},
下面是我的一个查询字符串示例,用于登录重定向url login.microsoftonline.com
client_id=<clientId>
&response_type=code
&redirect_uri=<redirectUri>
&response_mode=query
&scope=<appScope>%20offline_access
&state=67890
下面是一个查询字符串示例,用于使用authCode login.microsoftonline.com/{tenantId}/oauth2/v2.0/token请求令牌
client_id=<clientId>
&scope=<uriEncodedScopes>%20offline_access
&redirect_uri=<uriEncodedRedirectUri>
&code=<authCode>
&client_secret=<uriEncodedClientSecret>
&grant_type=authorization_code
一切都很好,但我不知道如何在我的令牌中获取组信息
更新
我在两个URL的作用域中都添加了%20openid,现在我得到了一个id_令牌,但在这两个令牌中都没有看到组或hasgroups
更新
我只是添加了相同的清单更改groupMembership,OptionalClaimes到我的API应用程序注册中,而不是我的客户端-公开范围的API,我看不到任何更改。访问令牌和Id令牌根本没有对组的任何引用。根据我的测试,它应该可以工作。您只需在API应用程序注册中配置groupMembershipClaims和optionalClaims,请参阅以下内容 你可以参考我下面的测试样本,我用一个工作帐户或个人帐户进行了尝试,都是工作帐户 请求代码的授权api://3e013fde-xxxxxxa422f3/User.Test 是我的API许可证:
https://login.microsoftonline.com/<tenant-id>/oauth2/v2.0/authorize?
client_id=xxxxxxxxxxxxxxx
&response_type=code
&redirect_uri=https://localhost
&response_mode=query
&scope=openid offline_access api://3e013fde-xxxxxxa422f3/User.Test
&state=12345
然后,访问令牌将不包括组,ID令牌具有组
如果我将其设置为您的,则访问令牌将具有组
但当我把它设置为
"groupMembershipClaims": "SecurityGroup",
"optionalClaims": {
"idToken": [],
"accessToken": [],
"saml2Token": []
}
访问令牌仍然具有组
从门户-令牌配置预览和此文档-配置组声明(适用于具有Azure Active Directory公共预览的应用程序)中,该功能应处于预览状态,可能是一个错误,我不确定
总之,我建议您使用两个新的应用程序来尝试。谢谢您的回答。我目前无法尝试,因为我需要我的管理员增加我们在这个测试帐户上的支出限额,但同时-你的Azure广告级别是多少?我使用的是默认的免费版本。我需要升级到广告的高级版本吗?我很好奇是否需要在我的客户端应用程序注册中配置用户和组以在那里添加我的组。@TimHardy我也使用AAD免费版本。我认为没有必要在SpeEnterprise应用程序->用户和组中添加您的组,只需确保属性->所需用户分配->否。测试我的解决方案的最佳方法是创建两个新应用程序,因为存在一个我无法复制的错误。我终于能够让我的Azure工作区重新联机。在重新创建api应用程序注册后,我开始在我的令牌中看到这些组。谢谢你的帮助。
"groupMembershipClaims": "SecurityGroup",
"optionalClaims": {
"idToken": [],
"accessToken": [
{
"name": "groups",
"source": null,
"essential": false,
"additionalProperties": [
"dns_domain_and_sam_account_name"
]
}
],
"saml2Token": []
}
"groupMembershipClaims": "SecurityGroup",
"optionalClaims": {
"idToken": [],
"accessToken": [],
"saml2Token": []
}