Как отправить ClientId и ClientSecret в записи вместо заголовка с ClientCredentialsAccessTokenProvider
Мой пакет должен подключиться к веб-службе с помощью OAuth2 с помощью учетных данных клиента типа grant
Вот код:
ClientCredentialsResourceDetails resource = new ClientCredentialsResourceDetails();
resource.setAccessTokenUri(accessTokenUri);
resource.setClientId(clientId);
resource.setClientSecret(clientSecret);
ClientCredentialsAccessTokenProvider provider = new ClientCredentialsAccessTokenProvider();
OAuth2AccessToken accessToken = provider.obtainAccessToken(resource, new DefaultAccessTokenRequest());
Когда этот код выполняется, он делает запрос, где grant_type находится в значении post, но clientId и секрет клиента помещаются в заголовок с классическим базовым заголовком auth:
Authorization: Basic bXktY2xpZW50LWlkIDpteS1jbGllbnQtc2VjcmV0
Если я декодирую строку bXktY2xpZW50LWlkIDpteS1jbGllbnQtc2vjcmv0
decode64(bXktY2xpZW50LWlkIDpteS1jbGllbnQtc2VjcmV0) -> my-client-id:my-client-secret
Что обычно нормально. Но веб-сервис, который мы должны использовать, не делает этого. поддержите это, и мы должны поместить идентификатор клиента и секрет клиента в значение post, подобное типу grant.
Есть ли способ достичь этого ? способ настройки способа отправки идентификатора клиента и его секрета ?
Майкл
1 ответ:
Существует метод
setClientAuthenticationSchemeв классеClientCredentialsResourceDetails. Его значение по умолчанию -AuthenticationScheme.header, Вероятно, вам нужно установить его вAuthenticationScheme.form.
Comments