2017-10-30 6 views

답변

0

이전에이 질문을했는데, 하나님이 그 이유를 알고 있기 때문에 닫았습니다. 그러나 여기에 내가 찾은 대답이 있습니다. 나는 이것을 외부 인증 서버로 사용하는 데모에 기반을 두었습니다. 일반적인 데모의 문제점은 모두 Spring Authorization Server를 사용한다는 것입니다. 다음은 시작할 장소입니다 http://blog.arnoldgalovics.com/2017/02/05/google-oauth-with-spring-security-as-separated-resource-server/ 다음과 같이 GoogleAccessTokenValidator를 수정하십시오 (아래). 질문, 불이 꺼져 ...

private HttpHeaders createHeaders(final String username, final String password){ 
     return new HttpHeaders() {{ 
      String auth = username + ":" + password; 
      byte[] encodedAuth = Base64.encodeBase64( 
       auth.getBytes(Charset.forName("US-ASCII"))); 
      String authHeader = "Basic " + new String(encodedAuth); 
      set("Authorization", authHeader); 
      }}; 
    } 


    @SuppressWarnings("unchecked") 
    private Map<String, ?> getPingResponse(String accessToken) { 

     //Ping speaks text/html 
     List<HttpMessageConverter<?>> converters = restTemplate.getMessageConverters(); 
     for (HttpMessageConverter<?> converter : converters) { 
      if (converter instanceof StringHttpMessageConverter) { 
       StringHttpMessageConverter stringConverter = (StringHttpMessageConverter) converter;     
       stringConverter.setSupportedMediaTypes(ImmutableList.of(new MediaType("text", "html", StringHttpMessageConverter.DEFAULT_CHARSET))); 
      } 
     }  

     //URL 
     UriComponentsBuilder builder = UriComponentsBuilder.fromHttpUrl(checkTokenUrl) 
       .queryParam("grant_type", "urn:pingidentity.com:oauth2:grant_type:validate_bearer") 
       .queryParam("token", accessToken);  
     String url = builder.build().encode().toUri().toString(); 

     //Basic Auth (from Ping, OAuth Settings, Manage Clients 
     HttpEntity<Object> requestEntity = new HttpEntity<Object>(createHeaders("my-trusted-client", "secret")); 

     //unused Spring exchange variables 
     Map<String, String> variables = ImmutableMap.of("ping does not", "use this"); //token only in queryParam above 

     //validation call to Ping 
     Map map = restTemplate.exchange(url, HttpMethod.POST, requestEntity, Map.class, variables).getBody();   
     return (Map<String, Object>) map; 
    }