You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ws.apache.org by co...@apache.org on 2011/08/03 13:23:42 UTC

svn commit: r1153429 - in /webservices/wss4j/trunk/src: main/java/org/apache/ws/security/saml/ext/AssertionWrapper.java test/java/org/apache/ws/security/saml/SamlTokenTest.java test/java/org/apache/ws/security/saml/SignedSamlTokenHOKTest.java

Author: coheigea
Date: Wed Aug  3 11:23:41 2011
New Revision: 1153429

URL: http://svn.apache.org/viewvc?rev=1153429&view=rev
Log:
Provide an easy way to access the SignatureValue bytes of a received SAML Assertion.

Modified:
    webservices/wss4j/trunk/src/main/java/org/apache/ws/security/saml/ext/AssertionWrapper.java
    webservices/wss4j/trunk/src/test/java/org/apache/ws/security/saml/SamlTokenTest.java
    webservices/wss4j/trunk/src/test/java/org/apache/ws/security/saml/SignedSamlTokenHOKTest.java

Modified: webservices/wss4j/trunk/src/main/java/org/apache/ws/security/saml/ext/AssertionWrapper.java
URL: http://svn.apache.org/viewvc/webservices/wss4j/trunk/src/main/java/org/apache/ws/security/saml/ext/AssertionWrapper.java?rev=1153429&r1=1153428&r2=1153429&view=diff
==============================================================================
--- webservices/wss4j/trunk/src/main/java/org/apache/ws/security/saml/ext/AssertionWrapper.java (original)
+++ webservices/wss4j/trunk/src/main/java/org/apache/ws/security/saml/ext/AssertionWrapper.java Wed Aug  3 11:23:41 2011
@@ -31,6 +31,9 @@ import org.apache.ws.security.saml.ext.b
 
 import org.apache.ws.security.util.DOM2Writer;
 import org.apache.ws.security.util.UUIDGenerator;
+import org.apache.xml.security.exceptions.XMLSecurityException;
+import org.apache.xml.security.signature.XMLSignature;
+import org.apache.xml.security.signature.XMLSignatureException;
 
 import org.opensaml.common.SAMLVersion;
 import org.opensaml.common.SignableSAMLObject;
@@ -709,5 +712,33 @@ public class AssertionWrapper {
     public SAMLKeyInfo getSubjectKeyInfo() {
         return subjectKeyInfo;
     }
+    
+    /**
+     * Get the SignatureValue bytes of the signed SAML Assertion 
+     * @return the SignatureValue bytes of the signed SAML Assertion 
+     * @throws WSSecurityException
+     */
+    public byte[] getSignatureValue() throws WSSecurityException {
+        Signature sig = null;
+        if (saml2 != null && saml2.getSignature() != null) {
+            sig = saml2.getSignature();
+        } else if (saml1 != null && saml1.getSignature() != null) {
+            sig = saml1.getSignature();
+        }
+        if (sig != null) {
+            Element signatureElement = sig.getDOM();
+            
+            try {
+                // Use XML-Security class to obtain SignatureValue
+                XMLSignature xmlSignature = new XMLSignature(signatureElement, "");
+                return xmlSignature.getSignatureValue();
+            } catch (XMLSignatureException e) {
+                throw new WSSecurityException(WSSecurityException.FAILURE, "invalidSAMLsecurity");
+            } catch (XMLSecurityException e) {
+                throw new WSSecurityException(WSSecurityException.FAILURE, "invalidSAMLsecurity");
+            }
+        }
+        return null;
+    }
 
 }

Modified: webservices/wss4j/trunk/src/test/java/org/apache/ws/security/saml/SamlTokenTest.java
URL: http://svn.apache.org/viewvc/webservices/wss4j/trunk/src/test/java/org/apache/ws/security/saml/SamlTokenTest.java?rev=1153429&r1=1153428&r2=1153429&view=diff
==============================================================================
--- webservices/wss4j/trunk/src/test/java/org/apache/ws/security/saml/SamlTokenTest.java (original)
+++ webservices/wss4j/trunk/src/test/java/org/apache/ws/security/saml/SamlTokenTest.java Wed Aug  3 11:23:41 2011
@@ -103,6 +103,7 @@ public class SamlTokenTest extends org.j
             (AssertionWrapper) actionResult.get(WSSecurityEngineResult.TAG_SAML_ASSERTION);
         assertTrue(receivedAssertion != null);
         assertTrue(!receivedAssertion.isSigned());
+        assertTrue(receivedAssertion.getSignatureValue() == null);
     }
     
     /**

Modified: webservices/wss4j/trunk/src/test/java/org/apache/ws/security/saml/SignedSamlTokenHOKTest.java
URL: http://svn.apache.org/viewvc/webservices/wss4j/trunk/src/test/java/org/apache/ws/security/saml/SignedSamlTokenHOKTest.java?rev=1153429&r1=1153428&r2=1153429&view=diff
==============================================================================
--- webservices/wss4j/trunk/src/test/java/org/apache/ws/security/saml/SignedSamlTokenHOKTest.java (original)
+++ webservices/wss4j/trunk/src/test/java/org/apache/ws/security/saml/SignedSamlTokenHOKTest.java Wed Aug  3 11:23:41 2011
@@ -128,6 +128,7 @@ public class SignedSamlTokenHOKTest exte
             (AssertionWrapper) actionResult.get(WSSecurityEngineResult.TAG_SAML_ASSERTION);
         assertTrue(receivedAssertion != null);
         assertTrue(receivedAssertion.isSigned());
+        assertTrue(receivedAssertion.getSignatureValue() != null);
         
         // Test we processed a signature (SOAP body)
         actionResult = WSSecurityUtil.fetchActionResult(results, WSConstants.SIGN);