Author: anil.saldhana(a)jboss.com
Date: 2011-07-01 16:29:06 -0400 (Fri, 01 Jul 2011)
New Revision: 1055
Modified:
federation/trunk/picketlink-fed-core/src/main/java/org/picketlink/identity/federation/core/saml/v2/writers/SAMLRequestWriter.java
federation/trunk/picketlink-fed-core/src/test/java/org/picketlink/test/identity/federation/core/parser/saml/SAMLArtifactResolveParserTestCase.java
federation/trunk/picketlink-fed-core/src/test/java/org/picketlink/test/identity/federation/core/parser/saml/SAMLAuthnRequestParserTestCase.java
Log:
PLFED-116: saml artifact resolve writing
Modified:
federation/trunk/picketlink-fed-core/src/main/java/org/picketlink/identity/federation/core/saml/v2/writers/SAMLRequestWriter.java
===================================================================
---
federation/trunk/picketlink-fed-core/src/main/java/org/picketlink/identity/federation/core/saml/v2/writers/SAMLRequestWriter.java 2011-07-01
20:00:05 UTC (rev 1054)
+++
federation/trunk/picketlink-fed-core/src/main/java/org/picketlink/identity/federation/core/saml/v2/writers/SAMLRequestWriter.java 2011-07-01
20:29:06 UTC (rev 1055)
@@ -44,11 +44,13 @@
import org.picketlink.identity.federation.core.util.StaxUtil;
import org.picketlink.identity.federation.core.util.StringUtil;
import org.picketlink.identity.federation.saml.v2.assertion.NameIDType;
+import org.picketlink.identity.federation.saml.v2.protocol.ArtifactResolveType;
import org.picketlink.identity.federation.saml.v2.protocol.AuthnRequestType;
import org.picketlink.identity.federation.saml.v2.protocol.LogoutRequestType;
import org.picketlink.identity.federation.saml.v2.protocol.NameIDPolicyType;
import org.picketlink.identity.federation.saml.v2.protocol.XACMLAuthzDecisionQueryType;
import org.w3c.dom.Document;
+import org.w3c.dom.Element;
/**
* Writes a SAML2 Request Type to Stream
@@ -134,6 +136,13 @@
{
write(issuer, new QName(ASSERTION_NSURI.get(),
JBossSAMLConstants.ISSUER.get()));
}
+
+ Element sig = request.getSignature();
+ if (sig != null)
+ {
+ StaxUtil.writeDOMElement(writer, sig);
+ }
+
NameIDPolicyType nameIDPolicy = request.getNameIDPolicy();
if (nameIDPolicy != null)
write(nameIDPolicy);
@@ -217,6 +226,47 @@
StaxUtil.flush(writer);
}
+ public void write(ArtifactResolveType request) throws ProcessingException
+ {
+ StaxUtil.writeStartElement(writer, PROTOCOL_PREFIX,
JBossSAMLConstants.ARTIFACT_RESOLVE.get(),
+ PROTOCOL_NSURI.get());
+ StaxUtil.writeNameSpace(writer, PROTOCOL_PREFIX, PROTOCOL_NSURI.get());
+ StaxUtil.writeDefaultNameSpace(writer, ASSERTION_NSURI.get());
+
+ //Attributes
+ StaxUtil.writeAttribute(writer, JBossSAMLConstants.ID.get(), request.getID());
+ StaxUtil.writeAttribute(writer, JBossSAMLConstants.VERSION.get(),
request.getVersion());
+ StaxUtil.writeAttribute(writer, JBossSAMLConstants.ISSUE_INSTANT.get(),
request.getIssueInstant().toString());
+
+ URI destination = request.getDestination();
+ if (destination != null)
+ StaxUtil.writeAttribute(writer, JBossSAMLConstants.DESTINATION.get(),
destination.toASCIIString());
+
+ String consent = request.getConsent();
+ if (StringUtil.isNotNull(consent))
+ StaxUtil.writeAttribute(writer, JBossSAMLConstants.CONSENT.get(), consent);
+
+ NameIDType issuer = request.getIssuer();
+ if (issuer != null)
+ {
+ write(issuer, new QName(ASSERTION_NSURI.get(),
JBossSAMLConstants.ISSUER.get()));
+ }
+ Element sig = request.getSignature();
+ if (sig != null)
+ {
+ StaxUtil.writeDOMElement(writer, sig);
+ }
+ String artifact = request.getArtifact();
+ if (StringUtil.isNotNull(artifact))
+ {
+ StaxUtil.writeStartElement(writer, PROTOCOL_PREFIX,
JBossSAMLConstants.ARTIFACT.get(), PROTOCOL_NSURI.get());
+ StaxUtil.writeCharacters(writer, artifact);
+ StaxUtil.writeEndElement(writer);
+ }
+ StaxUtil.writeEndElement(writer);
+ StaxUtil.flush(writer);
+ }
+
public void write(XACMLAuthzDecisionQueryType xacmlQuery) throws ProcessingException
{
StaxUtil.writeStartElement(writer, PROTOCOL_PREFIX,
JBossSAMLConstants.REQUEST_ABSTRACT.get(),
Modified:
federation/trunk/picketlink-fed-core/src/test/java/org/picketlink/test/identity/federation/core/parser/saml/SAMLArtifactResolveParserTestCase.java
===================================================================
---
federation/trunk/picketlink-fed-core/src/test/java/org/picketlink/test/identity/federation/core/parser/saml/SAMLArtifactResolveParserTestCase.java 2011-07-01
20:00:05 UTC (rev 1054)
+++
federation/trunk/picketlink-fed-core/src/test/java/org/picketlink/test/identity/federation/core/parser/saml/SAMLArtifactResolveParserTestCase.java 2011-07-01
20:29:06 UTC (rev 1055)
@@ -24,13 +24,19 @@
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
import java.io.InputStream;
import org.junit.Test;
import org.picketlink.identity.federation.core.parsers.saml.SAMLParser;
+import org.picketlink.identity.federation.core.saml.v2.util.DocumentUtil;
import org.picketlink.identity.federation.core.saml.v2.util.XMLTimeUtil;
+import org.picketlink.identity.federation.core.saml.v2.writers.SAMLRequestWriter;
import org.picketlink.identity.federation.core.util.JAXPValidationUtil;
+import org.picketlink.identity.federation.core.util.StaxUtil;
import org.picketlink.identity.federation.saml.v2.protocol.ArtifactResolveType;
+import org.w3c.dom.Document;
/**
* Unit test the parsing of {@link ArtifactResolveType}
@@ -57,5 +63,14 @@
assertEquals("https://sp.example.com/SAML2/ArtifactResolution",
artifactResolve.getDestination().toString());
assertEquals("https://idp.example.org/SAML2",
artifactResolve.getIssuer().getValue());
assertEquals("AAQAAMh48/1oXIM+sDo7Dh2qMp1HM4IF5DaRNmDj6RdUmllwn9jJHyEgIi8=",
artifactResolve.getArtifact());
+
+ //Try out writing
+ ByteArrayOutputStream baos = new ByteArrayOutputStream();
+ SAMLRequestWriter writer = new
SAMLRequestWriter(StaxUtil.getXMLStreamWriter(baos));
+ writer.write(artifactResolve);
+
+ ByteArrayInputStream bis = new ByteArrayInputStream(baos.toByteArray());
+ Document doc = DocumentUtil.getDocument(bis); //throws exceptions
+ JAXPValidationUtil.validate(DocumentUtil.getNodeAsStream(doc));
}
}
\ No newline at end of file
Modified:
federation/trunk/picketlink-fed-core/src/test/java/org/picketlink/test/identity/federation/core/parser/saml/SAMLAuthnRequestParserTestCase.java
===================================================================
---
federation/trunk/picketlink-fed-core/src/test/java/org/picketlink/test/identity/federation/core/parser/saml/SAMLAuthnRequestParserTestCase.java 2011-07-01
20:00:05 UTC (rev 1054)
+++
federation/trunk/picketlink-fed-core/src/test/java/org/picketlink/test/identity/federation/core/parser/saml/SAMLAuthnRequestParserTestCase.java 2011-07-01
20:29:06 UTC (rev 1055)
@@ -33,9 +33,11 @@
import org.picketlink.identity.federation.core.saml.v2.util.DocumentUtil;
import org.picketlink.identity.federation.core.saml.v2.util.XMLTimeUtil;
import org.picketlink.identity.federation.core.saml.v2.writers.SAMLRequestWriter;
+import org.picketlink.identity.federation.core.util.JAXPValidationUtil;
import org.picketlink.identity.federation.core.util.StaxUtil;
import org.picketlink.identity.federation.saml.v2.protocol.AuthnRequestType;
import org.picketlink.identity.federation.saml.v2.protocol.NameIDPolicyType;
+import org.w3c.dom.Document;
/**
* Validate the SAML2 AuthnRequest parse
@@ -78,6 +80,7 @@
writer.write(authnRequest);
ByteArrayInputStream bis = new ByteArrayInputStream(baos.toByteArray());
- DocumentUtil.getDocument(bis); //throws exceptions
+ Document doc = DocumentUtil.getDocument(bis); //throws exceptions
+ JAXPValidationUtil.validate(DocumentUtil.getNodeAsStream(doc));
}
}
\ No newline at end of file