package org.jboss.seam.security.examples.id_provider; import java.io.IOException; import java.io.InputStreamReader; import java.io.Reader; import java.net.MalformedURLException; import java.net.URL; import java.net.URLConnection; import java.util.LinkedList; import java.util.List; import javax.enterprise.inject.Model; import javax.faces.application.FacesMessage; import javax.faces.context.FacesContext; import javax.inject.Inject; import org.jboss.seam.security.external.saml.SamlExternalEntity; import org.jboss.seam.security.external.saml.api.SamlIdentityProviderConfigurationApi; @Model public class Configuration { private String spMetaDataUrl; @Inject private SamlIdentityProviderConfigurationApi idpConfigApi; public String getSpMetaDataUrl() { return spMetaDataUrl; } public void setSpMetaDataUrl(String spMetaDataUrl) { this.spMetaDataUrl = spMetaDataUrl; } public void addSamlServiceProvider() { try { URL url = new URL(spMetaDataUrl); URLConnection urlConnection = url.openConnection(); urlConnection.setConnectTimeout(3000); urlConnection.setReadTimeout(3000); Reader reader = new InputStreamReader(urlConnection.getInputStream()); SamlExternalEntity samlEntity = idpConfigApi.addExternalSamlEntity(reader); FacesMessage facesMessage = new FacesMessage("SAML entity " + samlEntity.getEntityId() + " has been added."); FacesContext.getCurrentInstance().addMessage(null, facesMessage); } catch (MalformedURLException e) { FacesMessage facesMessage = new FacesMessage(FacesMessage.SEVERITY_ERROR, "Malformed URL.", ""); FacesContext.getCurrentInstance().addMessage(null, facesMessage); } catch (IOException e) { FacesMessage facesMessage = new FacesMessage(FacesMessage.SEVERITY_ERROR, "Metadata could not be read.", ""); FacesContext.getCurrentInstance().addMessage(null, facesMessage); } } public String getMetaDataUrl() { return idpConfigApi.getMetaDataURL(); } public List<String> getSpEntityIds() { List<String> entityIds = new LinkedList<String>(); for (SamlExternalEntity entity : idpConfigApi.getExternalSamlEntities()) { entityIds.add(entity.getEntityId()); } return entityIds; } }