2017-12-10 36 views
0

토큰을 확인해야하는 수많은 마이크로 서비스가 있으므로이 끝점을 구현해야합니다.스프링 부트의 토큰 인트로피 포인트 엔드 포인트를 통해 토큰 검증을 구현하는 방법은 무엇입니까?

this link에 따르면이 기능을 사용하여 일부 사용자 세부 정보를 반환하고 토큰을 확인할 수 있습니다.

나는 봄 문서를 읽었지만 아무것도 찾을 수 없었다. 어떤 요청이 자동으로 인트로 스펙 션 엔드 포인트를 호출하도록 구현할 수 있습니까? 저는 사람들의 경험과 이에 대한 제안을 듣고 싶기 때문에 여기에서 묻고 있습니다.

답변

0

난 당신이 유용하게 사용할 수있는 그이 일부 블로그 포스트를 작성했습니다 :

내가 무엇을 할 것입니다 것은에서 토큰 검증을 외부화하는 방법입니다 같은데요 당신의 그런 다음 일반적인 사용자 정보/주장을 얻고이를 효율적으로 수행하십시오.

이 기술을 처음 사용하는 경우 Index Page과 처음으로 Code Sample을 살펴 보시기 바랍니다.

내가 블로그와 함께하려는 것은 공급 업체 및 라이브러리 선택과 관련하여 확실한 조언을 제공하고 개발자가 이해하는 방식으로 설명합니다.

불분명하거나 더 많은 정보를 원할 경우 언제든지 내 블로그에 질문/의견을 게시 할 수 있습니다.

감사합니다,

게리

+0

감사합니다.나는 프로세스에 대해 알고 있으며, 토폴로지 내성 엔드 포인트가 무엇인지에 대해 알고있다. 그러나 스프링이이를 관리하는 방법을 알아야했다. 나는 여기에 답변으로 게시 할 무언가를 발견했다. 어쨌든 고마워. – xbmono

0

좋아, 스프링 소스 코드와 문서를 파고 후, 나는 답을 발견하고 나는 단지의 경우 사람에 여기를 게시하고 같은 질문을 가지고 생각합니다.

스프링의 단말이 /check_token입니다. CheckTokenEndpoint 클래스에서 볼 수 있듯이 OAuth2 Token Introspection Endpoint에 따라 설계되었습니다. 엔드 포인트의 유일한 매개 변수는 'token'입니다.

@Override 
public void configure(AuthorizationServerSecurityConfigurer security) throws Exception { 
    security.checkTokenAccess("isAuthenticated()").tokenKeyAccess("permitAll()").passwordEncoder(passwordEncoder()); 
} 

당신이 checkTokenAccess()가 액세스 할 수있는 인증 요청을 할 수 있습니다 볼 수 있듯이 :

그래서 우선 엔드 포인트가 액세스 할 수 있도록하는 것입니다. 당신의 마이크로 서비스 또는이 엔드 포인트에 전화를해야하는 응용 프로그램에서 이제 permitAll()

를 사용하지 마십시오, 당신은 RemoteTokenServices을 구성해야합니다 : 그것은

@Bean 
@Conditional(IfCheckTokenIsEnabled.class) 
public ResourceServerTokenServices createResourceServerTokenServices() { 
    RemoteTokenServices tokenServices = new RemoteTokenServices(); 
    tokenServices.setCheckTokenEndpointUrl("http://localhost:8099/oauth/check_token"); 
    tokenServices.setClientId("my_client_id"); 
    tokenServices.setClientSecret("client_secret"); //cannot be null 

    return tokenServices; 
} 

의 그!

그러나이 엔드 포인트는 실제로 스펙대로는 아닙니다. OAuth2에서는이 종점이 기본적으로 액세스 토큰을 추출하는 동안 부울 유형의 노드 'active'가 응답에서 필수임을 언급했습니다. 그러나 자신 만의 엔드 포인트를 만들고 전화를 걸기 위해 봄에 RemoteTokenServices을 구성 할 수 있습니다.