a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Copyright (c) 2006 Sun Microsystems Inc. All Rights Reserved
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * The contents of this file are subject to the terms
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * of the Common Development and Distribution License
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * (the License). You may not use this file except in
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * compliance with the License.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * You can obtain a copy of the License at
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * https://opensso.dev.java.net/public/CDDLv1.0.html or
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * See the License for the specific language governing
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * permission and limitations under the License.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * When distributing Covered Code, include this CDDL
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Header Notice in each file and include the License file
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * If applicable, add the following below the CDDL Header,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * with the fields enclosed by brackets [] replaced by
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * your own identifying information:
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * "Portions Copyrighted [year] [name of copyright owner]"
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * $Id: RequestAbstractImpl.java,v 1.5 2008/06/25 05:48:00 qcheng Exp $
449854c2a07b50ea64d9d6a8b03d18d4afeeee43Ken Stubbings * Portions Copyrighted 2015 ForgeRock AS.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport com.sun.identity.saml.xmlsig.XMLSignatureException;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport com.sun.identity.saml2.assertion.AssertionFactory;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport com.sun.identity.saml2.common.SAML2Constants;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport com.sun.identity.saml2.common.SAML2Exception;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport com.sun.identity.saml2.common.SAML2SDKUtils;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport com.sun.identity.saml2.protocol.Extensions;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport com.sun.identity.saml2.protocol.ProtocolFactory;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport com.sun.identity.saml2.protocol.RequestAbstract;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport com.sun.identity.saml2.xmlsig.SigManager;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * This abstract class defines methods for setting and retrieving attributes and
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * elements associated with a SAML request message used in SAML protocols. This
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * class is the base class for all SAML Requests.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterpublic abstract class RequestAbstractImpl implements RequestAbstract {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Sets the <code>Issuer</code> object.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param nameID the new <code>Issuer</code> object.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @throws SAML2Exception if the object is immutable.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @see #getIssuer
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public void setIssuer(Issuer nameID) throws SAML2Exception {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster SAML2SDKUtils.bundle.getString("objectImmutable"));
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Returns the <code>Issuer</code> Object.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @return the <code>Issuer</code> object.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @see #setIssuer(Issuer)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Returns the <code>Signature</code> Object as a string.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @return the <code>Signature</code> object as a string.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Signs the Request.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param privateKey Signing key
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param cert Certificate which contain the public key correlated to
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * the signing key; It if is not null, then the signature
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * will include the certificate; Otherwise, the signature
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * will not include any certificate.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @throws SAML2Exception if it could not sign the Request.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public void sign(PrivateKey privateKey, X509Certificate cert)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster Element signatureEle = SigManager.getSigInstance().sign(
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster signatureString = XMLUtils.print(signatureEle);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster signedXMLString = XMLUtils.print(signatureEle.getOwnerDocument().
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Sets the <code>Extensions</code> Object.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param extensions the <code>Extensions</code> object.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @throws SAML2Exception if the object is immutable.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @see #getExtensions
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public void setExtensions(Extensions extensions) throws SAML2Exception {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster SAML2SDKUtils.bundle.getString("objectImmutable"));
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Returns the <code>Extensions</code> Object.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @return the <code>Extensions</code> object.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @see #setExtensions(Extensions)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Sets the value of the <code>ID</code> attribute.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param id the new value of <code>ID</code> attribute.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @throws SAML2Exception if the object is immutable.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @see #getID
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public void setID(String id) throws SAML2Exception {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster SAML2SDKUtils.bundle.getString("objectImmutable"));
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Returns the value of the <code>ID</code> attribute.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @return the value of <code>ID</code> attribute.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @see #setID(String)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Sets the value of the <code>Version</code> attribute.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param version the value of <code>Version</code> attribute.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @throws SAML2Exception if the object is immutable.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @see #getVersion
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public void setVersion(String version) throws SAML2Exception {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster SAML2SDKUtils.bundle.getString("objectImmutable"));
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Returns the value of the <code>Version</code> attribute.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @return value of <code>Version</code> attribute.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @see #setVersion(String)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Sets the value of <code>IssueInstant</code> attribute.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param dateTime new value of the <code>IssueInstant</code> attribute.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @throws SAML2Exception if the object is immutable.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @see #getIssueInstant
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public void setIssueInstant(Date dateTime) throws SAML2Exception {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster SAML2SDKUtils.bundle.getString("objectImmutable"));
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Returns the value of <code>IssueInstant</code> attribute.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @return value of the <code>IssueInstant</code> attribute.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @see #setIssueInstant(Date)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Sets the value of the <code>Destination</code> attribute.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param destinationURI new value of <code>Destination</code> attribute.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @throws SAML2Exception if the object is immutable.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @see #getDestination
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public void setDestination(String destinationURI) throws SAML2Exception {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster SAML2SDKUtils.bundle.getString("objectImmutable"));
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Returns the value of the <code>Destination</code> attribute.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @return the value of <code>Destination</code> attribute.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @see #setDestination(String)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Sets the value of the Consent property.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param consent , value of Consent property.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @see #getConsent
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public void setConsent(String consent) throws SAML2Exception {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster SAML2SDKUtils.bundle.getString("objectImmutable"));
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Sets the value of the <code>Consent</code> attribute.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @return the value of <code>Consent</code> attribute.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @throws SAML2Exception if the object is immutable.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @see #setConsent(String)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Returns true if message is signed.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @return true if message is signed.
449854c2a07b50ea64d9d6a8b03d18d4afeeee43Ken Stubbings public boolean isSignatureValid(Set<X509Certificate> verificationCerts)
449854c2a07b50ea64d9d6a8b03d18d4afeeee43Ken Stubbings isSignatureValid = SigManager.getSigInstance().verify(signedXMLString, getID(), verificationCerts);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Returns a String representation of this Object.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @return a String representation of this Object.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @throws SAML2Exception if it could not create String object
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public String toXMLString() throws SAML2Exception {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster return toXMLString(true,false);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Returns a String representation of this Object.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param includeNSPrefix determines whether or not the namespace
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * qualifier is prepended to the Element when converted
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param declareNS determines whether or not the namespace is declared
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * within the Element.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @throws SAML2Exception if it could not create String object.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @return a String representation of this Object.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public String toXMLString(boolean includeNSPrefix, boolean declareNS)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster StringBuffer childElements = new StringBuffer();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster getXMLString(namespaces, attrs, childElements, includeNSPrefix,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster StringBuffer xmlString = new StringBuffer(1000);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster xmlString.append(SAML2Constants.PROTOCOL_PREFIX);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster for(Iterator iter = namespaces.iterator(); iter.hasNext();) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster xmlString.append(attrs).append(SAML2Constants.END_TAG)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster .append(SAML2Constants.NEWLINE).append(childElements)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster xmlString.append(SAML2Constants.PROTOCOL_PREFIX);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster xmlString.append(elementName).append(SAML2Constants.END_TAG);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster protected String getAttributesString() throws SAML2Exception {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster xml.append(DateUtils.toUTCDateFormat(issueInstant));
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if ((destinationURI != null) && (destinationURI.length() > 0)) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if ((consent != null) && (consent.length() > 0)) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster protected String getElements(boolean includeNSPrefix, boolean declareNS)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster xml.append(nameID.toXMLString(includeNSPrefix,declareNS));
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (signatureString != null && !signatureString.equals("")) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster xml.append(extensions.toXMLString(includeNSPrefix,declareNS));
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Makes this object immutable.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if ((nameID != null) && (nameID.isMutable())) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if ((extensions != null) && (extensions.isMutable())) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Returns true if object is mutable.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @return true if object is mutable.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /* Validates the requestID in the SAML Request. */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster protected void validateID(String requestID) throws SAML2Exception {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if ((requestId == null) || (requestId.length() == 0 )) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster SAML2SDKUtils.debug.message("ID is missing in the SAMLRequest");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster SAML2SDKUtils.bundle.getString("missingIDAttr"));
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /* Validates the version in the SAML Request. */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster protected void validateVersion(String version) throws SAML2Exception {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if ((version == null) || (version.length() == 0) ) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster throw new SAML2Exception(SAML2SDKUtils.bundle.getString(
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster "missingVersion"));
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster } else if (!version.equals(SAML2Constants.VERSION_2_0)) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster throw new SAML2Exception(SAML2SDKUtils.bundle.getString(
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster "incorrectVersion"));
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /* Validates the IssueInstant attribute in the SAML Request. */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster protected void validateIssueInstant(String issueInstantStr)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if ((issueInstantStr == null || issueInstantStr.length() == 0)) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster SAML2SDKUtils.bundle.getString("missingIssueInstant"));
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster issueInstant = DateUtils.stringToDate(issueInstantStr);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster SAML2SDKUtils.debug.message("Error parsing IssueInstant", e);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster SAML2SDKUtils.bundle.getString("incorrectIssueInstant"));
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /* Validates the required elements in the SAML Request. */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster protected void validateData() throws SAML2Exception {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster SAML2SDKUtils.bundle.getString("incorrectIssueInstant"));
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster validateIssueInstant(DateUtils.dateToString(issueInstant));
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster protected void getXMLString(Set namespaces, StringBuffer attrs,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster StringBuffer childElements, boolean includeNSPrefix, boolean declareNS)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster attrs.append(SAML2Constants.SPACE).append(SAML2Constants.ID)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster .append(SAML2Constants.EQUAL).append(SAML2Constants.QUOTE)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster .append(requestId).append(SAML2Constants.QUOTE)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster .append(SAML2Constants.SPACE).append(SAML2Constants.VERSION)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster .append(SAML2Constants.EQUAL).append(SAML2Constants.QUOTE)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster .append(SAML2Constants.SPACE).append(SAML2Constants.ISSUE_INSTANT)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster .append(SAML2Constants.EQUAL).append(SAML2Constants.QUOTE)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster .append(DateUtils.toUTCDateFormat(issueInstant))
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if ((destinationURI != null) && (destinationURI.length() > 0)) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster .append(SAML2Constants.EQUAL).append(SAML2Constants.QUOTE)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster .append(destinationURI).append(SAML2Constants.QUOTE);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if ((consent != null) && (consent.length() > 0)) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster .append(SAML2Constants.CONSENT).append(SAML2Constants.EQUAL)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster childElements.append(nameID.toXMLString(includeNSPrefix,declareNS))
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if ((signatureString != null) && (signatureString.length() > 0)) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster childElements.append(extensions.toXMLString(includeNSPrefix,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Parses the Docuemnt Element for this object.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param element the Document Element of this object.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @throws SAML2Exception if error parsing the Document Element.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster protected void parseDOMElement(Element element) throws SAML2Exception {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if ((nList !=null) && (nList.getLength() >0)) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (childNode.getNodeType() == Node.ELEMENT_NODE) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster ListIterator iter = childElementList.listIterator();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster SAML2SDKUtils.debug.message("RequestAbstractImpl." +
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster "parseDOMElement: Unexpected child element found");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster SAML2SDKUtils.bundle.getString("schemaViolation"));
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Parses attributes of the Docuemnt Element for this object.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param element the Document Element of this object.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @throws SAML2Exception if error parsing the Document Element.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster protected void parseDOMAttributes(Element element) throws SAML2Exception {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster requestId = element.getAttribute(SAML2Constants.ID);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster version = element.getAttribute(SAML2Constants.VERSION);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster destinationURI = element.getAttribute(SAML2Constants.DESTINATION);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster consent = element.getAttribute(SAML2Constants.CONSENT);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Parses child elements of the Docuemnt Element for this object.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param iter the child elements iterator.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @throws SAML2Exception if error parsing the Document Element.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster protected void parseDOMChileElements(ListIterator iter)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster AssertionFactory assertionFactory = AssertionFactory.getInstance();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster ProtocolFactory protoFactory = ProtocolFactory.getInstance();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String localName = childElement.getLocalName() ;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster nameID = assertionFactory.createIssuer(childElement);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster } else if (SAML2Constants.SIGNATURE.equals(localName)) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster signatureString = XMLUtils.print(childElement);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster } else if (SAML2Constants.EXTENSIONS.equals(localName)) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster extensions = protoFactory.createExtensions(childElement);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /* validate the sequence and occurence of Issuer Element*/
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster private void validateIssuer() throws SAML2Exception {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster SAML2SDKUtils.debug.message("RequestAbstractImpl." +
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster "validateIssuer: Too many Issuer Element");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster SAML2SDKUtils.bundle.getString("schemaViolation"));
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if ((signatureString != null) || (extensions != null)) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster SAML2SDKUtils.debug.message("RequestAbstractImpl." +
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster "validateIssuer: Issuer Element should be the " +
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster "first element in the Request");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster SAML2SDKUtils.bundle.getString("schemaViolation"));
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /* validate the sequence and occurence of Signature Element*/
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster private void validateSignature() throws SAML2Exception {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster SAML2SDKUtils.debug.message("RequestAbstractImpl." +
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster "validateSignature: Too many Signature Elements");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster SAML2SDKUtils.bundle.getString("schemaViolation"));
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster SAML2SDKUtils.debug.message("RequestAbstractImpl." +
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster "validateSignature: Signature should be in front of " +
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster "Extensions");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster SAML2SDKUtils.bundle.getString("schemaViolation"));
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /* validate the sequence and occurence of Extensions Element*/
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster private void validateExtensions() throws SAML2Exception {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster SAML2SDKUtils.debug.message("RequestAbstractImpl." +
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster "validateExtensions: Too many Extension Elements");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster SAML2SDKUtils.bundle.getString("schemaViolation"));