-1
외부 인증 서버로 PingFederate를 사용하도록 Spring Rest Service를 구성하는 방법을 아는 사람이 있습니까?Spring to Ping : 외부 인증 서버를 사용하기 위해 Spring Rest Service를 구성하는 방법 PingFederate
외부 인증 서버로 PingFederate를 사용하도록 Spring Rest Service를 구성하는 방법을 아는 사람이 있습니까?Spring to Ping : 외부 인증 서버를 사용하기 위해 Spring Rest Service를 구성하는 방법 PingFederate
이전에이 질문을했는데, 하나님이 그 이유를 알고 있기 때문에 닫았습니다. 그러나 여기에 내가 찾은 대답이 있습니다. 나는 이것을 외부 인증 서버로 사용하는 데모에 기반을 두었습니다. 일반적인 데모의 문제점은 모두 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;
}