[jboss-cvs] Picketlink SVN: r922 - in picketlink-seam/trunk: picketlink-seam and 5 other directories.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Tue May 3 04:28:10 EDT 2011
Author: jonananas
Date: 2011-05-03 04:28:09 -0400 (Tue, 03 May 2011)
New Revision: 922
Added:
picketlink-seam/trunk/picketlink-seam/src/test/java/org/picketlink/identity/
picketlink-seam/trunk/picketlink-seam/src/test/java/org/picketlink/identity/seam/
picketlink-seam/trunk/picketlink-seam/src/test/java/org/picketlink/test/identity/seam/federation/ConfigurationTestCase.java
picketlink-seam/trunk/picketlink-seam/src/test/java/org/picketlink/test/identity/seam/federation/SamlConfigurationUnitTestCase.java
picketlink-seam/trunk/picketlink-seam/src/test/resources/external-authentication-config.out.xml
picketlink-seam/trunk/picketlink-seam/src/test/resources/external-authentication-config.xml
picketlink-seam/trunk/picketlink-seam/src/test/resources/picketlink_test_keystore.jks
Removed:
picketlink-seam/trunk/picketlink-seam/src/test/java/org/picketlink/test/identity/seam/federation/SamlConfigurationUnitTestCase.java
Modified:
picketlink-seam/trunk/
picketlink-seam/trunk/picketlink-seam/
picketlink-seam/trunk/picketlink-seam/src/main/java/org/picketlink/identity/seam/federation/configuration/Configuration.java
picketlink-seam/trunk/picketlink-seam/src/main/java/org/picketlink/identity/seam/federation/configuration/OpenIdConfiguration.java
picketlink-seam/trunk/picketlink-seam/src/main/java/org/picketlink/identity/seam/federation/configuration/SamlConfiguration.java
picketlink-seam/trunk/picketlink-seam/src/main/java/org/picketlink/identity/seam/federation/configuration/ServiceProvider.java
Log:
PLFED-180
seam-sp crashes on missing defaultIdentityProvider even though it is marked as optional
PLFED-181
Leading slash of saml-entitites.xml, external-authentication.xml and external-authentication.xsd does not work in ear (or unit test)
- New ConfigurationTestCase
- defaultIdentityProvider is now optional
- defaultOpenIdProvider is now optional
- Path to external-authentication-config.xml now has no leading /
- Path to external-authentication-config.xsd now has no leading /
- Path to saml-entities.xml now has no leading /
Property changes on: picketlink-seam/trunk
___________________________________________________________________
Modified: svn:ignore
- .classpath
.settings
target
target-eclipse
eclipse-target
generated-source
+ .classpath
.settings
target
target-eclipse
eclipse-target
generated-source
.project
Property changes on: picketlink-seam/trunk/picketlink-seam
___________________________________________________________________
Added: svn:ignore
+ target
.classpath
.project
.settings
Modified: picketlink-seam/trunk/picketlink-seam/src/main/java/org/picketlink/identity/seam/federation/configuration/Configuration.java
===================================================================
--- picketlink-seam/trunk/picketlink-seam/src/main/java/org/picketlink/identity/seam/federation/configuration/Configuration.java 2011-05-03 07:04:35 UTC (rev 921)
+++ picketlink-seam/trunk/picketlink-seam/src/main/java/org/picketlink/identity/seam/federation/configuration/Configuration.java 2011-05-03 08:28:09 UTC (rev 922)
@@ -45,6 +45,7 @@
import org.jboss.seam.annotations.Scope;
import org.jboss.seam.annotations.Startup;
import org.jboss.seam.web.ServletContexts;
+import org.picketlink.identity.federation.core.exceptions.ConfigurationException;
import org.picketlink.identity.federation.core.util.StringUtil;
import org.picketlink.identity.seam.federation.jaxb.config.ExternalAuthenticationConfigType;
import org.picketlink.identity.seam.federation.jaxb.config.ServiceProviderType;
@@ -62,14 +63,16 @@
@Import("org.picketlink.identity.seam.federation")
public class Configuration
{
- private final static String CONFIGURATION_FILE = "/external-authentication-config.xml";
+ private static final String SCHEMA_CONFIG_EXTERNAL_AUTHENTICATION_CONFIG_XSD = "schema/config/external-authentication-config.xsd";
+ private final static String CONFIGURATION_FILE = "external-authentication-config.xml";
+
private String contextRoot;
private Map<String, ServiceProvider> serviceProviderMap = new HashMap<String, ServiceProvider>();
@Create
- public void init()
+ public void init() throws ConfigurationException
{
List<ServiceProvider> serviceProviders = new LinkedList<ServiceProvider>();
ExternalAuthenticationConfigType externalAuthenticationConfig = readConfigurationFile();
@@ -90,14 +93,14 @@
}
}
- private ExternalAuthenticationConfigType readConfigurationFile()
+ private ExternalAuthenticationConfigType readConfigurationFile() throws ConfigurationException
{
ExternalAuthenticationConfigType externalAuthenticationConfig;
try
{
JAXBContext jaxbContext = JAXBContext.newInstance("org.picketlink.identity.seam.federation.jaxb.config");
Unmarshaller unmarshaller = jaxbContext.createUnmarshaller();
- URL schemaURL = PicketLinkSeamUtil.loadResource(getClass(), "/schema/config/external-authentication-config.xsd" );
+ URL schemaURL = loadResourceThrowIfNotFound(SCHEMA_CONFIG_EXTERNAL_AUTHENTICATION_CONFIG_XSD);
Schema schema;
try
{
@@ -109,7 +112,7 @@
}
unmarshaller.setSchema(schema);
- JAXBElement<?> o = (JAXBElement<?>) unmarshaller.unmarshal( PicketLinkSeamUtil.loadResource( getClass(), CONFIGURATION_FILE));
+ JAXBElement<?> o = (JAXBElement<?>) unmarshaller.unmarshal( loadResourceThrowIfNotFound(CONFIGURATION_FILE));
externalAuthenticationConfig = (ExternalAuthenticationConfigType) o.getValue();
}
catch (JAXBException e)
@@ -119,6 +122,14 @@
return externalAuthenticationConfig;
}
+ private URL loadResourceThrowIfNotFound(String resource) throws ConfigurationException
+ {
+ URL url = PicketLinkSeamUtil.loadResource(getClass(), resource );
+ if (url == null)
+ throw new ConfigurationException("Resource \"" + resource + "\" could not be loaded");
+ return url;
+ }
+
public static Configuration instance()
{
return (Configuration) Component.getInstance(Configuration.class);
Modified: picketlink-seam/trunk/picketlink-seam/src/main/java/org/picketlink/identity/seam/federation/configuration/OpenIdConfiguration.java
===================================================================
--- picketlink-seam/trunk/picketlink-seam/src/main/java/org/picketlink/identity/seam/federation/configuration/OpenIdConfiguration.java 2011-05-03 07:04:35 UTC (rev 921)
+++ picketlink-seam/trunk/picketlink-seam/src/main/java/org/picketlink/identity/seam/federation/configuration/OpenIdConfiguration.java 2011-05-03 08:28:09 UTC (rev 922)
@@ -40,7 +40,8 @@
public OpenIdConfiguration(OpenIdConfigType openIdConfig)
{
attributes = openIdConfig.getAttribute();
- defaultOpenIdProvider = StringUtil.getSystemPropertyAsString( openIdConfig.getDefaultOpenIdProvider() );
+ if (openIdConfig.getDefaultOpenIdProvider() != null)
+ defaultOpenIdProvider = StringUtil.getSystemPropertyAsString(openIdConfig.getDefaultOpenIdProvider());
}
public List<OpenIdAttributeType> getAttributes()
Modified: picketlink-seam/trunk/picketlink-seam/src/main/java/org/picketlink/identity/seam/federation/configuration/SamlConfiguration.java
===================================================================
--- picketlink-seam/trunk/picketlink-seam/src/main/java/org/picketlink/identity/seam/federation/configuration/SamlConfiguration.java 2011-05-03 07:04:35 UTC (rev 921)
+++ picketlink-seam/trunk/picketlink-seam/src/main/java/org/picketlink/identity/seam/federation/configuration/SamlConfiguration.java 2011-05-03 08:28:09 UTC (rev 922)
@@ -37,6 +37,7 @@
import java.util.List;
import java.util.Map;
+import org.picketlink.identity.federation.core.exceptions.ConfigurationException;
import org.picketlink.identity.federation.core.parsers.saml.SAMLParser;
import org.picketlink.identity.federation.core.util.StringUtil;
import org.picketlink.identity.federation.newmodel.saml.v2.metadata.EntitiesDescriptorType;
@@ -55,7 +56,7 @@
*/
public class SamlConfiguration
{
- private static final String SAML_ENTITIES_FILE = "/saml-entities.xml";
+ private static final String SAML_ENTITIES_FILE = "saml-entities.xml";
private Map<String, IDPSSODescriptorType> idpMetaInfo = new HashMap<String, IDPSSODescriptorType>();
@@ -73,24 +74,24 @@
private X509Certificate certificate;
- public SamlConfiguration(SamlConfigType samlConfig)
+ public SamlConfiguration(SamlConfigType samlConfig) throws ConfigurationException
{
readSamlMetaInformation();
- this.entityId = StringUtil.getSystemPropertyAsString( samlConfig.getServiceProviderEntityId() );
+ this.entityId = StringUtil.getSystemPropertyAsString(samlConfig.getServiceProviderEntityId());
this.authnRequestsSigned = samlConfig.isAuthnRequestsSigned();
this.wantAssertionsSigned = samlConfig.isWantAssertionsSigned();
for (SamlIdentityProviderType samlIdp : samlConfig.getSamlIdentityProvider())
{
- String entityID = StringUtil.getSystemPropertyAsString( samlIdp.getEntityId() );
- IDPSSODescriptorType idpSsoDescriptor = idpMetaInfo.get( entityID );
+ String entityID = StringUtil.getSystemPropertyAsString(samlIdp.getEntityId());
+ IDPSSODescriptorType idpSsoDescriptor = idpMetaInfo.get(entityID);
if (idpSsoDescriptor == null)
{
throw new RuntimeException("Saml identity provider with entity id \"" + entityID
+ "\" not found in metadata.");
}
- SamlIdentityProvider samlIdentityProvider = new SamlIdentityProvider( entityID, idpSsoDescriptor);
+ SamlIdentityProvider samlIdentityProvider = new SamlIdentityProvider(entityID, idpSsoDescriptor);
identityProviders.add(samlIdentityProvider);
samlIdentityProvider.setWantSingleLogoutMessagesSigned(samlIdp.isWantSingleLogoutMessagesSigned());
@@ -108,8 +109,9 @@
wantAuthnRequestsSigned = true;
}
}
- String entityID = StringUtil.getSystemPropertyAsString( identityProvider.getEntityId() );
- if ( entityID.equals( StringUtil.getSystemPropertyAsString( samlConfig.getDefaultIdentityProvider() )))
+ String entityID = StringUtil.getSystemPropertyAsString(identityProvider.getEntityId());
+ if (samlConfig.getDefaultIdentityProvider() != null
+ && entityID.equals(StringUtil.getSystemPropertyAsString(samlConfig.getDefaultIdentityProvider())))
{
defaultIdentityProvider = identityProvider;
}
@@ -121,10 +123,10 @@
"Configuration error: at least one identity provider wants the authentication requests signed, but the service provider doesn't sign authentication requests.");
}
- String keyStoreUrl = StringUtil.getSystemPropertyAsString( samlConfig.getKeyStoreUrl() );
- String keyStorePass = StringUtil.getSystemPropertyAsString( samlConfig.getKeyStorePass() );
- String signingKeyAlias = StringUtil.getSystemPropertyAsString( samlConfig.getSigningKeyAlias() );
- String signingKeyPass = StringUtil.getSystemPropertyAsString( samlConfig.getSigningKeyPass() );
+ String keyStoreUrl = StringUtil.getSystemPropertyAsString(samlConfig.getKeyStoreUrl());
+ String keyStorePass = StringUtil.getSystemPropertyAsString(samlConfig.getKeyStorePass());
+ String signingKeyAlias = StringUtil.getSystemPropertyAsString(samlConfig.getSigningKeyAlias());
+ String signingKeyPass = StringUtil.getSystemPropertyAsString(samlConfig.getSigningKeyPass());
if (signingKeyPass == null)
{
signingKeyPass = keyStorePass;
@@ -137,13 +139,13 @@
{
try
{
- InputStream samlEntitiesStream = PicketLinkSeamUtil.loadResourceAsStream( getClass(), SAML_ENTITIES_FILE );
- if( samlEntitiesStream == null )
- throw new RuntimeException( "SAML Entities File is missing" );
-
+ InputStream samlEntitiesStream = PicketLinkSeamUtil.loadResourceAsStream(getClass(), SAML_ENTITIES_FILE);
+ if (samlEntitiesStream == null)
+ throw new RuntimeException("SAML Entities File is missing");
+
SAMLParser samlParser = new SAMLParser();
- EntitiesDescriptorType entitiesDescriptor = (EntitiesDescriptorType) samlParser.parse( samlEntitiesStream );
-
+ EntitiesDescriptorType entitiesDescriptor = (EntitiesDescriptorType) samlParser.parse(samlEntitiesStream);
+
/*JAXBContext jaxbContext = JAXBContext.newInstance("org.picketlink.identity.federation.saml.v2.metadata");
Unmarshaller unmarshaller = jaxbContext.createUnmarshaller();
JAXBElement<?> o = (JAXBElement<?>) unmarshaller.unmarshal(getClass().getResource(SAML_ENTITIES_FILE));
@@ -151,7 +153,7 @@
*/
readEntitiesDescriptor(entitiesDescriptor);
}
- catch ( Exception e)
+ catch (Exception e)
{
throw new RuntimeException(e);
}
@@ -159,23 +161,23 @@
private void readEntitiesDescriptor(EntitiesDescriptorType entitiesDescriptor)
{
- for (Object object : entitiesDescriptor.getEntityDescriptor() )
+ for (Object object : entitiesDescriptor.getEntityDescriptor())
{
if (object instanceof EntityDescriptorType)
{
EntityDescriptorType entityDescriptor = (EntityDescriptorType) object;
String entityId = entityDescriptor.getEntityID();
-
- for( EDTChoiceType edt: entityDescriptor.getChoiceType() )
+
+ for (EDTChoiceType edt : entityDescriptor.getChoiceType())
{
List<EDTDescriptorChoiceType> descriptors = edt.getDescriptors();
- for( EDTDescriptorChoiceType edtDesc : descriptors )
+ for (EDTDescriptorChoiceType edtDesc : descriptors)
{
IDPSSODescriptorType idpSSODesc = edtDesc.getIdpDescriptor();
- if( idpSSODesc != null )
- {
+ if (idpSSODesc != null)
+ {
idpMetaInfo.put(entityId, idpSSODesc);
- }
+ }
}
}
@@ -197,7 +199,7 @@
}
}
- private void getSigningKeyPair(String keyStoreUrl, String keyStorePass, String signingKeyAlias, String signingKeyPass)
+ private void getSigningKeyPair(String keyStoreUrl, String keyStorePass, String signingKeyAlias, String signingKeyPass) throws ConfigurationException
{
final String classPathPrefix = "classpath:";
@@ -207,13 +209,15 @@
InputStream keyStoreStream;
if (keyStoreUrl.startsWith(classPathPrefix))
{
- keyStoreStream = PicketLinkSeamUtil.loadResourceAsStream( getClass(),
+ keyStoreStream = PicketLinkSeamUtil.loadResourceAsStream(getClass(),
keyStoreUrl.substring(classPathPrefix.length()));
}
else
{
keyStoreStream = new URL(keyStoreUrl).openStream();
}
+ if (keyStoreStream == null)
+ throw new ConfigurationException("Could not load keystore resource \"" + keyStoreUrl + "\"");
char[] keyStorePwd = keyStorePass != null ? keyStorePass.toCharArray() : null;
keyStore.load(keyStoreStream, keyStorePwd);
@@ -291,7 +295,7 @@
if (identityProvider instanceof SamlIdentityProvider)
{
SamlIdentityProvider samlIdentityProvider = (SamlIdentityProvider) identityProvider;
- if ( StringUtil.getSystemPropertyAsString( samlIdentityProvider.getEntityId() ).equals(entityId))
+ if (StringUtil.getSystemPropertyAsString(samlIdentityProvider.getEntityId()).equals(entityId))
{
return samlIdentityProvider;
}
Modified: picketlink-seam/trunk/picketlink-seam/src/main/java/org/picketlink/identity/seam/federation/configuration/ServiceProvider.java
===================================================================
--- picketlink-seam/trunk/picketlink-seam/src/main/java/org/picketlink/identity/seam/federation/configuration/ServiceProvider.java 2011-05-03 07:04:35 UTC (rev 921)
+++ picketlink-seam/trunk/picketlink-seam/src/main/java/org/picketlink/identity/seam/federation/configuration/ServiceProvider.java 2011-05-03 08:28:09 UTC (rev 922)
@@ -28,6 +28,7 @@
import org.jboss.seam.core.Expressions;
import org.jboss.seam.core.Expressions.MethodExpression;
+import org.picketlink.identity.federation.core.exceptions.ConfigurationException;
import org.picketlink.identity.federation.core.util.StringUtil;
import org.picketlink.identity.seam.federation.ExternalAuthenticationService;
import org.picketlink.identity.seam.federation.jaxb.config.ServiceProviderType;
@@ -60,7 +61,7 @@
private MethodExpression<Boolean> internalAuthenticationMethod;
- public ServiceProvider(Configuration configuration, ServiceProviderType serviceProvider)
+ public ServiceProvider(Configuration configuration, ServiceProviderType serviceProvider) throws ConfigurationException
{
this.configuration = configuration;
Added: picketlink-seam/trunk/picketlink-seam/src/test/java/org/picketlink/test/identity/seam/federation/ConfigurationTestCase.java
===================================================================
--- picketlink-seam/trunk/picketlink-seam/src/test/java/org/picketlink/test/identity/seam/federation/ConfigurationTestCase.java (rev 0)
+++ picketlink-seam/trunk/picketlink-seam/src/test/java/org/picketlink/test/identity/seam/federation/ConfigurationTestCase.java 2011-05-03 08:28:09 UTC (rev 922)
@@ -0,0 +1,46 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2011, Red Hat Middleware LLC, and individual contributors
+ * as indicated by the @author tags. See the copyright.txt file in the
+ * distribution for a full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.picketlink.test.identity.seam.federation;
+
+import static org.junit.Assert.*;
+
+import org.junit.Test;
+import org.picketlink.identity.seam.federation.configuration.Configuration;
+import org.picketlink.identity.seam.federation.configuration.SamlConfiguration;
+import org.picketlink.identity.seam.federation.configuration.ServiceProvider;
+
+/**
+ * @author Jonas Andersson
+ * @since 29 apr 2011
+ */
+public class ConfigurationTestCase
+{
+ @Test
+ public void shouldReadSamlEntitiesWithoutDefaultIDP() throws Exception
+ {
+ Configuration config = new Configuration();
+ config.init();
+ ServiceProvider serviceProvider = config.getServiceProvider("localhost");
+ assertNull(serviceProvider.getSamlConfiguration().getDefaultIdentityProvider());
+ assertNull(serviceProvider.getOpenIdConfiguration().getDefaultOpenIdProvider());
+ }
+}
Deleted: picketlink-seam/trunk/picketlink-seam/src/test/java/org/picketlink/test/identity/seam/federation/SamlConfigurationUnitTestCase.java
===================================================================
--- picketlink-seam/trunk/picketlink-seam/src/test/java/org/picketlink/test/identity/seam/federation/SamlConfigurationUnitTestCase.java 2011-05-03 07:04:35 UTC (rev 921)
+++ picketlink-seam/trunk/picketlink-seam/src/test/java/org/picketlink/test/identity/seam/federation/SamlConfigurationUnitTestCase.java 2011-05-03 08:28:09 UTC (rev 922)
@@ -1,103 +0,0 @@
-/*
- * JBoss, Home of Professional Open Source.
- * Copyright 2008, Red Hat Middleware LLC, and individual contributors
- * as indicated by the @author tags. See the copyright.txt file in the
- * distribution for a full listing of individual contributors.
- *
- * This is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This software is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this software; if not, write to the Free
- * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
- */
-package org.picketlink.test.identity.seam.federation;
-
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertTrue;
-
-import java.io.InputStream;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-import org.junit.Test;
-import org.picketlink.identity.federation.core.parsers.saml.SAMLParser;
-import org.picketlink.identity.federation.newmodel.saml.v2.metadata.EntitiesDescriptorType;
-import org.picketlink.identity.federation.newmodel.saml.v2.metadata.EntityDescriptorType;
-import org.picketlink.identity.federation.newmodel.saml.v2.metadata.EntityDescriptorType.EDTChoiceType;
-import org.picketlink.identity.federation.newmodel.saml.v2.metadata.EntityDescriptorType.EDTDescriptorChoiceType;
-import org.picketlink.identity.federation.newmodel.saml.v2.metadata.IDPSSODescriptorType;
-import org.picketlink.identity.seam.federation.configuration.SamlConfiguration;
-
-/**
- * Unit test the {@link SamlConfiguration} class
- * @author Anil.Saldhana at redhat.com
- * @since Feb 7, 2011
- */
-public class SamlConfigurationUnitTestCase
-{
- private Map<String, IDPSSODescriptorType> idpMetaInfo = new HashMap<String, IDPSSODescriptorType>();
-
- @Test
- public void testSamlConfig() throws Exception
- {
- InputStream samlEntitiesStream = Thread.currentThread().getContextClassLoader().getResourceAsStream( "saml-entities.xml" );
- if( samlEntitiesStream == null )
- throw new RuntimeException( "SAML Entities File is missing" );
-
- SAMLParser samlParser = new SAMLParser();
- EntitiesDescriptorType entitiesDescriptor = (EntitiesDescriptorType) samlParser.parse( samlEntitiesStream );
- assertNotNull( entitiesDescriptor );
- readEntitiesDescriptor(entitiesDescriptor);
- assertTrue( idpMetaInfo.keySet().size() > 0 );
- }
-
- private void readEntitiesDescriptor(EntitiesDescriptorType entitiesDescriptor)
- {
- for (Object object : entitiesDescriptor.getEntityDescriptor() )
- {
- if (object instanceof EntityDescriptorType)
- {
- EntityDescriptorType entityDescriptor = (EntityDescriptorType) object;
- String entityId = entityDescriptor.getEntityID();
-
- for( EDTChoiceType edt: entityDescriptor.getChoiceType() )
- {
- List<EDTDescriptorChoiceType> descriptors = edt.getDescriptors();
- for( EDTDescriptorChoiceType edtDesc : descriptors )
- {
- IDPSSODescriptorType idpSSODesc = edtDesc.getIdpDescriptor();
- if( idpSSODesc != null )
- {
- idpMetaInfo.put(entityId, idpSSODesc);
- }
- }
- }
-
- /*for (RoleDescriptorType roleDescriptor : entityDescriptor.getC
- .getRoleDescriptorOrIDPSSODescriptorOrSPSSODescriptor())
- {
- if (roleDescriptor instanceof IDPSSODescriptorType)
- {
- IDPSSODescriptorType IDPSSODescriptor = (IDPSSODescriptorType) roleDescriptor;
- idpMetaInfo.put(entityId, IDPSSODescriptor);
- }
- }*/
- }
- else
- {
- EntitiesDescriptorType descriptor = (EntitiesDescriptorType) object;
- readEntitiesDescriptor(descriptor);
- }
- }
- }
-}
\ No newline at end of file
Added: picketlink-seam/trunk/picketlink-seam/src/test/java/org/picketlink/test/identity/seam/federation/SamlConfigurationUnitTestCase.java
===================================================================
--- picketlink-seam/trunk/picketlink-seam/src/test/java/org/picketlink/test/identity/seam/federation/SamlConfigurationUnitTestCase.java (rev 0)
+++ picketlink-seam/trunk/picketlink-seam/src/test/java/org/picketlink/test/identity/seam/federation/SamlConfigurationUnitTestCase.java 2011-05-03 08:28:09 UTC (rev 922)
@@ -0,0 +1,110 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2008, Red Hat Middleware LLC, and individual contributors
+ * as indicated by the @author tags. See the copyright.txt file in the
+ * distribution for a full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.picketlink.test.identity.seam.federation;
+
+import static org.junit.Assert.*;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
+
+import static org.hamcrest.CoreMatchers.*;
+
+import java.io.InputStream;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import org.junit.Test;
+import org.picketlink.identity.federation.core.parsers.saml.SAMLParser;
+import org.picketlink.identity.federation.newmodel.saml.v2.metadata.EntitiesDescriptorType;
+import org.picketlink.identity.federation.newmodel.saml.v2.metadata.EntityDescriptorType;
+import org.picketlink.identity.federation.newmodel.saml.v2.metadata.EntityDescriptorType.EDTChoiceType;
+import org.picketlink.identity.federation.newmodel.saml.v2.metadata.EntityDescriptorType.EDTDescriptorChoiceType;
+import org.picketlink.identity.federation.newmodel.saml.v2.metadata.IDPSSODescriptorType;
+import org.picketlink.identity.seam.federation.configuration.Configuration;
+import org.picketlink.identity.seam.federation.configuration.SamlConfiguration;
+import org.picketlink.identity.seam.federation.configuration.SamlIdentityProvider;
+import org.picketlink.identity.seam.federation.configuration.ServiceProvider;
+import org.picketlink.identity.seam.federation.jaxb.config.SamlConfigType;
+
+/**
+ * Unit test the {@link SamlConfiguration} class
+ * @author Anil.Saldhana at redhat.com
+ * @since Feb 7, 2011
+ */
+public class SamlConfigurationUnitTestCase
+{
+ private Map<String, IDPSSODescriptorType> idpMetaInfo = new HashMap<String, IDPSSODescriptorType>();
+
+ @Test
+ public void testSamlConfig() throws Exception
+ {
+ InputStream samlEntitiesStream = Thread.currentThread().getContextClassLoader().getResourceAsStream( "saml-entities.xml" );
+ if( samlEntitiesStream == null )
+ throw new RuntimeException( "SAML Entities File is missing" );
+
+ SAMLParser samlParser = new SAMLParser();
+ EntitiesDescriptorType entitiesDescriptor = (EntitiesDescriptorType) samlParser.parse( samlEntitiesStream );
+ assertNotNull( entitiesDescriptor );
+ readEntitiesDescriptor(entitiesDescriptor);
+ assertTrue( idpMetaInfo.keySet().size() > 0 );
+ }
+
+ private void readEntitiesDescriptor(EntitiesDescriptorType entitiesDescriptor)
+ {
+ for (Object object : entitiesDescriptor.getEntityDescriptor() )
+ {
+ if (object instanceof EntityDescriptorType)
+ {
+ EntityDescriptorType entityDescriptor = (EntityDescriptorType) object;
+ String entityId = entityDescriptor.getEntityID();
+
+ for( EDTChoiceType edt: entityDescriptor.getChoiceType() )
+ {
+ List<EDTDescriptorChoiceType> descriptors = edt.getDescriptors();
+ for( EDTDescriptorChoiceType edtDesc : descriptors )
+ {
+ IDPSSODescriptorType idpSSODesc = edtDesc.getIdpDescriptor();
+ if( idpSSODesc != null )
+ {
+ idpMetaInfo.put(entityId, idpSSODesc);
+ }
+ }
+ }
+
+ /*for (RoleDescriptorType roleDescriptor : entityDescriptor.getC
+ .getRoleDescriptorOrIDPSSODescriptorOrSPSSODescriptor())
+ {
+ if (roleDescriptor instanceof IDPSSODescriptorType)
+ {
+ IDPSSODescriptorType IDPSSODescriptor = (IDPSSODescriptorType) roleDescriptor;
+ idpMetaInfo.put(entityId, IDPSSODescriptor);
+ }
+ }*/
+ }
+ else
+ {
+ EntitiesDescriptorType descriptor = (EntitiesDescriptorType) object;
+ readEntitiesDescriptor(descriptor);
+ }
+ }
+ }
+}
\ No newline at end of file
Added: picketlink-seam/trunk/picketlink-seam/src/test/resources/external-authentication-config.out.xml
===================================================================
Added: picketlink-seam/trunk/picketlink-seam/src/test/resources/external-authentication-config.xml
===================================================================
--- picketlink-seam/trunk/picketlink-seam/src/test/resources/external-authentication-config.xml (rev 0)
+++ picketlink-seam/trunk/picketlink-seam/src/test/resources/external-authentication-config.xml 2011-05-03 08:28:09 UTC (rev 922)
@@ -0,0 +1,62 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ExternalAuthenticationConfig
+ xmlns="urn:picketlink:identity-federation:seam:config:1.0" xmlns:tns="urn:picketlink:identity-federation:seam:config:1.0">
+ <!--
+ Service provider running at localhost. Uses an IDP selected by the
+ user (SAML or OpenID)
+ -->
+ <ServiceProvider protocol="http" hostname="localhost"
+ unsolicitedAuthenticationUrl="http://saml.picketlink.org:8080/seam-sp/PublicPage.seam"
+ loggedOutUrl="http://localhost:8080/seam-sp/PublicPage.seam"
+ failedAuthenticationUrl="http://localhost:8080/seam-sp/FailedAuthenticationPage.seam"
+ internalAuthenticationMethod="#{authenticator.internalAuthenticate}">
+ <SamlConfig serviceProviderEntityId="http://localhost:8080/seam-sp"
+ keyStoreUrl="classpath:picketlink_test_keystore.jks" keyStorePass="store456"
+ signingKeyAlias="servercert" signingKeyPass="pass456">
+ <SamlIdentityProvider entityId="http://idp.ssocircle.com" />
+ <SamlIdentityProvider entityId="http://localhost:8888/opensso" />
+ </SamlConfig>
+ <OpenIdConfig>
+ <Attribute Alias="name" TypeUri="http://schema.openid.net/namePerson"
+ Required="true" />
+ <Attribute Alias="email" TypeUri="http://schema.openid.net/contact/email"
+ Required="true" />
+ </OpenIdConfig>
+ </ServiceProvider>
+ <!--
+ Service provider running at saml.picketlink.org (map this hostname to
+ 127.0.0.1 in /etc/hosts). Uses one SAML identity provider: SSOCircle.
+ -->
+ <ServiceProvider protocol="http" hostname="saml.picketlink.org"
+ unsolicitedAuthenticationUrl="http://saml.picketlink.org:8080/seam-sp/PublicPage.seam"
+ loggedOutUrl="http://saml.picketlink.org:8080/seam-sp/PublicPage.seam"
+ failedAuthenticationUrl="http://saml.picketlink.org:8080/seam-sp/FailedAuthenticationPage.seam"
+ internalAuthenticationMethod="#{authenticator.internalAuthenticate}">
+ <SamlConfig serviceProviderEntityId="http://saml.picketlink.org:8080/seam-sp"
+ authnRequestsSigned="false" defaultIdentityProvider="http://idp.ssocircle.com"
+ keyStoreUrl="classpath:picketlink_test_keystore.jks" keyStorePass="store456"
+ signingKeyAlias="servercert" signingKeyPass="pass456">
+ <SamlIdentityProvider entityId="http://idp.ssocircle.com" />
+ </SamlConfig>
+ </ServiceProvider>
+ <!--
+ Service provider running at openid.picketlink.org (map this hostname
+ to 127.0.0.1 in /etc/hosts). Uses one OpenID identity provider:
+ Google.
+ -->
+ <ServiceProvider protocol="http" hostname="openid.picketlink.org"
+ unsolicitedAuthenticationUrl="http://saml.picketlink.org:8080/seam-sp/PublicPage.seam"
+ loggedOutUrl="http://openid.picketlink.org:8080/seam-sp/PublicPage.seam"
+ failedAuthenticationUrl="http://openid.picketlink.org:8080/seam-sp/FailedAuthenticationPage.seam"
+ internalAuthenticationMethod="#{authenticator.internalAuthenticate}">
+ <OpenIdConfig defaultOpenIdProvider="https://www.google.com/accounts/o8/id" />
+ </ServiceProvider>
+ <ServiceProvider protocol="http" hostname="facebook.picketlink.org"
+ unsolicitedAuthenticationUrl="http://facebook.picketlink.org:8080/seam-sp/PublicPage.seam"
+ loggedOutUrl="http://facebook.picketlink.org:8080/seam-sp/PublicPage.seam"
+ failedAuthenticationUrl="http://facebook.picketlink.org:8080/seam-sp/FailedAuthenticationPage.seam"
+ internalAuthenticationMethod="#{authenticator.internalAuthenticate}">
+ <FacebookConfig clientId="156872394341240"
+ clientSecret="7b6919b80e544f0faf2ee05875f48f46" scope="email publish_stream"/>
+ </ServiceProvider>
+</ExternalAuthenticationConfig>
Added: picketlink-seam/trunk/picketlink-seam/src/test/resources/picketlink_test_keystore.jks
===================================================================
(Binary files differ)
Property changes on: picketlink-seam/trunk/picketlink-seam/src/test/resources/picketlink_test_keystore.jks
___________________________________________________________________
Added: svn:mime-type
+ application/octet-stream
More information about the jboss-cvs-commits
mailing list