[jboss-cvs] Picketlink SVN: r799 - federation/trunk/picketlink-bindings-jboss/src/main/java/org/picketlink/identity/federation/bindings/jboss/auth.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Tue Mar 8 17:42:15 EST 2011
Author: sguilhen at redhat.com
Date: 2011-03-08 17:42:15 -0500 (Tue, 08 Mar 2011)
New Revision: 799
Modified:
federation/trunk/picketlink-bindings-jboss/src/main/java/org/picketlink/identity/federation/bindings/jboss/auth/SAML2STSLoginModule.java
Log:
PLFED-136: SAML2STSLoginModule now accepts properties that can be used to configure the Dispatch instance that will be used to send requests to the STS.
Modified: federation/trunk/picketlink-bindings-jboss/src/main/java/org/picketlink/identity/federation/bindings/jboss/auth/SAML2STSLoginModule.java
===================================================================
--- federation/trunk/picketlink-bindings-jboss/src/main/java/org/picketlink/identity/federation/bindings/jboss/auth/SAML2STSLoginModule.java 2011-03-08 07:37:27 UTC (rev 798)
+++ federation/trunk/picketlink-bindings-jboss/src/main/java/org/picketlink/identity/federation/bindings/jboss/auth/SAML2STSLoginModule.java 2011-03-08 22:42:15 UTC (rev 799)
@@ -33,6 +33,8 @@
import javax.security.auth.callback.CallbackHandler;
import javax.security.auth.login.LoginException;
import javax.xml.datatype.XMLGregorianCalendar;
+import javax.xml.transform.Source;
+import javax.xml.ws.Dispatch;
import org.jboss.security.SecurityConstants;
import org.jboss.security.auth.callback.ObjectCallback;
@@ -64,7 +66,7 @@
* and included in the {@code Group} returned by the {@code getRoleSets} method.
* </p>
* <p>
- * This module defines module options:
+ * This module defines the following module options:
* <li>
* <ul>configFile - this property identifies the properties file that will be used to establish communication with
* the external security token service.
@@ -75,6 +77,14 @@
* if the cache.invalidation option is configured.
* </ul>
* </li>
+ * </p>
+ * <p>
+ * Any properties specified besides the above properties are assumed to be used to configure how the {@code STSClient}
+ * will connect to the STS. For example, the JBossWS {@code StubExt.PROPERTY_SOCKET_FACTORY} can be specified in order
+ * to inform the socket factory that must be used to connect to the STS. All properties will be set in the request
+ * context of the {@code Dispatch} instance used by the {@code STSClient} to send requests to the STS.
+ * </p>
+ * <p>
* An example of a {@code configFile} can be seen bellow:
* <pre>
* serviceName=PicketLinkSTS
@@ -110,6 +120,8 @@
protected String securityDomain = null;
+ protected Map<String, ?> options = null;
+
/*
* (non-Javadoc)
* @see org.jboss.security.auth.spi.AbstractServerLoginModule#initialize(javax.security.auth.Subject, javax.security.auth.callback.CallbackHandler, java.util.Map, java.util.Map)
@@ -119,18 +131,19 @@
Map<String, ?> options)
{
super.initialize(subject, callbackHandler, sharedState, options);
- // check if the options contain the name of the STS configuration file.
- this.stsConfigurationFile = (String) options.get("configFile");
-
- String cacheInvalidation = (String) options.get( "cache.invalidation" );
+ this.options = options;
+
+ // save the config file and cache validation options, removing them from the map - all remainig properties will
+ // be set in the request context of the Dispatch instance used to send requests to the STS.
+ this.stsConfigurationFile = (String) this.options.remove("configFile");
+ String cacheInvalidation = (String) this.options.remove( "cache.invalidation" );
if( cacheInvalidation != null && !cacheInvalidation.isEmpty() )
{
- enableCacheInvalidation = Boolean.parseBoolean( cacheInvalidation );
- securityDomain = (String) options.get( SecurityConstants.SECURITY_DOMAIN_OPTION );
- if( securityDomain == null || securityDomain.isEmpty() )
+ this.enableCacheInvalidation = Boolean.parseBoolean( cacheInvalidation );
+ this.securityDomain = (String) this.options.remove( SecurityConstants.SECURITY_DOMAIN_OPTION );
+ if( this.securityDomain == null || this.securityDomain.isEmpty() )
throw new RuntimeException( "Please configure option:" + SecurityConstants.SECURITY_DOMAIN_OPTION );
}
-
}
/*
@@ -339,6 +352,15 @@
protected STSClient getSTSClient()
{
Builder builder = new Builder(this.stsConfigurationFile);
- return new STSClient(builder.build());
+ STSClient client = new STSClient(builder.build());
+ // if the login module options map still contains any properties, assume they are for configuring the connection
+ // to the STS and set them in the Dispatch request context.
+ if (!this.options.isEmpty())
+ {
+ Dispatch<Source> dispatch = client.getDispatch();
+ for (Map.Entry<String, ?> entry : this.options.entrySet())
+ dispatch.getRequestContext().put(entry.getKey(), entry.getValue());
+ }
+ return client;
}
}
\ No newline at end of file
More information about the jboss-cvs-commits
mailing list