【发布时间】:2020-01-28 11:17:47
【问题描述】:
我在 Azure AD 门户中创建了两个目录。在一个目录中,我注册了客户端应用程序并授予了委派权限
- User.Read
- Directory.AccessAsUser.All
- Directory.Read.All
我还为任何 Azure AD 目录设置了多租户以使用此应用程序。
登录成功后,我调用API(https://graph.microsoft.com/v1.0/me/memberOf)获取用户的群组信息。这仅适用于注册应用程序的目录中的用户。我确实获得了应用注册目录中用户的所有详细信息,例如 displayName 等。
当我通过属于另一个租户(目录)的用户登录时,登录成功,但我没有在 API 响应中获得完整的组数据(包括在下面)。我得到了正确的对象ID(组),但没有其他细节。
这似乎是我无法弄清楚的权限相关问题。任何人请建议。
{
"@odata.context": "https://graph.microsoft.com/v1.0/$metadata#directoryObjects",
"value": [
{
"@odata.type": "#microsoft.graph.group",
"id": "8bcd8779-8a74-4db7-83f0-8a5c5d076540",
"deletedDateTime": null,
"classification": null,
"createdDateTime": null,
"creationOptions": [],
"description": null,
"displayName": null,
"groupTypes": [],
"isAssignableToRole": null,
"mail": null,
"mailEnabled": null,
"mailNickname": null,
"onPremisesDomainName": null,
"onPremisesLastSyncDateTime": null,
"onPremisesNetBiosName": null,
"onPremisesSamAccountName": null,
"onPremisesSecurityIdentifier": null,
"onPremisesSyncEnabled": null,
"preferredDataLocation": null,
"proxyAddresses": [],
"renewedDateTime": null,
"resourceBehaviorOptions": [],
"resourceProvisioningOptions": [],
"securityEnabled": null,
"securityIdentifier": null,
"visibility": null,
"onPremisesProvisioningErrors": []
}
]
}
我使用带有这些配置属性(id、秘密屏蔽)的 spring security oauth2 实现
azure:
activedirectory:
tenant-id: 66aeb78f-7a26-46c9-99ab-460c6309b21e
active-directory-groups: Users
client:
client-id: 9618ac61-43ab-4c97-a9f1-769c91f48e08
client-secret: DxndD0cBezR-AnrGuCH@?b1NpwtFj?47
accessTokenUri: https://login.microsoftonline.com/common/oauth2/v2.0/token
userAuthorizationUri: https://login.microsoftonline.com/common/oauth2/v2.0/authorize?prompt=select_account
scope: user.read
resource:
userInfoUri: https://graph.microsoft.com/v1.0/me
【问题讨论】:
-
您能分享一下您是如何获取访问令牌以调用 Microsoft Graph 的吗?
-
先获取spring安全认证对象(SecurityContextHolder.getContext().getAuthentication()),然后从认证对象中获取token。我用配置属性更新了问题
-
现在您已将客户端密码放在云端,您可能想要更改它...
-
感谢您的提醒,但我已发布“更改的”客户端密码和 ID。
标签: azure-active-directory microsoft-graph-api