/ / Spring OAuth2 забранява HTTP Basic Auth за TokenEndpoint - пролет, пролет-сигурност, oauth, spring-security-oauth2, spring-oauth2

Пролет OAuth2 деактивиране на HTTP Basic Auth за TokenEndpoint - пролет, пролет-сигурност, oauth, spring-security-oauth2, spring-oauth2

Започвам с Spring OAuth2. Досега е добре, че съм осигурил приложението си с конфигурацията. Но имам проблем, клиентът ми не поддържа основно HTTP разрешение.

Има ли начин как да изключите HTTP Basic Auth за / oauth / маркер крайната точка? Бих искал да изпратя client_id и client_secret в тялото на JSON или в заглавките на заявките.

бих искал да работя:

curl -X POST -H "Content-Type: application/json" -d "{
"username": "user",
"password": "pass",
"grant_type": "password",
"client_id": "test-client-id",
"client_secret": "test-client-secret"
}" "http://localhost:9999/api/oauth/token"

ИЛИ

curl -X POST -H "Content-Type: application/json" -H "X-Client-ID: test-client-id" -H "X-Client-Secret: test-client-secret" -d "{
"username": "user",
"password": "pass",
"grant_type": "password"
}" "http://localhost:9999/api/oauth/token"

Отговори:

12 за отговор № 1

Най-накрая разбрах. Начинът, по който да се деактивира HTTP Basich Auth е да се даде възможност за удостоверяване на форма за клиенти. Просто добавете тези линии към конфигурацията си.

@Configuration
@EnableAuthorizationServer
protected static class OAuth2Config extends AuthorizationServerConfigurerAdapter {
@Override
public void configure(AuthorizationServerSecurityConfigurer oauthServer) throws Exception {
oauthServer.allowFormAuthenticationForClients();
}
}

Сега ще можете да изпратите успешно заявка до TokenEndpoint по този начин:

curl -X POST -H "Content-Type: application/x-www-form-urlencoded" -d "username=user_username&password=user_password&grant_type=password&client_id=your_trusted_client_id&client_secret=your_trusted_client_secret" "http://localhost:8080/oauth/token"

Но все още остава проблемът с приложението ContentType / json. Всеки, който има решение за това?