[
https://issues.apache.org/jira/browse/WSS-213?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12772002#action_12772002
]
Jay Blanton commented on WSS-213:
---------------------------------
Colm...thanks again for your help.
Here is a sample class for background.
This is a class we built with BEA support so that we could implement SAML
Sender Vouches (version 1.1) and just a digital signature of the SAML Assertion.
It uses just OpenSAML.
package foo.opensaml;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.security.Key;
import java.security.KeyStore;
import java.security.KeyStoreException;
import java.security.NoSuchAlgorithmException;
import java.security.UnrecoverableKeyException;
import java.security.cert.Certificate;
import java.security.cert.CertificateException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
import java.util.Date;
import java.util.List;
import java.util.Set;
import org.apache.commons.io.IOUtils;
import org.apache.commons.lang.BooleanUtils;
import org.apache.commons.lang.StringUtils;
import org.apache.xml.security.signature.XMLSignature;
import org.opensaml.SAMLAssertion;
import org.opensaml.SAMLAttribute;
import org.opensaml.SAMLAttributeStatement;
import org.opensaml.SAMLAuthenticationStatement;
import org.opensaml.SAMLException;
import org.opensaml.SAMLNameIdentifier;
import org.opensaml.SAMLResponse;
import org.opensaml.SAMLSignedObject;
import org.opensaml.SAMLSubject;
import org.opensaml.SAMLSubjectStatement;
import org.springframework.core.io.ClassPathResource;
import org.springframework.core.io.DefaultResourceLoader;
import org.springframework.core.io.ResourceLoader;
/**
* The Class SAMLAuthenticationHandler.
*/
public class SAMLAuthenticationHandler {
/** The Constant ASSERTION_ISSUER. */
public static final String ASSERTION_ISSUER = "assertion.issuer";
/** The Constant CERTIFICATE_PASSWORD. */
public static final String CERTIFICATE_PASSWORD =
"certificate.password";
/** The Constant CERTIFICATE_ALIAS. */
public static final String CERTIFICATE_ALIAS = "certificate.alias";
/** The Constant CERTIFICATE_KEYSTORE_PATH. */
public static final String CERTIFICATE_KEYSTORE_PATH =
"certificate.keystore.path";
/** The Constant ASSERTION_SIGN. */
public static final String ASSERTION_SIGN = "assertion.sign";
/** The Constant ASSERTION_USERNAME. */
public static final String ASSERTION_USERNAME = "assertion.username";
/** The Constant SIGNATURE_INCLUDECERT. */
public static final String SIGNATURE_INCLUDECERT =
"signature.includecert";
/** The Constant SAML_ASSERTION. */
public static final String SAML_ASSERTION = "SAML.Assertion";
/** The Constant SAML_ASSERTION_CERTPATH. */
public static final String SAML_ASSERTION_CERTPATH =
"SAML.Assertion.Certpath";
private String credentialType = SAML_ASSERTION;
private String assertionUserName;
private boolean signAssertion = false;
private Set<?> groups = Collections.EMPTY_SET;
private long notBeforeMs;
private long notAfterMs;
private String certKeystorePath;
private String certKeystoreType = "JKS";
private String certAlias;
private String certPassword;
private String assertionIssuer;
private String recipient;
/**
* Instantiates a new SAML authentication handler.
*
* @param config
* the config
*/
public SAMLAuthenticationHandler() {
super();
}
/**
* Handle request.
*
* @return the SOAP header block
*/
public String getSamlAssertion() {
String assertion = getSAMLAssertion(assertionUserName, //
username
groups, // groups
signAssertion, // isSigned
notBeforeMs, // not before condition
notAfterMs, // not after condition
certKeystorePath, // keystore uri
certKeystoreType, // trusted keystore type
certAlias, // trusted cert alias
certPassword, // trusted cert alias password
credentialType, // credentialType
assertionIssuer, // issuerURI
recipient // recipient
);
System.out.println(assertion);
return assertion;
}
public String getCredentialType() {
return credentialType;
}
public void setCredentialType(String credentialType) {
this.credentialType = credentialType;
}
public String getAssertionUserName() {
return assertionUserName;
}
public void setAssertionUserName(String assertionUserName) {
this.assertionUserName = assertionUserName;
}
public boolean isSignAssertion() {
return signAssertion;
}
public void setSignAssertion(boolean signAssertion) {
this.signAssertion = signAssertion;
}
public void setSignAssertion(String signAssertion) {
this.signAssertion = BooleanUtils.toBoolean(signAssertion);
}
public Set<?> getGroups() {
return groups;
}
public void setGroups(Set<?> groups) {
this.groups = groups;
}
public long getNotBeforeMs() {
return notBeforeMs;
}
public void setNotBeforeMs(long notBeforeMs) {
this.notBeforeMs = notBeforeMs;
}
public long getNotAfterMs() {
return notAfterMs;
}
public void setNotAfterMs(long notAfterMs) {
this.notAfterMs = notAfterMs;
}
public String getCertKeystorePath() {
return certKeystorePath;
}
public void setCertKeystorePath(String certKeystorePath) {
this.certKeystorePath = certKeystorePath;
}
public String getCertKeystoreType() {
return certKeystoreType;
}
public void setCertKeystoreType(String certKeystoreType) {
this.certKeystoreType = certKeystoreType;
}
public String getCertAlias() {
return certAlias;
}
public void setCertAlias(String certAlias) {
this.certAlias = certAlias;
}
public String getCertPassword() {
return certPassword;
}
public void setCertPassword(String certPassword) {
this.certPassword = certPassword;
}
public String getAssertionIssuer() {
return assertionIssuer;
}
public void setAssertionIssuer(String assertionIssuer) {
this.assertionIssuer = assertionIssuer;
}
public String getRecipient() {
return recipient;
}
public void setRecipient(String recipient) {
this.recipient = recipient;
}
/** The Constant UNKNOWN_RECIPIENT. */
public static final String UNKNOWN_RECIPIENT = "unknown";
/** The Constant SAML_RESPONSE. */
public static final String SAML_RESPONSE = "SAML.Profile.POST";
/** The Constant SAML_RESPONSE_CERTPATH. */
public static final String SAML_RESPONSE_CERTPATH =
"SAML.Profile.POST.Certpath";
/** The Constant SAML_RESPONSE_NO_CERTPATH. */
public static final String SAML_RESPONSE_NO_CERTPATH =
"SAML.Profile.POST.NoCertpath";
/** The Constant WLES_GROUP_TAG. */
private static final String WLES_GROUP_TAG = "WLESGroup";
/** The Constant WLES_GROUP_NS. */
private static final String WLES_GROUP_NS =
"urn:bea:security:saml:groups";
/**
* Gets the SAML assertion.
*
* @param userName
* the user name
* @param groups
* the groups
* @param isSigned
* the is signed
* @param notBeforeMs
* the not before_ms
* @param notAfterMs
* the not after_ms
* @param trustedKeystore
* the trusted keystore
* @param trustedKeystoreType
* the trusted keystore type
* @param trustedCertAlias
* the trusted cert alias
* @param trustedCertAliasPasswd
* the trusted cert alias passwd
* @param credentialType
* the credential type
* @param issuer
* the issuer
* @param recipient
* the recipient
*
* @return the SAML assertion
*/
public String getSAMLAssertion(String userName, Set<?> groups,
boolean isSigned, long notBeforeMs, long notAfterMs,
String trustedKeystore, String trustedKeystoreType,
String trustedCertAlias, String trustedCertAliasPasswd,
String credentialType, String issuer, String recipient) {
boolean asResponse = isResponseType(credentialType);
boolean withCertPath = requireCertpath(credentialType);
ClassLoader dirCLDR = this.getClass().getClassLoader();
ClassLoader threadCLDR =
Thread.currentThread().getContextClassLoader();
try {
Thread.currentThread().setContextClassLoader(dirCLDR);
SAMLSubject subject = new SAMLSubject(new
SAMLNameIdentifier(
userName, null, null), Collections
.singleton(SAMLSubject.CONF_SENDER_VOUCHES),
null, null);
SAMLAttributeStatement attrStat = null;
if ((groups != null) && (groups.size() != 0)) {
attrStat = createAttributeStatement(subject,
groups);
}
SAMLAssertion assertion = createAssertion(
createAuthenticationStatement(subject),
attrStat,
notBeforeMs, notAfterMs, issuer);
SAMLSignedObject signedObject = null;
if (asResponse) {
List<SAMLAssertion> assertionList = new
ArrayList<SAMLAssertion>();
assertionList.add(assertion);
String responseRecipient = recipient;
if (StringUtils.isEmpty(recipient)) {
responseRecipient = UNKNOWN_RECIPIENT;
}
SAMLResponse response = new SAMLResponse(null,
responseRecipient, assertionList, null);
if (isSigned) {
signedObject =
getSignedAssertion(response,
trustedKeystore,
trustedKeystoreType,
trustedCertAlias,
trustedCertAliasPasswd,
withCertPath, asResponse);
}
}
else {
if (isSigned) {
signedObject =
getSignedAssertion(assertion,
trustedKeystore,
trustedKeystoreType,
trustedCertAlias,
trustedCertAliasPasswd,
withCertPath, asResponse);
}
}
if (signedObject != null) {
return signedObject.toString();
}
else {
return assertion.toString();
}
}
catch (SAMLException e) {
throw new RuntimeException(e);
}
finally {
Thread.currentThread().setContextClassLoader(threadCLDR);
}
}
/**
* Creates a new SAMLToken object.
*
* @param authnStat
* the authn stat
* @param attrStat
* the attr stat
* @param notBeforeMs
* the not before_ms
* @param notAfterMs
* the not after_ms
* @param issuer
* the issuer
*
* @return the SAML assertion
*/
private SAMLAssertion createAssertion(
SAMLAuthenticationStatement authnStat,
SAMLAttributeStatement attrStat, long notBeforeMs, long
notAfterMs,
String issuer) {
SAMLAssertion samlAssertion = null;
long now = System.currentTimeMillis();
Date notBefore = new Date(now - notBeforeMs);
Date notOnOrAfter = new Date(now + notAfterMs);
List<SAMLSubjectStatement> statements = new
ArrayList<SAMLSubjectStatement>();
if (authnStat != null) {
statements.add(authnStat);
}
if (attrStat != null) {
statements.add(attrStat);
}
try {
samlAssertion = new SAMLAssertion(issuer, notBefore,
notOnOrAfter,
null, null, statements);
}
catch (SAMLException e) {
throw new RuntimeException(e);
}
return samlAssertion;
}
/**
* Creates a new SAMLToken object.
*
* @param subject
* the subject
* @param groups
* the groups
*
* @return the SAML attribute statement
*/
private SAMLAttributeStatement createAttributeStatement(
SAMLSubject subject, Collection<?> groups) {
SAMLAttributeStatement attrStmt = null;
try {
SAMLAttribute wlesGroup = new
SAMLAttribute(WLES_GROUP_TAG,
WLES_GROUP_NS, null, 0, groups);
ArrayList<SAMLAttribute> wlesGroups = new
ArrayList<SAMLAttribute>();
wlesGroups.add(wlesGroup);
attrStmt = new SAMLAttributeStatement(
(SAMLSubject) subject.clone(), wlesGroups);
}
catch (SAMLException e) {
throw new RuntimeException(e);
}
catch (CloneNotSupportedException e) {
throw new RuntimeException(e);
}
return attrStmt;
}
/**
* Creates a new SAMLToken object.
*
* @param subject
* the subject
*
* @return the SAML authentication statement
*/
private SAMLAuthenticationStatement createAuthenticationStatement(
SAMLSubject subject) {
String authnMtd =
SAMLAuthenticationStatement.AuthenticationMethod_Password;
SAMLAuthenticationStatement authnStat = null;
try {
authnStat = new
SAMLAuthenticationStatement((SAMLSubject) subject
.clone(), authnMtd, new Date(), null, null,
null);
}
catch (SAMLException e) {
throw new RuntimeException(e);
}
catch (CloneNotSupportedException e) {
throw new RuntimeException(e);
}
return authnStat;
}
/**
* Gets the signed assertion.
*
* @param assertion
* the assertion
* @param keyStoreFilename
* the key store filename
* @param keyStoreType
* the key store type
* @param certAlias
* the cert alias
* @param certPswd
* the cert pswd
* @param includeCertpath
* the include certpath
* @param isResponse
* the is response
*
* @return the signed assertion
*/
private SAMLSignedObject getSignedAssertion(SAMLSignedObject assertion,
String keyStoreFilename, String keyStoreType, String certAlias,
String certPswd, boolean includeCertpath, boolean isResponse) {
if (StringUtils.isEmpty(keyStoreFilename)) {
throw new SecurityException(
"keyStoreFilename is either null or empty
string");
}
if (StringUtils.isEmpty(keyStoreType)) {
throw new SecurityException("keyStoreType is either
null or empty");
}
if (StringUtils.isEmpty(certAlias)) {
throw new SecurityException("certAlias is either null
or empty");
}
if (StringUtils.isEmpty(certPswd)) {
throw new SecurityException("certPswd is either null or
empty");
}
FileInputStream fin = null;
try {
KeyStore store = KeyStore.getInstance(keyStoreType);
ResourceLoader rs = new DefaultResourceLoader();
ClassPathResource resource = (ClassPathResource) rs
.getResource(keyStoreFilename);
fin = new FileInputStream(resource.getFile());
store.load(fin, null);
Key privateKey = store.getKey(certAlias,
certPswd.toCharArray());
if (privateKey != null) {
List<Certificate> certs = new
ArrayList<Certificate>();
if (includeCertpath) {
if (isResponse) {
Certificate cert =
store.getCertificate(certAlias);
if (cert == null) {
throw new
SecurityException(
"unable to get
certificate using certAlias");
}
certs.add(cert);
}
else {
Certificate certArray[] = store
.getCertificateChain(certAlias);
if (certArray == null) {
throw new
SecurityException(
"unable to get
certificate chain using certAlias");
}
certs.addAll(Arrays.asList(certArray));
}
assertion.sign(XMLSignature.ALGO_ID_SIGNATURE_RSA,
privateKey, certs);
}
else {
assertion.sign(XMLSignature.ALGO_ID_SIGNATURE_RSA,
privateKey, null);
}
}
else {
throw new SecurityException(
"private key was null and hence cannot
sign assertion");
}
}
catch (KeyStoreException e) {
throw new RuntimeException(e);
}
catch (FileNotFoundException e) {
throw new RuntimeException(e);
}
catch (NoSuchAlgorithmException e) {
throw new RuntimeException(e);
}
catch (CertificateException e) {
throw new RuntimeException(e);
}
catch (UnrecoverableKeyException e) {
throw new RuntimeException(e);
}
catch (IOException e) {
throw new RuntimeException(e);
}
catch (SAMLException e) {
throw new RuntimeException(e);
}
finally {
IOUtils.closeQuietly(fin);
}
return assertion;
}
/**
* Checks if is response type.
*
* @param credentialTypes
* the credential types
*
* @return true, if is response type
*/
private boolean isResponseType(String credentialTypes) {
boolean responseType = false;
if (SAML_RESPONSE.equals(credentialTypes)
|| SAML_RESPONSE_CERTPATH.equals(credentialTypes)
|| SAML_RESPONSE_NO_CERTPATH.equals(credentialTypes)) {
responseType = true;
}
return responseType;
}
/**
* Require certpath.
*
* @param credentialTypes
* the credential types
*
* @return true, if successful
*/
private boolean requireCertpath(String credentialTypes) {
boolean requireCertpath = false;
if (SAML_ASSERTION_CERTPATH.equals(credentialTypes)
|| SAML_RESPONSE.equals(credentialTypes)
|| SAML_RESPONSE_CERTPATH.equals(credentialTypes)) {
requireCertpath = true;
}
return requireCertpath;
}
}
> Running TestWSSecurityNewST2 Fails - General security error (No certificates
> were found for SAML signature)
> -----------------------------------------------------------------------------------------------------------
>
> Key: WSS-213
> URL: https://issues.apache.org/jira/browse/WSS-213
> Project: WSS4J
> Issue Type: Bug
> Affects Versions: 1.5.8
> Environment: OS = Ubuntu 9.04
> Eclipse = JEE Eclipse, Galileo, STS, m2eclipse
> JDK = java-6-sun-1.6.0.16, java-1.5.0-sun-1.5.0.19 (attempted as well)
> Reporter: Jay Blanton
> Assignee: Ruchith Udayanga Fernando
> Priority: Critical
> Attachments: wss4j.saml-jks.tar.gz, wss4j.saml.tar.gz
>
>
> I pulled down the 1.5.8, 1.5.8-SNAPSHOT, and pulled down the trunk for 1.6.
> I tried to build the trunk by doing a mvn package -Dmaven.test.skip=true
> (because quite a few unit tests fail).
> Then I try to run TestWSSecurityNewST2 and it fails.
> This is the exact issue I am having when trying to get my Spring Web Service
> Implementation to work with WSS4J's SAML Support (which it appears that
> Spring does not expose so I have to create a custom Interceptor).
> I have working examples of a digital signature, encryption, and UsernameToken
> with Spring Web Services support for SAML, but the SAML is not working. So I
> specifically went to the WSS4J examples to see if I could get those working
> first, and then working with my keystores, but the default test does not work
> for me that shipped with WSS4J.
> [INFO] Scanning for projects...
> [INFO]
> ------------------------------------------------------------------------
> [INFO] Building Ping Web Service Client
> [INFO]
> [INFO] Id: com.foo:ping.ws-saml:jar:0.0.1-SNAPSHOT
> [INFO] task-segment: [package]
> [INFO]
> ------------------------------------------------------------------------
> [INFO] [resources:resources]
> [INFO] Using default encoding to copy filtered resources.
> url = http://repo1.maven.org/maven2
> Downloading:
> http://repo1.maven.org/maven2/com/sun/xml/wss/xws-security/2.0-FCS/xws-security-2.0-FCS.pom
> url = http://static.appfuse.org/repository
> Downloading:
> http://static.appfuse.org/repository/com/sun/xml/wss/xws-security/2.0-FCS/xws-security-2.0-FCS.pom
> url = http://repository.jboss.com/maven2
> Downloading:
> http://repository.jboss.com/maven2/com/sun/xml/wss/xws-security/2.0-FCS/xws-security-2.0-FCS.pom
> [INFO] [compiler:compile]
> [INFO] Compiling 10 source files to
> /home/a068071/Public/Development/eclipse3.5-workspace/ping.ws-saml/target/classes
> url = http://repo1.maven.org/maven2
> Downloading:
> http://repo1.maven.org/maven2/com/sun/xml/wss/xws-security/2.0-FCS/xws-security-2.0-FCS.pom
> url = http://static.appfuse.org/repository
> Downloading:
> http://static.appfuse.org/repository/com/sun/xml/wss/xws-security/2.0-FCS/xws-security-2.0-FCS.pom
> url = http://repository.jboss.com/maven2
> Downloading:
> http://repository.jboss.com/maven2/com/sun/xml/wss/xws-security/2.0-FCS/xws-security-2.0-FCS.pom
> [INFO] [jibx:bind]
> [INFO] Not running JiBX binding compiler (single-module mode) - no binding
> files
> [INFO] [resources:testResources]
> [INFO] Using default encoding to copy filtered resources.
> url = http://repo1.maven.org/maven2
> Downloading:
> http://repo1.maven.org/maven2/com/sun/xml/wss/xws-security/2.0-FCS/xws-security-2.0-FCS.pom
> url = http://static.appfuse.org/repository
> Downloading:
> http://static.appfuse.org/repository/com/sun/xml/wss/xws-security/2.0-FCS/xws-security-2.0-FCS.pom
> url = http://repository.jboss.com/maven2
> Downloading:
> http://repository.jboss.com/maven2/com/sun/xml/wss/xws-security/2.0-FCS/xws-security-2.0-FCS.pom
> [INFO] [compiler:testCompile]
> [INFO] Compiling 4 source files to
> /home/a068071/Public/Development/eclipse3.5-workspace/ping.ws-saml/target/test-classes
> url = http://repo1.maven.org/maven2
> Downloading:
> http://repo1.maven.org/maven2/com/sun/xml/wss/xws-security/2.0-FCS/xws-security-2.0-FCS.pom
> url = http://static.appfuse.org/repository
> Downloading:
> http://static.appfuse.org/repository/com/sun/xml/wss/xws-security/2.0-FCS/xws-security-2.0-FCS.pom
> url = http://repository.jboss.com/maven2
> Downloading:
> http://repository.jboss.com/maven2/com/sun/xml/wss/xws-security/2.0-FCS/xws-security-2.0-FCS.pom
> [INFO] [surefire:test]
> [INFO] Surefire report directory:
> /home/a068071/Public/Development/eclipse3.5-workspace/ping.ws-saml/target/surefire-reports
> DEBUG [security.util.Loader] Trying to find [crypto.properties] using
> sun.misc.launcher$appclassloa...@133056f class loader.
> DEBUG [components.crypto.CryptoFactory] Using Crypto Engine
> [org.apache.ws.security.components.crypto.Merlin]
> DEBUG [components.crypto.AbstractCrypto] CA certs have been loaded
> DEBUG [security.util.Loader] Trying to find [crypto.properties] using
> sun.misc.launcher$appclassloa...@133056f class loader.
> DEBUG [components.crypto.CryptoFactory] Using Crypto Engine
> [org.apache.ws.security.components.crypto.Merlin]
> DEBUG [components.crypto.AbstractCrypto] CA certs have been loaded
> DEBUG [security.util.Loader] Trying to find [crypto.properties] using
> sun.misc.launcher$appclassloa...@133056f class loader.
> DEBUG [components.crypto.CryptoFactory] Using Crypto Engine
> [org.apache.ws.security.components.crypto.Merlin]
> DEBUG [components.crypto.AbstractCrypto] CA certs have been loaded
> DEBUG [security.util.Loader] Trying to find [crypto.properties] using
> sun.misc.launcher$appclassloa...@133056f class loader.
> DEBUG [components.crypto.CryptoFactory] Using Crypto Engine
> [org.apache.ws.security.components.crypto.Merlin]
> DEBUG [components.crypto.AbstractCrypto] CA certs have been loaded
> -------------------------------------------------------
> T E S T S
> -------------------------------------------------------
> Running wssec.TestWSSecurityNewST2
> DEBUG [security.util.Loader] Trying to find [saml.properties] using
> sun.misc.launcher$appclassloa...@133056f class loader.
> INFO [security.saml.SAMLIssuerFactory] Using Crypto Engine
> [org.apache.ws.security.saml.SAMLIssuerImpl]
> DEBUG [security.util.Loader] Trying to find [crypto.properties] using
> sun.misc.launcher$appclassloa...@133056f class loader.
> DEBUG [components.crypto.CryptoFactory] Using Crypto Engine
> [org.apache.ws.security.components.crypto.Merlin]
> DEBUG [components.crypto.AbstractCrypto] CA certs have been loaded
> DEBUG [security.saml.SAMLIssuerImpl] Begin add SAMLAssertion token...
> INFO [wssec.TestWSSecurityNewST2] Before SAMLSignedSenderVouches....
> DEBUG [security.saml.WSSecSignatureSAML] Beginning ST signing...
> DEBUG [security.util.Loader] Trying to find [saml.properties] using
> sun.misc.launcher$appclassloa...@133056f class loader.
> INFO [security.saml.SAMLIssuerFactory] Using Crypto Engine
> [org.apache.ws.security.saml.SAMLIssuerImpl]
> DEBUG [security.util.Loader] Trying to find [crypto.properties] using
> sun.misc.launcher$appclassloa...@133056f class loader.
> DEBUG [components.crypto.CryptoFactory] Using Crypto Engine
> [org.apache.ws.security.components.crypto.Merlin]
> DEBUG [components.crypto.AbstractCrypto] CA certs have been loaded
> DEBUG [security.saml.SAMLIssuerImpl] Begin add SAMLAssertion token...
> INFO [wssec.TestWSSecurityNewST2] Before SAMLSignedSenderVouches....
> DEBUG [security.saml.WSSecSignatureSAML] Beginning ST signing...
> DEBUG [security.util.Loader] Trying to find [saml3.properties] using
> sun.misc.launcher$appclassloa...@133056f class loader.
> INFO [security.saml.SAMLIssuerFactory] Using Crypto Engine
> [org.apache.ws.security.saml.SAMLIssuerImpl]
> DEBUG [security.util.Loader] Trying to find [crypto.properties] using
> sun.misc.launcher$appclassloa...@133056f class loader.
> DEBUG [components.crypto.CryptoFactory] Using Crypto Engine
> [org.apache.ws.security.components.crypto.Merlin]
> DEBUG [components.crypto.AbstractCrypto] CA certs have been loaded
> DEBUG [security.saml.SAMLIssuerImpl] Begin add SAMLAssertion token...
> INFO [wssec.TestWSSecurityNewST2] Before SAMLSignedSenderVouches....
> DEBUG [security.saml.WSSecSignatureSAML] Beginning ST signing...
> DEBUG [security.util.Loader] Trying to find [saml.properties] using
> sun.misc.launcher$appclassloa...@133056f class loader.
> INFO [security.saml.SAMLIssuerFactory] Using Crypto Engine
> [org.apache.ws.security.saml.SAMLIssuerImpl]
> DEBUG [security.util.Loader] Trying to find [crypto.properties] using
> sun.misc.launcher$appclassloa...@133056f class loader.
> DEBUG [components.crypto.CryptoFactory] Using Crypto Engine
> [org.apache.ws.security.components.crypto.Merlin]
> DEBUG [components.crypto.AbstractCrypto] CA certs have been loaded
> DEBUG [security.saml.SAMLIssuerImpl] Begin add SAMLAssertion token...
> DEBUG [security.saml.WSSecSignatureSAML] Beginning ST signing...
> Tests run: 4, Failures: 0, Errors: 4, Skipped: 0, Time elapsed: 0.222 sec <<<
> FAILURE!
> Results :
> Tests in error:
> testSAMLSignedSenderVouches(wssec.TestWSSecurityNewST2)
> testSAMLSignedSenderVouchesKeyIdentifier(wssec.TestWSSecurityNewST2)
> testDefaultIssuerClass(wssec.TestWSSecurityNewST2)
> testWSS62(wssec.TestWSSecurityNewST2)
> Tests run: 5, Failures: 0, Errors: 5, Skipped: 0
> [ERROR]
> Mojo:
> org.apache.maven.plugins:maven-surefire-plugin:2.4.2:test
> FAILED for project:
> com.foo:ping.ws-saml:jar:0.0.1-SNAPSHOT
> Reason:
> There are test failures.
> Please refer to
> /home/jay/Public/Development/eclipse3.5-workspace/ping.ws-saml/target/surefire-reports
> for the individual test results.
> [INFO]
> ------------------------------------------------------------------------
> [INFO] For more information, run with the -e flag
> [INFO]
> ------------------------------------------------------------------------
> [INFO] BUILD FAILED
> [INFO]
> ------------------------------------------------------------------------
> [INFO] Total time: 16 seconds
> [INFO] Finished at: Wed Oct 07 13:29:03 PDT 2009
> [INFO] Final Memory: 4M/25M
> [INFO]
> ------------------------------------------------------------------------
> Here is the errors from the test report:
> -------------------------------------------------------------------------------
> Test set: wssec.TestWSSecurityNewST2
> -------------------------------------------------------------------------------
> Tests run: 4, Failures: 0, Errors: 4, Skipped: 0, Time elapsed: 0.731 sec <<<
> FAILURE!
> testSAMLSignedSenderVouches(wssec.TestWSSecurityNewST2) Time elapsed: 0.486
> sec <<< ERROR!
> org.apache.ws.security.WSSecurityException: General security error (No
> certificates were found for SAML signature)
> at
> org.apache.ws.security.saml.WSSecSignatureSAML.prepare(WSSecSignatureSAML.java:276)
> at
> org.apache.ws.security.saml.WSSecSignatureSAML.build(WSSecSignatureSAML.java:110)
> at
> wssec.TestWSSecurityNewST2.testSAMLSignedSenderVouches(TestWSSecurityNewST2.java:114)
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> at
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
> at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
> at java.lang.reflect.Method.invoke(Method.java:585)
> at junit.framework.TestCase.runTest(TestCase.java:168)
> at junit.framework.TestCase.runBare(TestCase.java:134)
> at junit.framework.TestResult$1.protect(TestResult.java:110)
> at junit.framework.TestResult.runProtected(TestResult.java:128)
> at junit.framework.TestResult.run(TestResult.java:113)
> at junit.framework.TestCase.run(TestCase.java:124)
> at junit.framework.TestSuite.runTest(TestSuite.java:232)
> at junit.framework.TestSuite.run(TestSuite.java:227)
> at
> org.junit.internal.runners.JUnit38ClassRunner.run(JUnit38ClassRunner.java:81)
> at
> org.apache.maven.surefire.junit4.JUnit4TestSet.execute(JUnit4TestSet.java:62)
> at
> org.apache.maven.surefire.suite.AbstractDirectoryTestSuite.executeTestSet(AbstractDirectoryTestSuite.java:140)
> at
> org.apache.maven.surefire.suite.AbstractDirectoryTestSuite.execute(AbstractDirectoryTestSuite.java:127)
> at org.apache.maven.surefire.Surefire.run(Surefire.java:177)
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> at
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
> at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
> at java.lang.reflect.Method.invoke(Method.java:585)
> at
> org.apache.maven.surefire.booter.SurefireBooter.runSuitesInProcess(SurefireBooter.java:338)
> at
> org.apache.maven.surefire.booter.SurefireBooter.main(SurefireBooter.java:997)
> testSAMLSignedSenderVouchesKeyIdentifier(wssec.TestWSSecurityNewST2) Time
> elapsed: 0.064 sec <<< ERROR!
> org.apache.ws.security.WSSecurityException: General security error (No
> certificates were found for SAML signature)
> at
> org.apache.ws.security.saml.WSSecSignatureSAML.prepare(WSSecSignatureSAML.java:276)
> at
> org.apache.ws.security.saml.WSSecSignatureSAML.build(WSSecSignatureSAML.java:110)
> at
> wssec.TestWSSecurityNewST2.testSAMLSignedSenderVouchesKeyIdentifier(TestWSSecurityNewST2.java:156)
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> at
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
> at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
> at java.lang.reflect.Method.invoke(Method.java:585)
> at junit.framework.TestCase.runTest(TestCase.java:168)
> at junit.framework.TestCase.runBare(TestCase.java:134)
> at junit.framework.TestResult$1.protect(TestResult.java:110)
> at junit.framework.TestResult.runProtected(TestResult.java:128)
> at junit.framework.TestResult.run(TestResult.java:113)
> at junit.framework.TestCase.run(TestCase.java:124)
> at junit.framework.TestSuite.runTest(TestSuite.java:232)
> at junit.framework.TestSuite.run(TestSuite.java:227)
> at
> org.junit.internal.runners.JUnit38ClassRunner.run(JUnit38ClassRunner.java:81)
> at
> org.apache.maven.surefire.junit4.JUnit4TestSet.execute(JUnit4TestSet.java:62)
> at
> org.apache.maven.surefire.suite.AbstractDirectoryTestSuite.executeTestSet(AbstractDirectoryTestSuite.java:140)
> at
> org.apache.maven.surefire.suite.AbstractDirectoryTestSuite.execute(AbstractDirectoryTestSuite.java:127)
> at org.apache.maven.surefire.Surefire.run(Surefire.java:177)
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> at
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
> at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
> at java.lang.reflect.Method.invoke(Method.java:585)
> at
> org.apache.maven.surefire.booter.SurefireBooter.runSuitesInProcess(SurefireBooter.java:338)
> at
> org.apache.maven.surefire.booter.SurefireBooter.main(SurefireBooter.java:997)
> testDefaultIssuerClass(wssec.TestWSSecurityNewST2) Time elapsed: 0.156 sec
> <<< ERROR!
> org.apache.ws.security.WSSecurityException: General security error (No
> certificates were found for SAML signature)
> at
> org.apache.ws.security.saml.WSSecSignatureSAML.prepare(WSSecSignatureSAML.java:276)
> at
> org.apache.ws.security.saml.WSSecSignatureSAML.build(WSSecSignatureSAML.java:110)
> at
> wssec.TestWSSecurityNewST2.testDefaultIssuerClass(TestWSSecurityNewST2.java:200)
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> at
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
> at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
> at java.lang.reflect.Method.invoke(Method.java:585)
> at junit.framework.TestCase.runTest(TestCase.java:168)
> at junit.framework.TestCase.runBare(TestCase.java:134)
> at junit.framework.TestResult$1.protect(TestResult.java:110)
> at junit.framework.TestResult.runProtected(TestResult.java:128)
> at junit.framework.TestResult.run(TestResult.java:113)
> at junit.framework.TestCase.run(TestCase.java:124)
> at junit.framework.TestSuite.runTest(TestSuite.java:232)
> at junit.framework.TestSuite.run(TestSuite.java:227)
> at
> org.junit.internal.runners.JUnit38ClassRunner.run(JUnit38ClassRunner.java:81)
> at
> org.apache.maven.surefire.junit4.JUnit4TestSet.execute(JUnit4TestSet.java:62)
> at
> org.apache.maven.surefire.suite.AbstractDirectoryTestSuite.executeTestSet(AbstractDirectoryTestSuite.java:140)
> at
> org.apache.maven.surefire.suite.AbstractDirectoryTestSuite.execute(AbstractDirectoryTestSuite.java:127)
> at org.apache.maven.surefire.Surefire.run(Surefire.java:177)
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> at
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
> at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
> at java.lang.reflect.Method.invoke(Method.java:585)
> at
> org.apache.maven.surefire.booter.SurefireBooter.runSuitesInProcess(SurefireBooter.java:338)
> at
> org.apache.maven.surefire.booter.SurefireBooter.main(SurefireBooter.java:997)
> testWSS62(wssec.TestWSSecurityNewST2) Time elapsed: 0.011 sec <<< ERROR!
> org.apache.ws.security.WSSecurityException: General security error (No
> certificates were found for SAML signature)
> at
> org.apache.ws.security.saml.WSSecSignatureSAML.prepare(WSSecSignatureSAML.java:276)
> at
> org.apache.ws.security.saml.WSSecSignatureSAML.build(WSSecSignatureSAML.java:110)
> at wssec.TestWSSecurityNewST2.testWSS62(TestWSSecurityNewST2.java:241)
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> at
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
> at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
> at java.lang.reflect.Method.invoke(Method.java:585)
> at junit.framework.TestCase.runTest(TestCase.java:168)
> at junit.framework.TestCase.runBare(TestCase.java:134)
> at junit.framework.TestResult$1.protect(TestResult.java:110)
> at junit.framework.TestResult.runProtected(TestResult.java:128)
> at junit.framework.TestResult.run(TestResult.java:113)
> at junit.framework.TestCase.run(TestCase.java:124)
> at junit.framework.TestSuite.runTest(TestSuite.java:232)
> at junit.framework.TestSuite.run(TestSuite.java:227)
> at
> org.junit.internal.runners.JUnit38ClassRunner.run(JUnit38ClassRunner.java:81)
> at
> org.apache.maven.surefire.junit4.JUnit4TestSet.execute(JUnit4TestSet.java:62)
> at
> org.apache.maven.surefire.suite.AbstractDirectoryTestSuite.executeTestSet(AbstractDirectoryTestSuite.java:140)
> at
> org.apache.maven.surefire.suite.AbstractDirectoryTestSuite.execute(AbstractDirectoryTestSuite.java:127)
> at org.apache.maven.surefire.Surefire.run(Surefire.java:177)
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> at
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
> at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
> at java.lang.reflect.Method.invoke(Method.java:585)
> at
> org.apache.maven.surefire.booter.SurefireBooter.runSuitesInProcess(SurefireBooter.java:338)
> at
> org.apache.maven.surefire.booter.SurefireBooter.main(SurefireBooter.java:997)
>
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]