我正在尝试让spring-oauth2与Ali Cloud的OAuth端点一起使用。我的application.yml中包含以下内容。
security:
oauth2:
client:
registration:
alicloud:
clientId: foo
clientSecret: bar
redirectUriTemplate: "{baseUrl}/login/oauth2/code/{registrationId}"
authorizationGrantType: authorization_code
scope:
- openid
- profile
provider:
alicloud:
authorizationUri: https://signin.aliyun.com/oauth2/v1/auth
tokenUri: https://oauth.aliyun.com/v1/token
jwkSetUri: https://oauth.aliyun.com/v1/keys
事情似乎已经到了需要将代码交换为access_token的地步。但是,DefaultAuthorizationCodeTokenResponseClient.getTokenResponse
似乎使用HTTP Basic身份验证打包了请求。这适用于Google,我想其余大多数大型提供商都可以使用。但是,阿里云的端点需要POST正文中的client_id和client_secret。似乎创建此请求的转换器是OAuth2AuthorizationCodeGrantRequestEntityConverter
。覆盖它似乎并不容易。
该如何克服?