복붙노트

[SPRING] url에서 param을 통해 전송 된 client_id 및 client_secret

SPRING

url에서 param을 통해 전송 된 client_id 및 client_secret

보호 된 엔드 포인트에 액세스하려고 할 때 Oauth2 서버 (Spring)에 문제가 있습니다.

Zuul 게이트웨이를 통해 토큰을 얻으려면 다음과 같이하십시오.

http://localhost:4444/auth/oauth/token?client_id=gateway&client_secret=1234&grant_type=password&username=user&password=password

(클라이언트와 사용자 위에있는 Asume은 올바르게 존재하고 Content-Type은 application / x-www-form-urlencoded입니다.)

이 호출은 작동하지 않지만 다음과 같이하면됩니다.

gateway:1234@localhost:4444/auth/oauth/token?grant_type=password&username=user&password=password

그런 다음 작동합니다.

이것은 정상적인 행동으로 간주됩니까? 내가 읽을 수있는 한, 이것이 효과가있다. 아이디와 비밀 같은 것이 내가 매개 변수로 전송할 때 처리되지 않지만 URL을 수정할 때 취해지고 모든 것이 작동합니다. 여분의 것을 구현해야합니까?

명확하게, Oauth2 서버는 client_id와 client_secret을 두 번째 url처럼 보내면 작동하지만 매개 변수 (첫 번째 url)로 보낼 경우에는 그렇지 않습니다.

여기에서 코드를 확인할 수 있습니다 (OAuth2-service) : https://github.com/otamega93/CloudBasedUserRegistration2/tree/master/OAuth2-service

구성은 주로 OAuth2Configuration, WebSecurityConfig 및 AuthServerApplication에 있습니다. 나는 우편 배달부와 시험하고있다. 이것은 Oauth2 서버에 직접 액세스 할 때도 발생합니다.

해결법

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

    1.토큰 엔드 포인트 (oauth / token)는 보호되어 있습니다. TokenEndpoint :

    토큰 엔드 포인트 (oauth / token)는 보호되어 있습니다. TokenEndpoint :

    OAuth 2 개발자 가이드를 참조하십시오.

    클라이언트는 기본 인증 구성표로 자체를 인증해야하므로 클라이언트는 요청에 Authorization 헤더를 추가해야합니다 (RFC 2617 참조).

    첫 번째 요청에 승인 헤더가 없습니다.

    두 번째 요청에는 "userinfo"하위 구성 요소가있는 URL이 포함되어 있습니다 (RFC 3986 참조).

  2. from https://stackoverflow.com/questions/47662358/client-id-and-client-secret-sent-via-param-vs-in-url by cc-by-sa and MIT license