oauth2.0 如何在/userinfo也需要openid时获取自定义范围令牌

hkmswyz6  于 2023-10-15  发布在  其他
关注(0)|答案(1)|浏览(123)

我正在使用Spring Cloud API Gateway和OAuth2,在尝试获取自定义范围的访问令牌时遇到了问题。我的OAuth2提供商是Microsoft。
我需要访问令牌来对我的自定义API进行身份验证,这需要自定义范围。然而,我注意到/userinfo端点也需要被调用,并且它需要一个openid作用域。
如果我同时包含openid和自定义作用域,请求将被拒绝。如果我排除了openid,对/userinfo的调用会因为“作用域不足”而失败。
那么,如何在不影响/userinfo端点调用的情况下获得自定义范围API的访问令牌呢?

# Spring Cloud API Gateway OAuth2 client settings
spring:
  security:
    oauth2:
      client:
        registration:
          my-client:
            provider: microsoft
            client-id: xxx
            client-secret: xxx
            authorization-grant-type: authorization_code
            redirect-uri: http://localhost:8080/login/oauth2/code/your-client
            scope: custom-scope # Can't add 'openid' here without the request failing
6yoyoihd

6yoyoihd1#

此行为特定于Azure AD。最好的办法是让客户端只使用自定义作用域。然后通过API获取用户信息,该API使用On Behalf Of Flow将访问令牌交换为有权调用Graph API的令牌。有关更多信息,请参阅我的这些资源:

相关问题