[SPRING] OAuth2 클라이언트 자격증 명 흐름 이해하기
SPRINGOAuth2 클라이언트 자격증 명 흐름 이해하기
새 REST 서버와 기존 클라이언트 응용 프로그램 간의 클라이언트 자격 증명 흐름을 이해하고 구현하려고합니다. 이처럼 스프링 보안 OAuth2를 설정했습니다. 지금까지 내 이해에서 내 서버는 이제 다음 요청을 지원해야합니다.
$ curl -X -v -d 'client_id=the_client&client_secret=secret&grant_type=client_credentials' -X POST "http://localhost:9090/oauth/token"
그러나 나는 얻는다.
InsufficientAuthenticationException: There is no client authentication
교장이 여기에 null로 인한 (봄 보안 코드) :
@FrameworkEndpoint
@RequestMapping(value = "/oauth/token")
public class TokenEndpoint extends AbstractEndpoint {
@RequestMapping
public ResponseEntity<OAuth2AccessToken> getAccessToken(Principal principal,
@RequestParam("grant_type") String grantType, @RequestParam Map<String, String> parameters) {
if (!(principal instanceof Authentication)) {
throw new InsufficientAuthenticationException(
따라서 서버를 먼저 인증해야합니다. 그러나 그것은 내가하고 싶은 것이 아닙니다. 내 서버 중 두 대가 공유 암호를 사용하여 서로 이야기하기를 원합니다. OAuth 공급자 서버는 클라이언트 서버가 해당 토큰을 사용하여 서버의 모든 REST 리소스에 액세스 할 수 있도록 요청시 (신뢰할 수있는) 클라이언트 서버에 액세스 토큰을 제공해야합니다. 이것은 외부 액세스로부터 REST 자원을 보호해야합니다.
나중에 나는 선택된 자원을 제 3 자에게 제공하고 결국에는 서버 간 통신을위한 좀 더 세분화 된 보안을 구현하기를 원합니다. 하지만 지금은 외부 액세스로부터 REST 서버를 보호해야합니다.
전체 고객 자격 증명 플로우 또는 스프링 보안 응용 프로그램에 대한 오해가있을 수 있으므로 모든 설명이 크게 감사 할 것입니다.
해결법
-
==============================
1.인증 서 v에 클라이언트를 인증하지 않습니다.
인증 서 v에 클라이언트를 인증하지 않습니다.
다음과 같이해야합니다.
curl --user the_client:secret --data "grant_type=client_credentials" http://localhost:9090/oauth/token
이는 클라이언트를 권한 서버에 인증 한 후 grant_type 및 기타 매개 변수를 지정하는 것입니다. 그러면 oauth 클라이언트 세부 정보에 의해 결정된 범위의 'bearer'유형의 액세스 토큰이 반환됩니다. 토큰을 받으면 Authorization 헤더를 설정하여 보호 된 리소스에 액세스 할 수 있습니다.
curl -H "Authorization: Bearer <accessToken>" <resourceUrl>
from https://stackoverflow.com/questions/14140020/understanding-oauth2-client-credentials-flow by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] 스프링 응용 프로그램 컨텍스트 스키마의 오류 (0) | 2019.03.19 |
---|---|
[SPRING] Spring XML의 "classpath :"와 "classpath : /"의 차이점은 무엇입니까? (0) | 2019.03.19 |
[SPRING] Spring에서 Lifecycle 인터페이스는 어떻게 작동합니까? "최상위 싱글 톤 빈"이란 무엇입니까? (0) | 2019.03.19 |
[SPRING] Spring RestTemplate 사후 응답 (0) | 2019.03.19 |
[SPRING] BCryptPasswordEncoder는 동일한 입력에 대해 다른 암호를 생성합니다. (0) | 2019.03.19 |