This is an automated email from the ASF dual-hosted git repository. robertlazarski pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/axis-axis2-java-rampart.git
The following commit(s) were added to refs/heads/master by this push: new f4752370 Fix several tests in CommonUtilTest, add some temp debugging related to some SAML2TokenIssuerTest errors f4752370 is described below commit f475237088e95d114c797d4c945f70400878c8e2 Author: Robert Lazarski <robertlazar...@gmail.com> AuthorDate: Thu Sep 14 18:20:25 2023 -0400 Fix several tests in CommonUtilTest, add some temp debugging related to some SAML2TokenIssuerTest errors --- code-coverage/pom.xml | 1 + modules/rampart-trust/pom.xml | 4 ++++ .../java/org/apache/rahas/impl/SAML2TokenIssuer.java | 9 ++++++--- .../java/org/apache/rahas/impl/util/CommonUtil.java | 19 ++++++++++++++++++- .../java/org/apache/rahas/impl/util/SAMLUtils.java | 2 +- .../org/apache/rahas/impl/util/CommonUtilTest.java | 4 +--- .../org/apache/rahas/impl/util/SAMLUtilsTest.java | 2 +- pom.xml | 18 ++++++++++++------ 8 files changed, 44 insertions(+), 15 deletions(-) diff --git a/code-coverage/pom.xml b/code-coverage/pom.xml index fd78e306..080ba75e 100644 --- a/code-coverage/pom.xml +++ b/code-coverage/pom.xml @@ -121,6 +121,7 @@ <plugin> <groupId>org.jacoco</groupId> <artifactId>jacoco-maven-plugin</artifactId> + <version>0.8.10</version> <configuration combine.self="append"> </configuration> diff --git a/modules/rampart-trust/pom.xml b/modules/rampart-trust/pom.xml index d8d238d1..58a21cc3 100644 --- a/modules/rampart-trust/pom.xml +++ b/modules/rampart-trust/pom.xml @@ -88,6 +88,10 @@ <groupId>org.opensaml</groupId> <artifactId>opensaml-soap-api</artifactId> </dependency> + <dependency> + <groupId>org.opensaml</groupId> + <artifactId>opensaml-soap-impl</artifactId> + </dependency> <dependency> <groupId>org.owasp.esapi</groupId> <artifactId>esapi</artifactId> diff --git a/modules/rampart-trust/src/main/java/org/apache/rahas/impl/SAML2TokenIssuer.java b/modules/rampart-trust/src/main/java/org/apache/rahas/impl/SAML2TokenIssuer.java index d9bfc3b9..82ed8c8d 100644 --- a/modules/rampart-trust/src/main/java/org/apache/rahas/impl/SAML2TokenIssuer.java +++ b/modules/rampart-trust/src/main/java/org/apache/rahas/impl/SAML2TokenIssuer.java @@ -233,6 +233,12 @@ public class SAML2TokenIssuer implements TokenIssuer { Element assertionElement = assertion.getDOM(); + try { + System.out.println("createRequestSecurityTokenResponse() found assertionElement local name: " + assertionElement.getLocalName() + " , text value: " + ((org.w3c.dom.ls.DOMImplementationLS)assertionElement.getOwnerDocument().getImplementation()).createLSSerializer().writeToString(assertionElement) + " , on OMElement requestedSecurityTokenElement.toStringWithConsume() : " + requestedSecurityTokenElement.toStringWithConsume()); + + } catch (Exception ex) { + log.error(ex.getMessage(), ex); + } requestedSecurityTokenElement.addChild((OMNode)assertionElement); // Store the token @@ -645,12 +651,9 @@ public class SAML2TokenIssuer implements TokenIssuer { XSStringBuilder attributeValueBuilder = (XSStringBuilder) builderFactory .getBuilder(XSString.TYPE_NAME); -XSString stringValue = null; -/* XSString stringValue = attributeValueBuilder.buildObject( AttributeValue.DEFAULT_ELEMENT_NAME, XSString.TYPE_NAME); -*/ attributeValueBuilder.buildObject( AttributeValue.DEFAULT_ELEMENT_NAME, XSString.TYPE_NAME); stringValue.setValue("Colombo/Rahas"); diff --git a/modules/rampart-trust/src/main/java/org/apache/rahas/impl/util/CommonUtil.java b/modules/rampart-trust/src/main/java/org/apache/rahas/impl/util/CommonUtil.java index a15c1816..b361c679 100644 --- a/modules/rampart-trust/src/main/java/org/apache/rahas/impl/util/CommonUtil.java +++ b/modules/rampart-trust/src/main/java/org/apache/rahas/impl/util/CommonUtil.java @@ -33,6 +33,7 @@ import org.apache.wss4j.common.crypto.CryptoType; import org.apache.wss4j.common.ext.WSSecurityException; import org.apache.wss4j.common.util.KeyUtils; import org.apache.wss4j.common.util.Loader; +import org.apache.wss4j.dom.callback.DOMCallbackLookup; import org.apache.wss4j.dom.engine.WSSConfig; import org.apache.wss4j.dom.engine.WSSecurityEngineResult; import org.apache.wss4j.dom.handler.RequestData; @@ -45,6 +46,9 @@ import org.opensaml.core.xml.XMLObject; import org.opensaml.core.xml.XMLObjectBuilder; import org.opensaml.core.xml.XMLObjectBuilderFactory; import org.opensaml.core.xml.config.XMLObjectProviderRegistrySupport; +import org.opensaml.soap.wssecurity.KeyIdentifier; +import org.opensaml.soap.wssecurity.impl.SecurityTokenReferenceBuilder; +import org.opensaml.saml.common.SAMLObjectBuilder; import org.opensaml.xmlsec.encryption.EncryptedKey; import org.opensaml.xmlsec.signature.KeyInfo; import org.opensaml.xmlsec.signature.X509Data; @@ -59,7 +63,9 @@ import javax.xml.parsers.ParserConfigurationException; import java.security.cert.CertificateEncodingException; import java.security.cert.X509Certificate; +import java.util.Iterator; import java.util.List; +import java.util.Map; import java.util.Properties; import java.util.Base64; import javax.crypto.KeyGenerator; @@ -158,6 +164,7 @@ public class CommonUtil { requestData.setWssConfig(cfg); WSDocInfo docInfo = new WSDocInfo(encryptedKeyElement.getOwnerDocument()); + docInfo.setCallbackLookup(new DOMCallbackLookup(encryptedKeyElement.getOwnerDocument())); requestData.setWsDocInfo(docInfo); List<WSSecurityEngineResult> resultList; @@ -320,10 +327,20 @@ public class CommonUtil { */ public static XMLObject buildXMLObject(QName objectQName) throws TrustException { + log.debug("buildXMLObject() is starting on QName: " + objectQName); XMLObjectBuilderFactory builderFactory = XMLObjectProviderRegistrySupport.getBuilderFactory(); + if (builderFactory.getBuilder(objectQName) == null) { + if (KeyIdentifier.ELEMENT_NAME == objectQName) { + builderFactory.registerBuilder(KeyIdentifier.ELEMENT_NAME, new SecurityTokenReferenceBuilder()); + log.warn("An opensaml SecurityTokenReferenceBuilder was added to the opensaml registry for QName key: " + KeyIdentifier.ELEMENT_NAME); + } else { + log.error("No opensaml builders found for QName key: " + objectQName); + } + + } XMLObjectBuilder builder = builderFactory.getBuilderOrThrow(objectQName); if (builder == null) { - log.debug("Unable to find OpenSAML builder for object " + objectQName); + log.error("Unable to find OpenSAML builder for object " + objectQName); throw new TrustException("builderNotFound",new Object[]{objectQName}); } return builder.buildObject(objectQName.getNamespaceURI(), objectQName.getLocalPart(), objectQName.getPrefix()); diff --git a/modules/rampart-trust/src/main/java/org/apache/rahas/impl/util/SAMLUtils.java b/modules/rampart-trust/src/main/java/org/apache/rahas/impl/util/SAMLUtils.java index d740bd93..0a2eb3a7 100644 --- a/modules/rampart-trust/src/main/java/org/apache/rahas/impl/util/SAMLUtils.java +++ b/modules/rampart-trust/src/main/java/org/apache/rahas/impl/util/SAMLUtils.java @@ -546,7 +546,7 @@ public class SAMLUtils { /** - * This method will created the "EncryptedKey" of a SAML assertion. + * This method will create the "EncryptedKey" of a SAML assertion. * An encrypted key would look like as follows, * <pre> <xenc:EncryptedKey xmlns:xenc="http://www.w3.org/2001/04/xmlenc#" * xmlns:ds="http://www.w3.org/2000/09/xmldsig#" diff --git a/modules/rampart-trust/src/test/java/org/apache/rahas/impl/util/CommonUtilTest.java b/modules/rampart-trust/src/test/java/org/apache/rahas/impl/util/CommonUtilTest.java index ca13ef74..f5321f3a 100644 --- a/modules/rampart-trust/src/test/java/org/apache/rahas/impl/util/CommonUtilTest.java +++ b/modules/rampart-trust/src/test/java/org/apache/rahas/impl/util/CommonUtilTest.java @@ -44,7 +44,6 @@ import org.opensaml.xmlsec.signature.KeyInfo; import org.w3c.dom.Document; import org.w3c.dom.Element; -import javax.crypto.KeyGenerator; import javax.crypto.SecretKey; import javax.xml.namespace.QName; import javax.xml.stream.XMLStreamException; @@ -181,8 +180,7 @@ public class CommonUtilTest extends AbstractTestCase { builder.setKeyIdentifierType(WSConstants.BST_DIRECT_REFERENCE); builder.setSymmetricEncAlgorithm(WSConstants.TRIPLE_DES); - KeyGenerator keyGen = KeyUtils.getKeyGenerator(WSConstants.TRIPLE_DES); - SecretKey symmetricKey = keyGen.generateKey(); + SecretKey symmetricKey = KeyUtils.prepareSecretKey(WSConstants.TRIPLE_DES, ephemeralKey); builder.prepare(TestUtil.getCrypto(), symmetricKey); diff --git a/modules/rampart-trust/src/test/java/org/apache/rahas/impl/util/SAMLUtilsTest.java b/modules/rampart-trust/src/test/java/org/apache/rahas/impl/util/SAMLUtilsTest.java index c1701ab7..524c867e 100644 --- a/modules/rampart-trust/src/test/java/org/apache/rahas/impl/util/SAMLUtilsTest.java +++ b/modules/rampart-trust/src/test/java/org/apache/rahas/impl/util/SAMLUtilsTest.java @@ -84,7 +84,7 @@ public class SAMLUtilsTest extends AbstractTestCase { try { CommonUtil.buildXMLObject(new QName("http://x.com", "y")); Assert.fail("This should throw an exception"); - } catch (TrustException e) { + } catch (Exception e) { } } diff --git a/pom.xml b/pom.xml index f07a1205..f7836686 100644 --- a/pom.xml +++ b/pom.xml @@ -347,8 +347,8 @@ <artifactId>maven-compiler-plugin</artifactId> <version>3.11.0</version> <configuration> - <source>1.8</source> - <target>1.8</target> + <source>11</source> + <target>11</target> </configuration> </plugin> <plugin> @@ -580,6 +580,12 @@ <version>${opensaml.version}</version> <scope>compile</scope> </dependency> + <dependency> + <groupId>org.opensaml</groupId> + <artifactId>opensaml-soap-impl</artifactId> + <version>${opensaml.version}</version> + <scope>compile</scope> + </dependency> <dependency> <groupId>org.opensaml</groupId> <artifactId>opensaml-xacml-impl</artifactId> @@ -594,13 +600,13 @@ </dependency> <dependency> <groupId>org.slf4j</groupId> - <artifactId>slf4j-log4j12</artifactId> - <version>1.7.36</version> + <artifactId>slf4j-jcl</artifactId> + <version>2.20.0</version> </dependency> <dependency> <groupId>org.slf4j</groupId> - <artifactId>slf4j-jcl</artifactId> - <version>1.7.36</version> + <artifactId>slf4j-log4j12</artifactId> + <version>2.0.9</version> </dependency> <dependency> <groupId>log4j</groupId>