Я пытаюсь настроить spring-oauth2 для работы с конечной точкой OAuth Ali Cloud. У меня в 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, и я представляю большинство остальных крупных провайдеров. Но для конечной точки Ali Cloud требуются client_id и client_secret в теле POST. Конвертер, который, кажется, создает этот запрос OAuth2AuthorizationCodeGrantRequestEntityConverter
. Кажется, это не так просто переопределить.
Что я могу сделать, чтобы преодолеть это?