2

Моя партия должна подключаться к веб-сервиса с использованием oauth2 с субсидия типа Client CredentialКак отправить ClientId и ClientSecret в POST, а не в заголовке с ClientCredentialsAccessTokenProvider

Вот код:

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 находится в посте значения, но ClientId и клиент секрет помещаются в заголовке с классическим базовой аутентификацией заголовком:

Authorization: Basic bXktY2xpZW50LWlkIDpteS1jbGllbnQtc2VjcmV0 

если я декодировать строку bXktY2xpZW50LWlkIDpteS1jbGllbnQtc2VjcmV0

decode64(bXktY2xpZW50LWlkIDpteS1jbGllbnQtc2VjcmV0) -> my-client-id:my-client-secret 

который обычно хорошо. Но веб-сервис, который мы должны использовать, не поддерживает этого, и мы должны поместить идентификатор клиента и клиентский секрет в значение post, подобное типу-гранту.

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

Майкл

ответ

5

есть метод setClientAuthenticationSchemeClientCredentialsResourceDetails в классе. Его значение по умолчанию: AuthenticationScheme.header, вам, вероятно, необходимо установить его на AuthenticationScheme.form.

+0

Это выглядело хорошо, но resource.setAuthenticationScheme (AuthenticationScheme.form); ничего не изменило в запросе. Я проверяю, не пропущу что-то. –

+1

Моя вина! resource.set ** Клиент ** AuthenticationScheme (AuthenticationScheme.form); работает! благодаря –

 Смежные вопросы

  • Нет связанных вопросов^_^