[jboss-cvs] Picketlink SVN: r932 - trust/trunk/jbossws/src/main/java/org/picketlink/trust/jbossws/jaas.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Tue May 10 19:52:16 EDT 2011
Author: anil.saldhana at jboss.com
Date: 2011-05-10 19:52:16 -0400 (Tue, 10 May 2011)
New Revision: 932
Modified:
trust/trunk/jbossws/src/main/java/org/picketlink/trust/jbossws/jaas/JBWSTokenIssuingLoginModule.java
Log:
use overrideDispatch if needed
Modified: trust/trunk/jbossws/src/main/java/org/picketlink/trust/jbossws/jaas/JBWSTokenIssuingLoginModule.java
===================================================================
--- trust/trunk/jbossws/src/main/java/org/picketlink/trust/jbossws/jaas/JBWSTokenIssuingLoginModule.java 2011-05-10 23:51:18 UTC (rev 931)
+++ trust/trunk/jbossws/src/main/java/org/picketlink/trust/jbossws/jaas/JBWSTokenIssuingLoginModule.java 2011-05-10 23:52:16 UTC (rev 932)
@@ -21,18 +21,26 @@
*/
package org.picketlink.trust.jbossws.jaas;
+import java.security.Principal;
import java.util.List;
import java.util.Map;
+import java.util.Set;
+import javax.security.auth.login.LoginException;
import javax.xml.transform.Source;
-import javax.xml.ws.BindingProvider;
+import javax.xml.ws.Binding;
import javax.xml.ws.Dispatch;
import javax.xml.ws.handler.Handler;
+import org.jboss.logging.Logger;
+import org.picketlink.identity.federation.bindings.jboss.subject.PicketLinkPrincipal;
+import org.picketlink.identity.federation.core.util.StringUtil;
import org.picketlink.identity.federation.core.wstrust.STSClient;
import org.picketlink.identity.federation.core.wstrust.STSClientConfig;
import org.picketlink.identity.federation.core.wstrust.STSClientConfig.Builder;
+import org.picketlink.identity.federation.core.wstrust.SamlCredential;
import org.picketlink.identity.federation.core.wstrust.auth.STSIssuingLoginModule;
+import org.picketlink.trust.jbossws.PicketLinkDispatch;
import org.picketlink.trust.jbossws.handler.BinaryTokenHandler;
import org.picketlink.trust.jbossws.handler.SAML2Handler;
@@ -67,10 +75,43 @@
protected STSClient createWSTrustClient(STSClientConfig config)
{
return new JBWSTokenClient(config,options);
+ }
+
+ @SuppressWarnings("unchecked")
+ @Override
+ public boolean commit() throws LoginException
+ {
+ boolean result = super.commit();
+ if( result )
+ {
+ SamlCredential samlCredential = null;
+ Set<Object> creds = subject.getPublicCredentials();
+ for(Object cred: creds)
+ {
+ if( cred instanceof SamlCredential)
+ {
+ samlCredential = (SamlCredential) cred;
+ break;
+ }
+ }
+ if(samlCredential == null)
+ throw new LoginException("SamlCredential is not available in subject");
+ Principal principal = new PicketLinkPrincipal("");
+ if (super.isUseFirstPass())
+ {
+ this.sharedState.put("javax.security.auth.login.name", principal);
+ super.sharedState.put("javax.security.auth.login.password", samlCredential);
+ }
+
+ }
+ return result;
}
-
+
public class JBWSTokenClient extends STSClient
{
+ private Logger log = Logger.getLogger(JBWSTokenClient.class);
+ private boolean trace = log.isTraceEnabled();
+
public JBWSTokenClient()
{
super();
@@ -88,10 +129,26 @@
//Get pre-constructed Dispatch from super
Dispatch<Source> dispatch = super.getDispatch();
-
- BindingProvider bp = (BindingProvider) dispatch;
- List<Handler> handlers = bp.getBinding().getHandlerChain();
+
+ String overrideDispatchStr = (String) options.get("overrideDispatch");
+ if( StringUtil.isNotNull(overrideDispatchStr))
+ {
+ boolean bool = Boolean.valueOf(overrideDispatchStr);
+ if( bool )
+ {
+ dispatch = new PicketLinkDispatch(dispatch, (String) options.get("endpointAddress"));
+ String useWSSE = (String) options.get("useWSSE");
+ if( StringUtil.isNotNull(useWSSE) && useWSSE.equalsIgnoreCase("true"))
+ {
+ ((PicketLinkDispatch)dispatch).setUseWSSE(true);
+ }
+ }
+ }
+ Binding binding = dispatch.getBinding();
+
+ List<Handler> handlers = binding.getHandlerChain();
+
String handlerStr = (String) options.get("handlerChain");
//Lets utilize the login module options
@@ -107,15 +164,22 @@
handlers.add(samlHandler);
}
- bp.getBinding().setHandlerChain(handlers);
+ binding.setHandlerChain(handlers);
- //Check if we have security domain factory installed
- String secDomainFactory = SecurityActions.getSystemProperty("org.jboss.security.ssl.server.domain.name", null);
- if(secDomainFactory != null )
+ setDispatch(dispatch);
+
+ String securityDomainForFactory = (String) options.get("securityDomainForFactory");
+ if( StringUtil.isNotNull(securityDomainForFactory))
{
+ if(trace)
+ {
+ log.trace("We got security domain for domain ssl factory = " + securityDomainForFactory);
+ log.trace("Setting it on the system property org.jboss.security.ssl.domain.name");
+ }
+ SecurityActions.setSystemProperty("org.jboss.security.ssl.domain.name", securityDomainForFactory);
//StubExt.PROPERTY_SOCKET_FACTORY
- bp.getRequestContext().put( "org.jboss.ws.socketFactory",
- "org.jboss.security.ssl.JaasSecurityDomainServerSocketFactory");
+ dispatch.getRequestContext().put( "org.jboss.ws.socketFactory",
+ "org.jboss.security.ssl.JaasSecurityDomainSocketFactory");
}
}
}
More information about the jboss-cvs-commits
mailing list