-1
PingFederateを外部認可サーバーとして使用するためにSpring Rest Serviceを構成する方法を知っている人はいますか?Spring to Ping:外部認可サーバーを使用するためにSpring Rest Serviceを構成する方法PingFederate
PingFederateを外部認可サーバーとして使用するためにSpring Rest Serviceを構成する方法を知っている人はいますか?Spring to Ping:外部認可サーバーを使用するためにSpring Rest Serviceを構成する方法PingFederate
前にこの質問をしましたが、それは神のために閉鎖されました。しかし、私が見つけた答えがここにあります。私は外部認証サーバとして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;
}