1

Я начинаю с Spring OAuth2. Пока все хорошо, я получил приложение с настройкой. Но у меня проблема, мой клиент не поддерживает HTTP Basic Authorization.Spring OAuth2 отключить HTTP Basic Auth для TokenEndpoint

Есть ли способ отключить HTTP Basic Auth для конечной точки/oauth/token? Я хотел бы отправить 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" 

ответ

10

я, наконец, понять это. Способ отключения 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" 

Но все еще остается в приложение/JSon вопрос ContentType остающийся. У кого-нибудь есть решение для этого?

+0

Я думаю, что проблема использования JSON в качестве входного формата заключается в том, что если вы его измените, ваш сервер больше не будет совместим с OAuth2, поскольку стандарт RFC говорит, что запрос ДОЛЖЕН быть отправлен в формате url-encoded: https: //tools.ietf.org/html/rfc6749#appendix-B – Mrdev

+0

Я не думаю, что RFC указывает, что в запросе должна быть только одна опция Content-Type. Предоставленное решение позволяет использовать приложения/json и url-кодированные как бок о бок. Конечно, должна быть опция включения/отключения JSON для каждого клиента. –

+0

Я не читал с большим вниманием, но части, которые я читал, казались довольно жесткими в запросах «x-www-form-urlencoded». См. Https://tools.ietf.org/html/rfc6749#section-4.3.2. – demaniak