Author: anil.saldhana(a)jboss.com
Date: 2011-01-05 14:03:12 -0500 (Wed, 05 Jan 2011)
New Revision: 631
Added:
federation/trunk/picketlink-fed-core/src/main/resources/core-sts.xml
Modified:
federation/trunk/picketlink-bindings/src/main/java/org/picketlink/identity/federation/bindings/tomcat/idp/IDPWebBrowserSSOValve.java
federation/trunk/picketlink-bindings/src/test/java/org/picketlink/test/identity/federation/bindings/mock/MockCatalinaContext.java
federation/trunk/picketlink-fed-core/src/main/java/org/picketlink/identity/federation/core/sts/PicketLinkCoreSTS.java
federation/trunk/picketlink-web/src/main/java/org/picketlink/identity/federation/web/servlets/IDPServlet.java
federation/trunk/picketlink-web/src/test/java/org/picketlink/test/identity/federation/web/mock/MockServletContext.java
Log:
bring in the concept of sts config file in IDP
Modified:
federation/trunk/picketlink-bindings/src/main/java/org/picketlink/identity/federation/bindings/tomcat/idp/IDPWebBrowserSSOValve.java
===================================================================
---
federation/trunk/picketlink-bindings/src/main/java/org/picketlink/identity/federation/bindings/tomcat/idp/IDPWebBrowserSSOValve.java 2011-01-05
19:02:23 UTC (rev 630)
+++
federation/trunk/picketlink-bindings/src/main/java/org/picketlink/identity/federation/bindings/tomcat/idp/IDPWebBrowserSSOValve.java 2011-01-05
19:03:12 UTC (rev 631)
@@ -926,7 +926,12 @@
//Ensure that the Core STS has the SAML20 Token Provider
PicketLinkCoreSTS sts = PicketLinkCoreSTS.instance();
- sts.installDefaultConfiguration();
+ //Let us look for a file
+ String configPath = context.getServletContext().getRealPath(
"/WEB-INF/picketlink-sts.xml" );
+ if( configPath == null )
+ sts.installDefaultConfiguration();
+ else
+ sts.installDefaultConfiguration( configPath );
if(this.signOutgoingMessages)
{
Modified:
federation/trunk/picketlink-bindings/src/test/java/org/picketlink/test/identity/federation/bindings/mock/MockCatalinaContext.java
===================================================================
---
federation/trunk/picketlink-bindings/src/test/java/org/picketlink/test/identity/federation/bindings/mock/MockCatalinaContext.java 2011-01-05
19:02:23 UTC (rev 630)
+++
federation/trunk/picketlink-bindings/src/test/java/org/picketlink/test/identity/federation/bindings/mock/MockCatalinaContext.java 2011-01-05
19:03:12 UTC (rev 631)
@@ -874,7 +874,7 @@
public String getRealPath(String arg0)
{
- throw new RuntimeException("NYI");
+ return null;
}
public RequestDispatcher getRequestDispatcher(String arg0)
Modified:
federation/trunk/picketlink-fed-core/src/main/java/org/picketlink/identity/federation/core/sts/PicketLinkCoreSTS.java
===================================================================
---
federation/trunk/picketlink-fed-core/src/main/java/org/picketlink/identity/federation/core/sts/PicketLinkCoreSTS.java 2011-01-05
19:02:23 UTC (rev 630)
+++
federation/trunk/picketlink-fed-core/src/main/java/org/picketlink/identity/federation/core/sts/PicketLinkCoreSTS.java 2011-01-05
19:03:12 UTC (rev 631)
@@ -21,14 +21,23 @@
*/
package org.picketlink.identity.federation.core.sts;
+import java.io.File;
+import java.io.InputStream;
+import java.net.URL;
+import java.security.AccessController;
+import java.security.PrivilegedAction;
+
import javax.xml.namespace.QName;
import org.apache.log4j.Logger;
+import org.picketlink.identity.federation.core.config.STSType;
+import org.picketlink.identity.federation.core.exceptions.ConfigurationException;
import org.picketlink.identity.federation.core.exceptions.ProcessingException;
import org.picketlink.identity.federation.core.interfaces.ProtocolContext;
import org.picketlink.identity.federation.core.interfaces.SecurityTokenProvider;
-import
org.picketlink.identity.federation.core.saml.v2.providers.SAML20AssertionTokenProvider;
import org.picketlink.identity.federation.core.wstrust.PicketLinkSTSConfiguration;
+import org.picketlink.identity.federation.core.wstrust.STSConfiguration;
+import org.picketlink.identity.federation.core.wstrust.WSTrustUtil;
/**
* <p>
@@ -51,6 +60,16 @@
private static PicketLinkCoreSTS _instance = null;
+ private static final String SEPARATOR = AccessController.doPrivileged( new
PrivilegedAction<String>()
+ {
+ public String run()
+ {
+ return System.getProperty("file.separator");
+ }
+ } );
+
+ private static final String STS_CONFIG_DIR = "picketlink-store" + SEPARATOR
+ "sts" + SEPARATOR;
+
protected PicketLinkCoreSTS()
{
}
@@ -73,13 +92,27 @@
this.configuration = config;
}
- public void installDefaultConfiguration()
+ public void installDefaultConfiguration( String... configFileName )
{
+ String fileName = "core-sts.xml";
+
+ if( configFileName != null && configFileName.length > 0 )
+ fileName = configFileName[ 0 ];
+
if( configuration == null )
configuration = new PicketLinkSTSConfiguration();
+ try
+ {
+ STSConfiguration config = getConfiguration(fileName);
+ configuration.copy(config);
+ }
+ catch (ConfigurationException e)
+ {
+ throw new RuntimeException( e );
+ }
//SAML2 Specification Provider
- configuration.addTokenProvider( SAML20AssertionTokenProvider.NS, new
SAML20AssertionTokenProvider() );
+ //configuration.addTokenProvider( SAML20AssertionTokenProvider.NS, new
SAML20AssertionTokenProvider() );
}
/**
@@ -245,4 +278,46 @@
return provider;
}
+
+ /**
+ * <p>
+ * Obtains the STS configuration options.
+ * </p>
+ *
+ * @return an instance of {@code STSConfiguration} containing the STS configuration
properties.
+ */
+ protected STSConfiguration getConfiguration( String fileName ) throws
ConfigurationException
+ {
+ URL configurationFileURL = null;
+
+ try
+ {
+ // check the user home for a configuration file generated by the picketlink
console.
+ String configurationFilePath = System.getProperty("user.home") +
SEPARATOR + STS_CONFIG_DIR + fileName;
+ File configurationFile = new File(configurationFilePath);
+ if (configurationFile.exists())
+ configurationFileURL = configurationFile.toURI().toURL();
+ else
+ // if not configuration file was found in the user home, check the context
classloader.
+ configurationFileURL = SecurityActions.getContextClassLoader().getResource(
fileName );
+
+ // if no configuration file was found, log a warn message and use default
configuration values.
+ if (configurationFileURL == null)
+ {
+ logger.warn( fileName + " configuration file not found. Using default
configuration values");
+ return new PicketLinkSTSConfiguration();
+ }
+
+ InputStream stream = configurationFileURL.openStream();
+ STSType stsConfig = WSTrustUtil.getSTSConfiguration(stream);
+ STSConfiguration configuration = new PicketLinkSTSConfiguration(stsConfig);
+ if (logger.isInfoEnabled())
+ logger.info( fileName + " configuration file loaded");
+ return configuration;
+ }
+ catch (Exception e)
+ {
+ throw new ConfigurationException("Error parsing the configuration
file:", e);
+ }
+ }
}
\ No newline at end of file
Added: federation/trunk/picketlink-fed-core/src/main/resources/core-sts.xml
===================================================================
--- federation/trunk/picketlink-fed-core/src/main/resources/core-sts.xml
(rev 0)
+++ federation/trunk/picketlink-fed-core/src/main/resources/core-sts.xml 2011-01-05
19:03:12 UTC (rev 631)
@@ -0,0 +1,9 @@
+<PicketLinkSTS xmlns="urn:picketlink:identity-federation:config:1.0"
+ STSName="PicketLinkCoreSTS" TokenTimeout="7200"
EncryptToken="false">
+ <TokenProviders>
+ <TokenProvider
ProviderClass="org.picketlink.identity.federation.core.saml.v2.providers.SAML20AssertionTokenProvider"
+ TokenType="urn:oasis:names:tc:SAML:2.0:assertion"
+ TokenElement="Assertion"
+ TokenElementNS="urn:oasis:names:tc:SAML:2.0:assertion"/>
+ </TokenProviders>
+</PicketLinkSTS>
\ No newline at end of file
Modified:
federation/trunk/picketlink-web/src/main/java/org/picketlink/identity/federation/web/servlets/IDPServlet.java
===================================================================
---
federation/trunk/picketlink-web/src/main/java/org/picketlink/identity/federation/web/servlets/IDPServlet.java 2011-01-05
19:02:23 UTC (rev 630)
+++
federation/trunk/picketlink-web/src/main/java/org/picketlink/identity/federation/web/servlets/IDPServlet.java 2011-01-05
19:03:12 UTC (rev 631)
@@ -255,7 +255,12 @@
//Ensure the configuration in the STS
PicketLinkCoreSTS sts = PicketLinkCoreSTS.instance();
- sts.installDefaultConfiguration();
+ //Let us look for a file
+ String configPath = context.getRealPath( "/WEB-INF/picketlink-sts.xml"
);
+ if( configPath == null )
+ sts.installDefaultConfiguration();
+ else
+ sts.installDefaultConfiguration( configPath );
}
Modified:
federation/trunk/picketlink-web/src/test/java/org/picketlink/test/identity/federation/web/mock/MockServletContext.java
===================================================================
---
federation/trunk/picketlink-web/src/test/java/org/picketlink/test/identity/federation/web/mock/MockServletContext.java 2011-01-05
19:02:23 UTC (rev 630)
+++
federation/trunk/picketlink-web/src/test/java/org/picketlink/test/identity/federation/web/mock/MockServletContext.java 2011-01-05
19:03:12 UTC (rev 631)
@@ -130,7 +130,7 @@
public String getRealPath(String arg0)
{
- throw new RuntimeException("NYI");
+ return null;
}
public RequestDispatcher getRequestDispatcher(String arg0)
Show replies by date