【问题标题】:Spring Boot OAuth2 invalid_user_info_responseSpring Boot OAuth2 invalid_user_info_response
【发布时间】:2022-11-03 06:21:02
【问题描述】:

我使用 Azure 作为身份提供者构建了一个 webMVC 应用程序,我收到以下错误:

[invalid_user_info_response] 尝试检索 UserInfo 资源时出错:“https://graph.microsoft.com/oidc/userinfo”的 GET 请求出现 I/O 错误:graph.microsoft.com

[nio-8080-exec-3] o.s.web.client.RestTemplate              : HTTP GET https://graph.microsoft.com/oidc/userinfo
[nio-8080-exec-3] o.s.web.client.RestTemplate              : Accept=[application/json, application/*+json]
[nio-8080-exec-3] .s.a.DefaultAuthenticationEventPublisher : No event was found for the exception org.springframework.security.oauth2.core.OAuth2AuthenticationException
[nio-8080-exec-3] o.s.s.web.DefaultRedirectStrategy        : Redirecting to /login?error

我错过了什么吗?

spring.security.oauth2.client.provider.azure.issuer-uri=https://login.microsoftonline.com/XXXX/v2.0
spring.security.oauth2.client.registration.myapp.client-name=XXXX
spring.security.oauth2.client.registration.myapp.client-id=XXXX
spring.security.oauth2.client.registration.myapp.client-secret=XXXX
spring.security.oauth2.client.registration.myapp.provider=azure
spring.security.oauth2.client.registration.myapp.redirect-uri=http://localhost:8080/login/oauth2/code/
spring.security.oauth2.client.registration.myapp.scope=openid, profile, User.Read
spring.security.oauth2.client.registration.myapp.authorization-grant-type=authorization_code

【问题讨论】:

    标签: spring-boot azure spring-security oauth-2.0 azure-active-directory


    【解决方案1】:

    我试图通过 Postman 在我的环境中重现相同的结果,并得到以下结果:

    我创建了一个天青广告应用程序并授予如下权限:

    要得到代码,我使用了以下授权请求:

    https://login.microsoftonline.com/tenantID/oauth2/v2.0/authorize?
    client_id=client_id
    &response_type=code
    &redirect_uri=redirect_uri
    &response_mode=query
    &scope=openid profile user.read
    &state=12345
    

    当我在浏览器中运行上述请求时,我得到了同意屏幕如下所示:

    接受上述同意后,我得到了代码在地址栏中,如下所示:

    要生成访问令牌,我在下面使用参数并得到这样的令牌:

    POST https://login.microsoftonline.com/TenantID/oauth2/v2.0/token
    
    grant_type:authorization_code
    client_id:client_id
    client_secret:client_secret
    scope:openid profile user.read
    code:code
    redirect_uri: redirect_uri
    

    当我使用上面的令牌得到用户信息数据,我成功得到了如下响应:

    GET https://graph.microsoft.com/oidc/userinfo
    

    回复:

    在您的情况下,请确保包括以下内容parameters在您的代码中,如下所示:

    spring.security.oauth2.client.registration.azure.client-id: xxx
    spring.security.oauth2.client.registration.azure.client-secret: xxx
    spring.security.oauth2.client.registration.azure.client-name: App Name
    spring.security.oauth2.client.registration.azure.client-authentication-method: basic
    spring.security.oauth2.client.registration.azure.provider: azure
    spring.security.oauth2.client.registration.azure.scope: openid profile user.read
    spring.security.oauth2.client.registration.azure.redirect-uri: http://localhost:8080/login/oauth2/code/azure
    spring.security.oauth2.client.registration.azure.authorization-grant-type: authorization_code
    
    spring.security.oauth2.client.provider.azure.issuer-uri=https://login.microsoftonline.com/<tenant id>/v2.0
    spring.security.oauth2.client.provider.azure.authorization-uri: https://login.microsoftonline.com/<tenant id>/oauth2/v2.0/authorize
    spring.security.oauth2.client.provider.azure.user-info-uri: https://graph.microsoft.com/oidc/userinfo 
    spring.security.oauth2.client.provider.azure.token-uri: https://login.microsoftonline.com/<tenant id>/oauth2/v2.0/token
    spring.security.oauth2.client.provider.azure.jwk-set-uri: https://login.microsoftonline.com/<tenant id>/v2.0/keys
    spring.security.oauth2.client.provider.azure.user-name-attribute: name
    

    想了解更多详情,请参考以下链接:

    Spring security using OAuth2 with Microsoft - AzureAD

    【讨论】:

    • 谢谢你的回复......我做了同样的步骤,我也能够获得令牌,但问题是 graph.microsoft.com 无法访问
    【解决方案2】:

    由于某种原因,在我的机器上配置的代理服务器无法解决 dns graph.microsoft.com 并且我收到消息“invalid_user_info_response”。为了修复它,您需要确保您的计算机能够访问 graph.microsoft.com

    【讨论】:

      猜你喜欢
      • 2017-02-12
      • 2017-09-11
      • 2018-08-13
      • 2020-10-25
      • 1970-01-01
      • 1970-01-01
      • 2019-02-26
      • 2020-06-19
      • 2017-05-13
      相关资源
      最近更新 更多