当前位置: 首页 > 知识库问答 >
问题:

如何使用Spring Boot启动oAuth2客户端在从Azure Active Directory (AAD)返回的oauth 2用户中包含更多属性

古扬
2023-03-14

我正在使用spring-boot-starter-oauth2-client、spring-cloud azure starter active directory(spring-cloud azure dependencies 4.0.0)将针对azure active directory的oauth2身份验证添加到一个简单的spring boot应用程序中。一切正常。

我注意到我从Spring Security authentication获得的OAuth2User主体并不包含所有在AAD中可见的身份属性。是否有办法请求在响应中包含更多信息(例如,名字和姓氏的单独属性)(不单独调用)?

https://docs.microsoft.com/en-us/azure/developer/java/spring-framework/spring-boot-starter-for-azure-active-directory-developer-guide 看起来很有前途,但确实帮助了我。

共有1个答案

公西俊能
2023-03-14

可以通过在令牌配置中选择可选声明来尝试,您可以在其中选择要在令牌中反映的必需令牌。

    < li >根据文档,可选声明given_name和family_name需要令牌请求中的< code>profile scope。
    < li >请选中向Azure AD apps提供可选声明- Microsoft身份平台| Microsoft文档

您可以在manifest.json文件中更新可选声明given_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# - 如何为 AzureAD 注册的应用程序动态添加“可选声明”?- 堆栈溢出

 类似资料:
  • 我很难找到使用Spring实现OAuth2客户机的示例。 我使用Spring实现了OAuth2授权和资源服务器。我想从授权服务器获取访问令牌。我需要一个示例,如何从我的OAuth2服务器只使用客户端凭据获取访问令牌。不涉及用户,只是我的客户端应用程序使用客户端凭据获取访问令牌,然后使用它访问客户端资源。 我只找到了使用Java库示例,但我假设Spring的OAuth2框架中支持Java库。 如果可

  • 但是当我运行我的应用程序“http://localhost/client-sample/product/1”时,它会显示“http://localhost/client-sample/spring_security_login”。但是我希望用户应该重定向到oaut2服务器页面。

  • 我有一个安全的微服务正在调用另一个安全的微服务。这两个服务在KeyCloak中都有服务帐户。我如何配置第一个服务在调用第二个服务时自动从keycloak获得访问令牌?这是一个简单的服务到服务通信。Quarkus Rest客户机是否有API来执行此操作?如果没有,我如何使用Vert.x rest客户端来实现这一点?

  • 我正试图了解OAuth2和SpringSecurityOAuth,尤其是OAuth提供者服务。我正在尝试实现以下内容: OAuth提供商 资源服务器(应使用OAuth提供程序(1)保护的RESTful Web服务) Web客户端(使用Spring Security性保护的Web客户端应用程序,但应使用OAuth提供程序(1)对用户进行身份验证 本机移动客户端(Android和iOS)也应该使用OA

  • 顺便说一句,这些微服务只会通过中间件层互相交谈,我的意思是不需要用户凭据来允许授权(用户登录过程如Facebook)。 我在Internet上寻找了一些示例,展示了如何创建一个授权和资源服务器来管理这种通信。然而,我只是找到了一些例子,解释了如何使用用户凭据(三条腿)来实现它。 有没有人有在Spring Boot和Oauth2中如何做的样例?如果有可能提供更多关于所用范围的详细信息,令牌交换将不胜

  • 我正在使用Spring构建Web应用程序。我有多个Spring客户端应用程序和一个OAuth2授权和资源服务器。最终用户首先在客户端应用内进行身份验证,然后客户端应用从资源服务器请求一些资源(从授权服务器获得访问令牌后),处理数据并将其返回给用户。用户也可以更改资源服务器上的数据,但只能通过客户端应用。对于仅使用客户端凭证的资源获取,在这种情况下资源所有者是可信客户端。 在资源服务器上,仅存储客户