복붙노트

[SPRING] 봄 OAuth2 TokenEndpoint에 대한 HTTP 기본 인증 사용 안 함

SPRING

봄 OAuth2 TokenEndpoint에 대한 HTTP 기본 인증 사용 안 함

나는 봄 OAuth2로 시작하고있다. 지금까지 그렇게 좋았습니다. 구성으로 내 앱을 보안했습니다. 하지만 문제가 있습니다. 클라이언트가 HTTP 기본 인증을 지원하지 않습니다.

/ oauth / token 엔드 포인트에 대해 HTTP Basic Auth를 비활성화하는 방법이 있습니까? JSON 본문이나 요청 헤더에 client_id와 client_secret을 보내고 싶습니다.

내가 일하고 싶은 곱슬 곱슬한 예 :

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"

해결법

  1. ==============================

    1.나는 그것을 마침내 이해한다. HTTP Basich Auth를 비활성화하는 방법은 클라이언트에 대해 폼 인증을 사용하는 것입니다. 해당 행을 구성에 추가하기 만하면됩니다.

    나는 그것을 마침내 이해한다. 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 문제가 여전히 남아 있습니다. 누구든지 이것에 대한 해결책이 있습니까?

  2. from https://stackoverflow.com/questions/38166613/spring-oauth2-disable-http-basic-auth-for-tokenendpoint by cc-by-sa and MIT license