我正在使用 spring-boot-starter-oauth2-client、spring-cloud-azure-starter-active-directory (spring-cloud-azure-dependency 4.0.0) 将针对 Azure Active Directory 的 oauth2 身份验证添加到一个简单的 Spring 启动应用程序。一切正常。
我注意到我从 Spring Security 身份验证获得的 OAuth2User 主体不包含例如该身份在 AAD 中可见的所有属性。有没有办法请求更多信息(例如,名字和姓氏的单独属性)包含在响应中(无需单独调用)?
https://learn.microsoft.com/en-us/azure/developer/java/spring-framework/spring-boot-starter-for-azure-active-directory-developer-guide 看起来很有希望,但对我没有帮助。
最佳答案
您可以尝试通过在 token 配置中选择可选声明,您可以在其中选择要在 token 中反射(reflect)的所需 token 。
- 根据documentation可选声明给定名称和
family_name 在您的 token 请求中需要
个人资料范围
。
您可以在manifest.json 文件中更新可选声明given_name(名字)和family_name(姓氏):
"accessTokenAcceptedVersion": 2,
"optionalClaims": {
"idToken": [
{
"name": "given_name",
"source": "user",
"essential": false,
"additionalProperties": []
},
{
"name": "family_name",
"source": "user",
"essential": false,
"additionalProperties": []
}
],
"accessToken": [],
"saml2Token": []
}
如果是Microsoft graph api,您可以为accesstoken勾选相同的标记。
还可以尝试添加电子邮件和 openid 范围并为其授予 api 权限。
引用:c# - How to add 'Optional Claims' dynamically for AzureAD registered application? - Stack Overflow
关于spring-boot - 如何使用 Spring Boot Starter oAuth2 客户端在从 Azure Active Directory (AAD) 返回的 OAuth2User 中包含更多属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72137173/