[jboss-cvs] Picketlink SVN: r631 - in federation/trunk: picketlink-bindings/src/test/java/org/picketlink/test/identity/federation/bindings/mock and 4 other directories.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Wed Jan 5 14:03:14 EST 2011


Author: anil.saldhana at 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)



More information about the jboss-cvs-commits mailing list