[jboss-cvs] Picketlink SVN: r205 - in federation/trunk: picketlink-bindings/src/test/java/org/picketlink/test/identity/federation/bindings/workflow and 7 other directories.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Fri Apr 9 15:27:56 EDT 2010


Author: anil.saldhana at jboss.com
Date: 2010-04-09 15:27:55 -0400 (Fri, 09 Apr 2010)
New Revision: 205

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/workflow/SAML2LogoutTomcatWorkflowUnitTestCase.java
   federation/trunk/picketlink-fed-core/src/main/java/org/picketlink/identity/federation/core/saml/v2/impl/DefaultSAML2HandlerResponse.java
   federation/trunk/picketlink-fed-core/src/main/java/org/picketlink/identity/federation/core/saml/v2/interfaces/SAML2HandlerResponse.java
   federation/trunk/picketlink-web/src/main/java/org/picketlink/identity/federation/web/core/IdentityServer.java
   federation/trunk/picketlink-web/src/main/java/org/picketlink/identity/federation/web/handlers/saml2/SAML2AuthenticationHandler.java
   federation/trunk/picketlink-web/src/main/java/org/picketlink/identity/federation/web/handlers/saml2/SAML2LogOutHandler.java
   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/util/IDPWebRequestUtil.java
   federation/trunk/picketlink-web/src/test/java/org/picketlink/test/identity/federation/web/workflow/saml2/SAML2LogoutWorkflowUnitTestCase.java
Log:
PLFED-59: IDPWebBrowserSSOValve takes the binding of participant in GLO

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	2010-04-09 15:57:03 UTC (rev 204)
+++ federation/trunk/picketlink-bindings/src/main/java/org/picketlink/identity/federation/bindings/tomcat/idp/IDPWebBrowserSSOValve.java	2010-04-09 19:27:55 UTC (rev 205)
@@ -94,6 +94,7 @@
 import org.picketlink.identity.federation.web.util.IDPWebRequestUtil;
 import org.picketlink.identity.federation.web.util.RedirectBindingSignatureUtil;
 import org.picketlink.identity.federation.web.util.RedirectBindingUtil;
+import org.picketlink.identity.federation.web.util.IDPWebRequestUtil.WebRequestUtilHolder;
 import org.w3c.dom.Document;
 
 
@@ -259,13 +260,25 @@
               webRequestUtil.getErrorResponse(referer, 
                   JBossSAMLURIConstants.STATUS_AUTHNFAILED.get(), 
                   this.identityURL, this.signOutgoingMessages); 
+            
+            WebRequestUtilHolder holder = webRequestUtil.getHolder();
+            holder.setResponseDoc(samlErrorResponse).setDestination(referer).setRelayState(relayState).setAreWeSendingRequest(false)
+            .setPrivateKey(null).setSupportSignature(false).setServletResponse(response);
+            holder.setPostBindingRequested( webRequestUtil.hasSAMLRequestInPostProfile() );
          
             if(this.signOutgoingMessages)
-               webRequestUtil.send(samlErrorResponse, referer, relayState, response, true, 
-                     this.keyManager.getSigningKey(), false);
+            {
+               holder.setSupportSignature(true).setPrivateKey( keyManager.getSigningKey() );
+               webRequestUtil.send(holder);
+               //webRequestUtil.send(samlErrorResponse, referer, relayState, response, true, 
+               //this.keyManager.getSigningKey(), false); 
+            } 
             else
