2017-10-30 6 views

答えて

0

前にこの質問をしましたが、それは神のために閉鎖されました。しかし、私が見つけた答えがここにあります。私は外部認証サーバとしてGoogleを使用したデモに基づいています。通常のデモの問題は、すべてが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; 
    } 
関連する問題