Я строю свой веб-сервис oauth2-protecet и клиент. Для webservice я использовал весеннюю безопасность, и used this as example. Для клиента я пытаюсь использовать библиотеку apache oltu. Вот мой фрагмент:OAuth2 oltu client
OAuthClientRequest request = OAuthClientRequest.tokenLocation
("http://localhost:8080/oauth/token")
.setGrantType(GrantType.CLIENT_CREDENTIALS)
.setClientId("clientapp")
.setClientSecret("123456")
.buildHeaderMessage();
OAuthAccessTokenResponse oAuthResponse = cli.accessToken(request);
System.out.println(oAuthResponse.getAccessToken());
Это не работает. Хотя это
curl -X POST -vu clientapp:123456 --data "grant_type=client_credentials&client_secret=123456&client_id=clientapp" http://localhost:8080/oauth/token
работает отлично. Вот завиток запрос:
POST /oauth/token HTTP/1.1
Authorization: Basic Y2xpZW50YXBwOjEyMzQ1Ng==
User-Agent: curl/7.35.0
Host: localhost:8080
Accept: */*
Content-Length: 70
Content-Type: application/x-www-form-urlencoded
grant_type=client_credentials&client_secret=123456&client_id=clientapp
, как вы можете видеть, я использовал обычную проверку подлинности с завитком и она работала (хотя и предложил тип аутентификации Bearer).
И вот Олт пакет:
POST /oauth/token HTTP/1.1
Content-Type: application/x-www-form-urlencoded
Authorization: Bearer client_credentials123456clientapp
User-Agent: Java/1.8.0_51
Host: localhost:8080
Accept: text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2
Connection: keep-alive
Content-Length: 4
null
Я и не знает, как предполагается разрешение на предъявитель работать, но этот пакет выглядит все неправильно.
Я также попытался использовать buildBodyMessage()
и buildQueryMessage()
вместо buildHeaderessage()
, как это было предложено в this post, но это не хорошо либо.
Не могли бы вы рассказать немного о том, почему это решение сработало для вас? – aribeiro