-               webRequestUtil.send(samlErrorResponse, referer,relayState, response, false,null, false);
-            
+            {
+               //  webRequestUtil.send(samlErrorResponse, referer,relayState, response, false,null, false);
+               
+            }
+            webRequestUtil.send(holder);  
          } 
          catch (GeneralSecurityException e)
          {
@@ -321,7 +334,9 @@
          Document samlResponse = null;
          String destination = null;
          
+         Boolean requestedPostProfile = null;
          
+         
          //Send valid saml response after processing the request
          if(samlRequestMessage != null)
          {
@@ -419,6 +434,7 @@
                   
                   destination = saml2HandlerResponse.getDestination(); 
                   
+                  requestedPostProfile = saml2HandlerResponse.isPostBindingForResponse(); 
                }
                catch (IssuerNotTrustedException e)
                {
@@ -478,15 +494,26 @@
                {
                   try
                   {
-                     if(webRequestUtil.hasSAMLRequestInPostProfile())
+                     boolean postProfile = webRequestUtil.hasSAMLRequestInPostProfile();
+                     if( postProfile )
                         recycle(response);
                      
+
+                     WebRequestUtilHolder holder = webRequestUtil.getHolder();
+                     holder.setResponseDoc(samlResponse).setDestination(destination).setRelayState(relayState).setAreWeSendingRequest(willSendRequest)
+                     .setPrivateKey(null).setSupportSignature(false).setServletResponse(response);
+                     
+                     if( requestedPostProfile != null )
+                        holder.setPostBindingRequested( requestedPostProfile );
+                     else
+                        holder.setPostBindingRequested(postProfile);
+                     
                      if(this.signOutgoingMessages)
-                        webRequestUtil.send(samlResponse, destination,relayState, response, true, 
-                              this.keyManager.getSigningKey(), willSendRequest);
-                     else
-                        webRequestUtil.send(samlResponse, destination, relayState, response, false,null, 
-                              willSendRequest);
+                     { 
+                        holder.setPrivateKey( keyManager.getSigningKey() ).setSupportSignature( true );
+                     } 
+
+                     webRequestUtil.send(holder);
                   }
                   catch (ParsingException e)
                   {
@@ -579,6 +606,7 @@
                relayState = saml2HandlerResponse.getRelayState();
                
                destination = saml2HandlerResponse.getDestination();
+               requestedPostProfile = saml2HandlerResponse.isPostBindingForResponse();
             }
             catch (IssuerNotTrustedException e)
             {
@@ -638,15 +666,25 @@
             {
                try
                {
-                  if(webRequestUtil.hasSAMLRequestInPostProfile())
+                  boolean postProfile = webRequestUtil.hasSAMLRequestInPostProfile(); 
+                  if( postProfile )
                      recycle(response);
                   
+                  WebRequestUtilHolder holder = webRequestUtil.getHolder();
+                  holder.setResponseDoc(samlResponse).setDestination(destination).setRelayState(relayState).setAreWeSendingRequest(willSendRequest)
+                  .setPrivateKey(null).setSupportSignature(false).setServletResponse(response).setPostBindingRequested( requestedPostProfile );
+                  
+                  if( requestedPostProfile != null )
+                     holder.setPostBindingRequested( requestedPostProfile );
+                  else
+                     holder.setPostBindingRequested(postProfile);
+                  
+                  
                   if(this.signOutgoingMessages)
-                     webRequestUtil.send(samlResponse, destination,relayState, response, true, 
-                           this.keyManager.getSigningKey(), willSendRequest);
-                  else
-                     webRequestUtil.send(samlResponse, destination, relayState, response, false,null, 
-                           willSendRequest);
+                  { 
+                     holder.setPrivateKey( keyManager.getSigningKey() ).setSupportSignature( true );
+                  }  
+                  webRequestUtil.send( holder );
                }
                catch (ParsingException e)
                {
@@ -686,14 +724,22 @@
                this.identityURL, this.signOutgoingMessages);
       try
       {
-         if(webRequestUtil.hasSAMLRequestInPostProfile())
+
+         boolean postProfile = webRequestUtil.hasSAMLRequestInPostProfile(); 
+         if( postProfile )
             recycle(response);
          
+
+         WebRequestUtilHolder holder = webRequestUtil.getHolder();
+         holder.setResponseDoc(samlResponse).setDestination(referrer).setRelayState(relayState).setAreWeSendingRequest( false )
+         .setPrivateKey(null).setSupportSignature(false).setServletResponse(response);
+         holder.setPostBindingRequested(postProfile);
+         
          if(this.signOutgoingMessages)
-            webRequestUtil.send(samlResponse, referrer, relayState, response, true, 
-                  this.keyManager.getSigningKey(), false);
-         else
-            webRequestUtil.send(samlResponse, referrer, relayState, response, false,null, false);
+         { 
+            holder.setPrivateKey(keyManager.getSigningKey()).setSupportSignature(true);
+         } 
+         webRequestUtil.send(holder);
       }
       catch (ParsingException e1)
       {

Modified: federation/trunk/picketlink-bindings/src/test/java/org/picketlink/test/identity/federation/bindings/workflow/SAML2LogoutTomcatWorkflowUnitTestCase.java
===================================================================
--- federation/trunk/picketlink-bindings/src/test/java/org/picketlink/test/identity/federation/bindings/workflow/SAML2LogoutTomcatWorkflowUnitTestCase.java	2010-04-09 15:57:03 UTC (rev 204)
+++ federation/trunk/picketlink-bindings/src/test/java/org/picketlink/test/identity/federation/bindings/workflow/SAML2LogoutTomcatWorkflowUnitTestCase.java	2010-04-09 19:27:55 UTC (rev 205)
@@ -329,8 +329,8 @@
       IdentityServer server = new IdentityServer();
       server.sessionCreated(new HttpSessionEvent(session));
       
-      server.stack().register(session.getId(), sales);
-      server.stack().register(session.getId(), employee);
+      server.stack().register(session.getId(), sales, false);
+      server.stack().register(session.getId(), employee, false);
       return server;
    }  
 }
\ No newline at end of file

Modified: federation/trunk/picketlink-fed-core/src/main/java/org/picketlink/identity/federation/core/saml/v2/impl/DefaultSAML2HandlerResponse.java
===================================================================
--- federation/trunk/picketlink-fed-core/src/main/java/org/picketlink/identity/federation/core/saml/v2/impl/DefaultSAML2HandlerResponse.java	2010-04-09 15:57:03 UTC (rev 204)
+++ federation/trunk/picketlink-fed-core/src/main/java/org/picketlink/identity/federation/core/saml/v2/impl/DefaultSAML2HandlerResponse.java	2010-04-09 19:27:55 UTC (rev 205)
@@ -43,7 +43,9 @@
    private boolean errorMode;
    private boolean sendRequest;
    
+   private boolean postBinding = true;
    
+   
 
    /**
     * @see SAML2HandlerResponse#getRelayState()
@@ -144,13 +146,35 @@
       return this.errorMode;
    }
 
+   /**
+    * @see SAML2HandlerResponse#getSendRequest()
+    */
    public boolean getSendRequest()
    { 
       return this.sendRequest;
    }
-
+   
+   /**
+    * @see SAML2HandlerResponse#setSendRequest(boolean)
+    */
    public void setSendRequest(boolean request)
    { 
       this.sendRequest = request;
    }
+
+   /**
+    * @see SAML2HandlerResponse#setPostBindingForResponse(boolean)
+    */
+   public void setPostBindingForResponse(boolean postB)
+   {
+      this.postBinding = postB;
+   }
+ 
+   /**
+    * @see SAML2HandlerResponse#isPostBindingForResponse()
+    */
+   public boolean isPostBindingForResponse()
+   { 
+      return this.postBinding;
+   }
 }
\ No newline at end of file

Modified: federation/trunk/picketlink-fed-core/src/main/java/org/picketlink/identity/federation/core/saml/v2/interfaces/SAML2HandlerResponse.java
===================================================================
--- federation/trunk/picketlink-fed-core/src/main/java/org/picketlink/identity/federation/core/saml/v2/interfaces/SAML2HandlerResponse.java	2010-04-09 15:57:03 UTC (rev 204)
+++ federation/trunk/picketlink-fed-core/src/main/java/org/picketlink/identity/federation/core/saml/v2/interfaces/SAML2HandlerResponse.java	2010-04-09 19:27:55 UTC (rev 205)
@@ -120,4 +120,16 @@
     * @return
     */
    boolean getSendRequest();
+   
+   /**
+    * Set whether the response should be using the Post Binding
+    * @param postB
+    */ 
+   void setPostBindingForResponse(boolean postB);
+   
+   /**
+    * Should the response be in post binding?
+    * @return
+    */
+   boolean isPostBindingForResponse();
 }
\ No newline at end of file

Modified: federation/trunk/picketlink-web/src/main/java/org/picketlink/identity/federation/web/core/IdentityServer.java
===================================================================
--- federation/trunk/picketlink-web/src/main/java/org/picketlink/identity/federation/web/core/IdentityServer.java	2010-04-09 15:57:03 UTC (rev 204)
+++ federation/trunk/picketlink-web/src/main/java/org/picketlink/identity/federation/web/core/IdentityServer.java	2010-04-09 19:27:55 UTC (rev 205)
@@ -68,6 +68,8 @@
       private ConcurrentHashMap<String, Set<String>> inTransitMap =
          new ConcurrentHashMap<String, Set<String>>();
       
+      private ConcurrentHashMap<String, Boolean> postBindingMap = new ConcurrentHashMap<String, Boolean>();
+      
       /**
        * Peek at the most recent participant in the session
        * @param sessionID
@@ -102,7 +104,7 @@
        * @param sessionID
        * @param participant
        */
-      public void register(String sessionID, String participant)
+      public void register(String sessionID, String participant, boolean postBinding)
       {
          Stack<String> stack = sessionParticipantsMap.get(sessionID);
          if(stack == null)
@@ -111,7 +113,10 @@
             sessionParticipantsMap.put(sessionID, stack );
          }
          if(stack.contains(participant) == false)
+         {
             stack.push(participant); 
+            postBindingMap.put(participant, Boolean.valueOf( postBinding ));
+         } 
       }
 
       /**
@@ -157,7 +162,10 @@
       {
          Set<String> transitSet = inTransitMap.get(sessionID);
          if(transitSet != null)
+         {
+            postBindingMap.remove( participant );
             return transitSet.remove(participant);
+         }
          return false;
       }
       
@@ -175,6 +183,22 @@
       }
       
       /**
+       * <p>
+       * For a particular participant, indicate whether it supports
+       * POST or REDIRECT binding.
+       * </p>
+       * <p>
+       * <b>NOTE:</b> true: POST, false: REDIRECT, null: does not exist
+       * </p>
+       * @param participant
+       * @return
+       */
+      public Boolean getBinding(  String participant )
+      {
+         return postBindingMap.get(participant);
+      }
+      
+      /**
        * The total number of sessions active
        * @return
        */

Modified: federation/trunk/picketlink-web/src/main/java/org/picketlink/identity/federation/web/handlers/saml2/SAML2AuthenticationHandler.java
===================================================================
--- federation/trunk/picketlink-web/src/main/java/org/picketlink/identity/federation/web/handlers/saml2/SAML2AuthenticationHandler.java	2010-04-09 15:57:03 UTC (rev 204)
+++ federation/trunk/picketlink-web/src/main/java/org/picketlink/identity/federation/web/handlers/saml2/SAML2AuthenticationHandler.java	2010-04-09 19:27:55 UTC (rev 205)
@@ -166,12 +166,14 @@
                   assertionValidity, art.getID());
             
             //Update the Identity Server
