Моя партия должна подключаться к веб-сервиса с использованием 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, подобное типу-гранту.
Есть ли способ достичь этого? способ настройки отправки идентификатора клиента и секретности клиента?
Майкл
Это выглядело хорошо, но resource.setAuthenticationScheme (AuthenticationScheme.form); ничего не изменило в запросе. Я проверяю, не пропущу что-то. –
Моя вина! resource.set ** Клиент ** AuthenticationScheme (AuthenticationScheme.form); работает! благодаря –