Как отправить 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.



Есть ли способ достичь этого ? способ настройки способа отправки идентификатора клиента и его секрета ?

Майкл

627   1  

1 ответ:

Существует метод setClientAuthenticationScheme в классе ClientCredentialsResourceDetails. Его значение по умолчанию - AuthenticationScheme.header, Вероятно, вам нужно установить его в AuthenticationScheme.form.

Comments

    Ничего не найдено.