+            boolean isPost = httpContext.getRequest().getMethod().equalsIgnoreCase( "POST" );
             IdentityServer identityServer = (IdentityServer) servletContext.getAttribute(GeneralConstants.IDENTITY_SERVER);
-            identityServer.stack().register(session.getId(), destination);
+            identityServer.stack().register(session.getId(), destination, isPost );
             
             response.setDestination(destination);
             response.setResultingDocument(samlResponse); 
             response.setRelayState(request.getRelayState());
+            response.setPostBindingForResponse( isPost );
          }
          catch(Exception e)
          {

Modified: federation/trunk/picketlink-web/src/main/java/org/picketlink/identity/federation/web/handlers/saml2/SAML2LogOutHandler.java
===================================================================
--- federation/trunk/picketlink-web/src/main/java/org/picketlink/identity/federation/web/handlers/saml2/SAML2LogOutHandler.java	2010-04-09 15:57:03 UTC (rev 204)
+++ federation/trunk/picketlink-web/src/main/java/org/picketlink/identity/federation/web/handlers/saml2/SAML2LogOutHandler.java	2010-04-09 19:27:55 UTC (rev 205)
@@ -184,6 +184,10 @@
             {
                generateSuccessStatusResponseType(statusResponseType.getInResponseTo(),
                      request, response, relayState);
+               Boolean isPost = server.stack().getBinding( relayState );
+               if( isPost == null )
+                  isPost = Boolean.TRUE;
+               response.setPostBindingForResponse( isPost.booleanValue() );
             }
             catch (Exception e)
             {
@@ -196,7 +200,11 @@
          {
             //Put the participant in transit mode
             server.stack().registerTransitParticipant(sessionID, nextParticipant);
-                      
+            Boolean isPost = server.stack().getBinding( nextParticipant );
+            if( isPost == null )
+               isPost = Boolean.TRUE;
+            response.setPostBindingForResponse( isPost.booleanValue() );
+            
             //send logout request to participant with relaystate to orig
             response.setRelayState(relayState);
             
@@ -247,8 +255,13 @@
                session.invalidate();
                server.stack().pop(sessionID);
                
+               Boolean isPost = server.stack().getBinding( participant );
+               if( isPost == null )
+                  isPost = Boolean.TRUE;
+               
                generateSuccessStatusResponseType(logOutRequest.getID(),
                      request, response, originalIssuer);
+               response.setPostBindingForResponse( isPost.booleanValue() );
                response.setSendRequest(false);
             }
             else
@@ -264,7 +277,13 @@
                
                response.setDestination(participant);
                
+               Boolean isPost = server.stack().getBinding(participant);
+               if( isPost == null )
+                  isPost = Boolean.TRUE;
                
+               response.setPostBindingForResponse( isPost );
+               
+               
                LogoutRequestType lort = saml2Request.createLogoutRequest(request.getIssuer().getValue());
 
                long assertionValidity = (Long) request.getOptions().get(GeneralConstants.ASSERTIONS_VALIDITY);

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	2010-04-09 15:57:03 UTC (rev 204)
+++ federation/trunk/picketlink-web/src/main/java/org/picketlink/identity/federation/web/servlets/IDPServlet.java	2010-04-09 19:27:55 UTC (rev 205)
@@ -80,6 +80,7 @@
 import org.picketlink.identity.federation.web.util.ConfigurationUtil;
 import org.picketlink.identity.federation.web.util.IDPWebRequestUtil;
 import org.picketlink.identity.federation.web.util.RedirectBindingSignatureUtil;
+import org.picketlink.identity.federation.web.util.IDPWebRequestUtil.WebRequestUtilHolder;
 import org.w3c.dom.Document;
 
 
@@ -502,11 +503,23 @@
             if(samlResponse == null)
                throw new ServletException("SAML Response has not been generated");
 
+
+
+            WebRequestUtilHolder holder = webRequestUtil.getHolder();
+            holder.setResponseDoc(samlResponse).setDestination(destination).setRelayState(relayState).setAreWeSendingRequest( willSendRequest )
+            .setPrivateKey(null).setSupportSignature(false).setServletResponse(response);
+            holder.setPostBindingRequested(true);
+            
             if(this.signOutgoingMessages)
-               webRequestUtil.send(samlResponse, destination,relayState, response, true, 
-                     this.keyManager.getSigningKey(), willSendRequest);
+            {
+               holder.setPrivateKey( keyManager.getSigningKey() ).setSupportSignature(true);
+               /*webRequestUtil.send(samlResponse, destination,relayState, response, true, 
+                     this.keyManager.getSigningKey(), willSendRequest);*/
+            }
+            /*   
             else
-               webRequestUtil.send(samlResponse, destination, relayState, response, false,null, willSendRequest);
+               webRequestUtil.send(samlResponse, destination, relayState, response, false,null, willSendRequest);*/
+            webRequestUtil.send(holder);
          }
          catch (ParsingException e)
          {
@@ -531,11 +544,21 @@
                this.identityURL, this.signOutgoingMessages);
       try
       {   
+         WebRequestUtilHolder holder = webRequestUtil.getHolder();
+         holder.setResponseDoc(samlResponse).setDestination(referrer).setRelayState(relayState).setAreWeSendingRequest( false )
+         .setPrivateKey(null).setSupportSignature(false).setServletResponse(response);
+         holder.setPostBindingRequested(true);
+         
          if(this.signOutgoingMessages)
-            webRequestUtil.send(samlResponse, referrer, relayState, response, true, 
-                  this.keyManager.getSigningKey(), false);
-         else
-            webRequestUtil.send(samlResponse, referrer, relayState, response, false,null, false);
+         {
+            holder.setPrivateKey( keyManager.getSigningKey() ).setSupportSignature( true );
+            /*webRequestUtil.send(samlResponse, referrer, relayState, response, true, 
+                  this.keyManager.getSigningKey(), false);*/
+         }
+            
+        /* else
+            webRequestUtil.send(samlResponse, referrer, relayState, response, false,null, false);*/
+         webRequestUtil.send(holder);
       }
       catch (ParsingException e1)
       {

Modified: federation/trunk/picketlink-web/src/main/java/org/picketlink/identity/federation/web/util/IDPWebRequestUtil.java
===================================================================
--- federation/trunk/picketlink-web/src/main/java/org/picketlink/identity/federation/web/util/IDPWebRequestUtil.java	2010-04-09 15:57:03 UTC (rev 204)
+++ federation/trunk/picketlink-web/src/main/java/org/picketlink/identity/federation/web/util/IDPWebRequestUtil.java	2010-04-09 19:27:55 UTC (rev 205)
@@ -327,7 +327,7 @@
     * @throws GeneralSecurityException 
     * @throws IOException  
     */
-   public void send(Document responseDoc, String destination,
+  /* public void send(Document responseDoc, String destination,
          String relayState, 
          HttpServletResponse response, 
          boolean supportSignature,
@@ -375,8 +375,70 @@
          PostBindingUtil.sendPost(new DestinationInfoHolder(destination, 
                samlResponse, relayState), response, sendRequest);
       }
-   }
+   }*/
    
+   /** 
+    * Send a response
+    * @param responseDoc
+    * @param relayState
+    * @param response 
+    * @throws GeneralSecurityException 
+    * @throws IOException  
+    */
+   public void send( WebRequestUtilHolder holder) throws GeneralSecurityException, IOException
+   {
+      Document responseDoc = holder.getResponseDoc();
+      
+      if( responseDoc == null )
+         throw new IllegalArgumentException("responseType is null");
+
+      String destination = holder.getDestination();
+      String relayState = holder.getRelayState();
+      boolean supportSignature = holder.isSupportSignature();
+      boolean sendRequest = holder.isAreWeSendingRequest();
+      HttpServletResponse response = holder.getServletResponse();
+      
+      if(holder.isPostBindingRequested() == false)
+      { 
+         byte[] responseBytes = DocumentUtil.getDocumentAsString(responseDoc).getBytes("UTF-8"); 
+         
+         String urlEncodedResponse = RedirectBindingUtil.deflateBase64URLEncode(responseBytes);
+ 
+         
+         if(trace) log.trace("IDP:Destination=" + destination);
+
+         if(isNotNull(relayState))
+            relayState = RedirectBindingUtil.urlEncode(relayState);
+
+         String finalDest = destination + getDestination(urlEncodedResponse, relayState, 
+               supportSignature, sendRequest);
+         if(trace) log.trace("Redirecting to="+ finalDest);
+         HTTPRedirectUtil.sendRedirectForResponder(finalDest, response); 
+      }  
+      else
+      {   
+         //If we support signature
+         if(supportSignature)
+         {
+            //Sign the document
+            SAML2Signature samlSignature = new SAML2Signature();
+
+            KeyPair keypair = keyManager.getSigningKeyPair();
+            samlSignature.signSAMLDocument(responseDoc, keypair); 
+            
+            if(trace)
+               log.trace("Sending over to SP:" + DocumentUtil.asString(responseDoc)); 
+         }
+         byte[] responseBytes = DocumentUtil.getDocumentAsString(responseDoc).getBytes("UTF-8"); 
+         
+         String samlResponse = PostBindingUtil.base64Encode(new String(responseBytes));
+         
+         PostBindingUtil.sendPost(new DestinationInfoHolder(destination, 
+               samlResponse, relayState), response, sendRequest);
+      }
+   }  
+   
+   
    /**
     * Generate a Destination URL for the HTTPRedirect binding
     * with the saml response and relay state
@@ -414,6 +476,11 @@
       return sb.toString();
    }
    
+   public WebRequestUtilHolder getHolder()
+   {
+      return new WebRequestUtilHolder();
+   }
+   
    /**
     * Create an Error Response
     * @param responseURL
@@ -509,4 +576,89 @@
       URL url = new URL(domainURL);
       return url.getHost();
    }
+   
+   public class WebRequestUtilHolder
+   { 
+      private Document responseDoc;
+      private String relayState;
+      private String destination;
+      private HttpServletResponse servletResponse;
+      private PrivateKey privateKey;
+      private boolean supportSignature;
+      private boolean postBindingRequested;
+      private boolean areWeSendingRequest;
+      public Document getResponseDoc()
+      {
+         return responseDoc;
+      }
+      
+      public WebRequestUtilHolder setResponseDoc(Document responseDoc)
+      {
+         this.responseDoc = responseDoc;
+         return this;
+      }
+      public String getRelayState()
+      {
+         return relayState;
+      }
+      public WebRequestUtilHolder setRelayState(String relayState)
+      {
+         this.relayState = relayState;
+         return this;
+      }
+      public String getDestination()
+      {
+         return destination;
+      }
+      public WebRequestUtilHolder setDestination(String destination)
+      {
+         this.destination = destination;
+         return this;
+      }
+      public HttpServletResponse getServletResponse()
+      {
+         return servletResponse;
+      }
+      public WebRequestUtilHolder setServletResponse(HttpServletResponse servletResponse)
+      {
+         this.servletResponse = servletResponse;
+         return this;
+      }
+      public PrivateKey getPrivateKey()
+      {
+         return privateKey;
+      }
+      public WebRequestUtilHolder setPrivateKey(PrivateKey privateKey)
+      {
+         this.privateKey = privateKey;
+         return this;
+      }
+      public boolean isSupportSignature()
+      {
+         return supportSignature;
+      }
+      public WebRequestUtilHolder setSupportSignature(boolean supportSignature)
+      {
+         this.supportSignature = supportSignature;
+         return this;
+      }
+      public boolean isPostBindingRequested()
+      {
+         return postBindingRequested;
+      }
+      public WebRequestUtilHolder setPostBindingRequested(boolean postBindingRequested)
+      {
+         this.postBindingRequested = postBindingRequested;
+         return this;
+      }
+      public boolean isAreWeSendingRequest()
+      {
+         return areWeSendingRequest;
+      }
+      public WebRequestUtilHolder setAreWeSendingRequest(boolean areWeSendingRequest)
+      {
+         this.areWeSendingRequest = areWeSendingRequest;
+         return this;
+      }  
+   }
 }
\ No newline at end of file

Modified: federation/trunk/picketlink-web/src/test/java/org/picketlink/test/identity/federation/web/workflow/saml2/SAML2LogoutWorkflowUnitTestCase.java
===================================================================
--- federation/trunk/picketlink-web/src/test/java/org/picketlink/test/identity/federation/web/workflow/saml2/SAML2LogoutWorkflowUnitTestCase.java	2010-04-09 15:57:03 UTC (rev 204)
+++ federation/trunk/picketlink-web/src/test/java/org/picketlink/test/identity/federation/web/workflow/saml2/SAML2LogoutWorkflowUnitTestCase.java	2010-04-09 19:27:55 UTC (rev 205)
@@ -314,8 +314,8 @@
       IdentityServer server = new IdentityServer();
       server.sessionCreated(new HttpSessionEvent(session));
       
-      server.stack().register(session.getId(), sales);
-      server.stack().register(session.getId(), employee);
+      server.stack().register( session.getId(), sales, false );
+      server.stack().register( session.getId(), employee, false );
       return server;
    }
 }
\ No newline at end of file




More information about the jboss-cvs-commits mailing list