Започвам с 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. Всеки, който има решение за това?