我正在使用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
1条答案
按热度按时间6yoyoihd1#
此行为特定于Azure AD。最好的办法是让客户端只使用自定义作用域。然后通过API获取用户信息,该API使用
On Behalf Of Flow
将访问令牌交换为有权调用Graph API的令牌。有关更多信息,请参阅我的这些资源: