/* * oxAuth is available under the MIT License (2008). See http://opensource.org/licenses/MIT for full text. * * Copyright (c) 2014, Gluu */ package org.xdi.oxauth.action; import static org.xdi.oxauth.model.discovery.WebFingerParam.REL_VALUE; import java.io.Serializable; import java.net.URISyntaxException; import javax.enterprise.context.SessionScoped; import javax.inject.Inject; import javax.inject.Named; import org.apache.http.client.HttpClient; import org.slf4j.Logger; import org.jboss.resteasy.client.ClientExecutor; import org.jboss.resteasy.client.core.executors.ApacheHttpClient4Executor; import org.xdi.net.SslDefaultHttpClient; import org.xdi.net.TrustAllTrustManager; import org.xdi.oxauth.client.OpenIdConfigurationClient; import org.xdi.oxauth.client.OpenIdConfigurationResponse; import org.xdi.oxauth.client.OpenIdConnectDiscoveryClient; import org.xdi.oxauth.client.OpenIdConnectDiscoveryRequest; import org.xdi.oxauth.client.OpenIdConnectDiscoveryResponse; /** * @author Javier Rojas Blum * @version August 24, 2016 */ @Named @SessionScoped public class OpenIdConnectDiscoveryAction implements Serializable { private static final long serialVersionUID = -7821250358671474997L; @Inject private Logger log; @Inject private RegistrationAction registrationAction; @Inject private AuthorizationAction authorizationAction; @Inject private TokenAction tokenAction; @Inject private UserInfoAction userInfoAction; @Inject private CheckSessionAction checkSessionAction; @Inject private EndSessionAction endSessionAction; private String resource; private String host; private String rel; private boolean showResults; private boolean acceptUntrustedCertificate; private String requestString1; private String responseString1; private String requestString2; private String responseString2; public void exec() { try { ClientExecutor clientExecutor = null; if (acceptUntrustedCertificate) { HttpClient httpClient = new SslDefaultHttpClient(new TrustAllTrustManager()); clientExecutor = new ApacheHttpClient4Executor(httpClient); } OpenIdConnectDiscoveryRequest openIdConnectDiscoveryRequest = new OpenIdConnectDiscoveryRequest(resource); host = openIdConnectDiscoveryRequest.getHost(); rel = REL_VALUE; OpenIdConnectDiscoveryClient openIdConnectDiscoveryClient = new OpenIdConnectDiscoveryClient(resource); OpenIdConnectDiscoveryResponse openIdConnectDiscoveryResponse; if (clientExecutor == null) { openIdConnectDiscoveryResponse = openIdConnectDiscoveryClient.exec(); } else { openIdConnectDiscoveryResponse = openIdConnectDiscoveryClient.exec(clientExecutor); } showResults = true; requestString1 = openIdConnectDiscoveryClient.getRequestAsString(); responseString1 = openIdConnectDiscoveryClient.getResponseAsString(); if (openIdConnectDiscoveryResponse.getStatus() == 200) { String openIdConfigurationUrl = openIdConnectDiscoveryResponse.getLinks().get(0).getHref() + "/.well-known/openid-configuration"; OpenIdConfigurationClient openIdConfigurationClient = new OpenIdConfigurationClient( openIdConfigurationUrl); OpenIdConfigurationResponse openIdConfigurationResponse; if (clientExecutor == null) { openIdConfigurationResponse = openIdConfigurationClient.execOpenIdConfiguration(); } else { openIdConfigurationResponse = openIdConfigurationClient.execOpenIdConfiguration(clientExecutor); } requestString2 = openIdConfigurationClient.getRequestAsString(); responseString2 = openIdConfigurationClient.getResponseAsString(); registrationAction.setRegistrationEndpoint(openIdConfigurationResponse.getRegistrationEndpoint()); authorizationAction.setAuthorizationEndpoint(openIdConfigurationResponse.getAuthorizationEndpoint()); authorizationAction.setJwksUri(openIdConfigurationResponse.getJwksUri()); tokenAction.setTokenEndpoint(openIdConfigurationResponse.getTokenEndpoint()); userInfoAction.setUserInfoEndpoint(openIdConfigurationResponse.getUserInfoEndpoint()); checkSessionAction.setCheckSessionEndpoint(openIdConfigurationResponse.getCheckSessionIFrame()); endSessionAction.setEndSessionEndpoint(openIdConfigurationResponse.getEndSessionEndpoint()); } } catch (IllegalArgumentException e) { log.error(e.getMessage(), e); } catch (URISyntaxException e) { log.error(e.getMessage(), e); } catch (Exception e) { log.error(e.getMessage(), e); } } public String getResource() { return resource; } public void setResource(String resource) { this.resource = resource; } public String getHost() { return host; } public void setHost(String host) { this.host = host; } public String getRel() { return rel; } public void setRel(String rel) { this.rel = rel; } public boolean isShowResults() { return showResults; } public void setShowResults(boolean showResults) { this.showResults = showResults; } public String getRequestString1() { return requestString1; } public void setRequestString1(String requestString1) { this.requestString1 = requestString1; } public String getResponseString1() { return responseString1; } public void setResponseString1(String responseString1) { this.responseString1 = responseString1; } public String getRequestString2() { return requestString2; } public void setRequestString2(String requestString2) { this.requestString2 = requestString2; } public String getResponseString2() { return responseString2; } public void setResponseString2(String responseString2) { this.responseString2 = responseString2; } public boolean isAcceptUntrustedCertificate() { return acceptUntrustedCertificate; } public void setAcceptUntrustedCertificate(boolean acceptUntrustedCertificate) { this.acceptUntrustedCertificate = acceptUntrustedCertificate; } }