[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