2016-09-07 7 views
1

JWT OAuth2 토큰은 Spring 인증 서버에서 프리 페치되고 Redis Storage에 저장됩니다.프리 패치 JWT 토큰이있는 OAuth2RestTemplate

OAuth2RestTemplate에 액세스 토큰을 요청하지 않고 요청에 JWT 토큰을 사용하고 싶습니다.

OAuth2RestTemplate으로 처리 할 수 ​​있습니까? 보통 RestTemplate을 사용해야합니까? spring-security-oauth에 대한

+0

이 질문에 세부 정보를 추가하십시오. JWT는 인증 헤더가 'Authorization : Bearer '형식을 갖거나 다른 인증 방식의 일부로서 액세스 토큰에 대해 검사 될 JWT임을 나타내는 OWuth2 토큰을 상징적으로 나타내는가? 또는 ...? – n0741337

+0

JWT는 인증 헤더에 OAuth2 토큰입니다. –

답변

2

문서는 기본적으로, 여기에 두 개의 섹션 유용 JWT 토큰 및 액세스 보호 자원 :

JWT 토큰

사용하려면 JWT이 토큰은 당신이 당신의 인증 서버에 JwtTokenStore이 필요합니다. 또한 자원 서버는 토큰 을 디코드 할 수 있어야하므로 JwtTokenStore가 JwtAccessTokenConverter에 대한 종속성이 이고 권한 서버 과 자원 서버 모두에서 동일한 구현이 필요합니다. 토큰은 기본적으로 서명되고 리소스 서버는 서명을 확인할 수 있어야하므로 에는 인증 서버 (공유 암호 또는 대칭 키)와 동일한 대칭 (서명) 키가 필요하거나 (공개 키 또는 비대칭 키)의 개인 키 (서명 키)와 일치하는 공개 키 (검증 자 키)이 필요합니다. 공개 키 (사용 가능한 경우)는 /oauth/token_key 엔드 포인트에서 권한 서버에 의해 공개됩니다.이 엔드 포인트는 기본적으로 액세스 규칙 "denyAll()"으로 보호되어 있습니다. 표준 SpEL 표현식을 AuthorizationServerSecurityConfigurer에 삽입하여 열 수 있습니다 (예 : "permitAll()"이 공개 키이므로 "AcceptAll()"이 적합 할 수 있음).

당신이 당신의 클래스 경로에 "봄 보안 JWT"을 필요로하는 JwtTokenStore을 사용하려면 (당신은 봄 의 OAuth 같은 GitHub의 저장소에 있지만 다른 릴리스주기에 그것을 찾을 수 있습니다).

액세스 보호 자원은 자원에 대한 모든 구성을 제공하면

, 당신은 지금 그 리소스에 액세스 할 수 있습니다. 이들 리소스에 액세스하기위한 권장 방법은 Spring 3에서 소개 된 RestTemplate을 사용하는 것입니다. Spring Security 용 OAuth 은 의 인스턴스에만OAuth2ProtectedResourceDetails를 제공하면 RestTemplate 확장을 제공합니다.

이것은 기본적으로) (각에서 토큰 서비스가 JwtTokenStore로 설정을해야하는 인증 서버와 리소스 서버 모두에서 같은 스프링 보안 JWT JwtAccessTokenConverter 클래스를 사용하고 있습니다 나에게 의미 . 그들이 언급하고있는 RestTemplate 클래스의 확장은 spring-security-oauth2의 OAuth2RestTemplate입니다. 동등한 토큰 인식기에서 제공되는 JWT 지능형 기능을 리소스 서버에서 사용할 수 있습니다.

스프링 보안 oauth2 코드는 JWT 토큰을 처리하도록 이미 설정되어 있으므로 몇 가지 주요 부분을 제공하고 프레임 워크가 토큰을 검사하고 각 프레임에 보안을 적용하는 데 많은 시간을 할애해야합니다 보호 된 자원.baeldung spring-security-oauth-jwt example 여기 :

이 일어날 것으로

는, 누군가의는 내용이수록되어있는이의 좋은 예를 게시 github project of the same이 하나 더 정의 JWT (주장/페이로드)를 제공 할 수있는 방법을 포함.