[SPRING] url에서 param을 통해 전송 된 client_id 및 client_secret
SPRINGurl에서 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.토큰 엔드 포인트 (oauth / token)는 보호되어 있습니다. TokenEndpoint :
토큰 엔드 포인트 (oauth / token)는 보호되어 있습니다. TokenEndpoint :
OAuth 2 개발자 가이드를 참조하십시오.
클라이언트는 기본 인증 구성표로 자체를 인증해야하므로 클라이언트는 요청에 Authorization 헤더를 추가해야합니다 (RFC 2617 참조).
첫 번째 요청에 승인 헤더가 없습니다.
두 번째 요청에는 "userinfo"하위 구성 요소가있는 URL이 포함되어 있습니다 (RFC 3986 참조).
from https://stackoverflow.com/questions/47662358/client-id-and-client-secret-sent-via-param-vs-in-url by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] 최대 절전 세션 트랜잭션을 열 수 없습니다. (0) | 2019.04.13 |
---|---|
[SPRING] spring-mvc : "a / b / {c}"형식으로 URI 템플릿을 매핑하는 방법은 무엇입니까? (0) | 2019.04.13 |
[SPRING] @StepScope (Spring 배치 내에서 param 전달시 예외 발생) (0) | 2019.04.13 |
[SPRING] Spring 4를 사용하여 MultipartFile 목록 업로드하기 restTemplate (Java Client & RestController) (0) | 2019.04.13 |
[SPRING] PropertyPlaceholderConfigurer는 DB 값을 찾고 속성 파일을 대체로 사용합니다. (0) | 2019.04.13 |