a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster/**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster *
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Copyright (c) 2006 Sun Microsystems Inc. All Rights Reserved
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster *
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 *
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 * opensso/legal/CDDLv1.0.txt
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * See the License for the specific language governing
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * permission and limitations under the License.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster *
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * When distributing Covered Code, include this CDDL
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Header Notice in each file and include the License file
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * at opensso/legal/CDDLv1.0.txt.
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 *
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * $Id: Message.java,v 1.3 2008/06/25 05:47:22 qcheng Exp $
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster *
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterpackage com.sun.identity.liberty.ws.soapbinding;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport java.lang.Object;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport java.io.InputStream;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport java.io.ByteArrayInputStream;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport java.io.ByteArrayOutputStream;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport java.io.StringReader;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport java.util.ArrayList;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport java.util.Iterator;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport java.security.cert.X509Certificate;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport org.w3c.dom.Document;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport org.w3c.dom.Element;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport org.w3c.dom.Node;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport org.w3c.dom.NodeList;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport java.util.List;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport javax.xml.soap.SOAPMessage;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport javax.xml.bind.JAXBContext;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport javax.xml.bind.JAXBException;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport javax.xml.bind.Marshaller;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport javax.xml.bind.Unmarshaller;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport javax.xml.transform.stream.StreamSource;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport com.sun.identity.liberty.ws.common.wsse.BinarySecurityToken;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport com.sun.identity.liberty.ws.common.wsse.WSSEConstants;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport com.sun.identity.liberty.ws.security.SecurityAssertion;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport com.sun.identity.liberty.ws.security.SecurityUtils;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport com.sun.identity.saml.common.SAMLConstants;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport com.sun.identity.saml.common.SAMLException;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport com.sun.identity.saml.common.SAMLUtils;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport com.sun.identity.shared.xml.XMLUtils;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster/**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * The <code>Message</code> class is used by web service client and server to
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * construct request or response. It will be sent over the SOAP connection.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * The <code>Message</code> contains SOAP headers and bodies. The SOAP binding
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * defines the following headers: <code>CorrelationHeader</code>,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * <code>ProviderHeader</code>, <code>ConsentHeader</code>,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * <code>UsageDirectiveHeader</code>, <code>ProcessingContextHeader</code>
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * and <code>ServiceInstanceUpdateHeader</code>.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * The first 2 are required and the others are optional.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Signing is mandatory for <code>CorrelationHeader</code> and SOAP Body
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * element which is the parent of the bodies. Other headers are optional,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * so each header needs to have a flag to specify whether it needs to be
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * signed or not. For each header that needs to be signed, it must have an
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * id attribute in the top element. The constuctor will take a SAML assertion
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * or cert alias in order to sign.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster *
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @supported.all.api
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterpublic class Message {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * anonymous profile is specified.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public static final int ANONYMOUS = 0;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * X509 Token profile is specified.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public static final int X509_TOKEN = 1;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * SAML Token profile is specified.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public static final int SAML_TOKEN = 2;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Bearer Token profile is specified.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public static final int BEARER_TOKEN = 3;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Authentication mechanism "urn:liberty:security:2003-08:null:null"
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public static final String NULL_NULL =
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster "urn:liberty:security:2003-08:null:null";
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Authentication mechanism "urn:liberty:security:2003-08:null:X509"
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public static final String NULL_X509 =
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster "urn:liberty:security:2003-08:null:X509";
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Authentication mechanism "urn:liberty:security:2003-08:null:SAML"
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public static final String NULL_SAML =
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster "urn:liberty:security:2003-08:null:SAML";
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Authentication mechanism "urn:liberty:security:2004-04:null:Bearer"
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public static final String NULL_BEARER =
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster "urn:liberty:security:2004-04:null:Bearer";
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Authentication mechanism "urn:liberty:security:2003-08:TLS:null"
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public static final String TLS_NULL =
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster "urn:liberty:security:2003-08:TLS:null";
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Authentication mechanism "urn:liberty:security:2003-08:TLS:X509"
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public static final String TLS_X509 =
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster "urn:liberty:security:2003-08:TLS:X509";
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Authentication mechanism "urn:liberty:security:2003-08:TLS:SAML"
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public static final String TLS_SAML =
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster "urn:liberty:security:2003-08:TLS:SAML";
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Authentication mechanism "urn:liberty:security:2004-04:TLS:Bearer"
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public static final String TLS_BEARER =
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster "urn:liberty:security:2004-04:TLS:Bearer";
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Authentication mechanism "urn:liberty:security:2003-08:ClientTLS:null"
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public static final String CLIENT_TLS_NULL =
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster "urn:liberty:security:2003-08:ClientTLS:null";
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Authentication mechanism "urn:liberty:security:2003-08:ClientTLS:X509"
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public static final String CLIENT_TLS_X509 =
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster "urn:liberty:security:2003-08:ClientTLS:X509";
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Authentication mechanism "urn:liberty:security:2003-08:ClientTLS:SAML"
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public static final String CLIENT_TLS_SAML =
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster "urn:liberty:security:2003-08:ClientTLS:SAML";
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Authentication mechanism "urn:liberty:security:2004-04:ClientTLS:Bearer"
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public static final String CLIENT_TLS_BEARER =
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster "urn:liberty:security:2004-04:ClientTLS:Bearer";
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Authentication mechanism "urn:liberty:security:2005-02:null:X509"
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public static final String NULL_X509_WSF11 =
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster "urn:liberty:security:2005-02:null:X509";
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Authentication mechanism "urn:liberty:security:2005-02:TLS:X509"
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public static final String TLS_X509_WSF11 =
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster "urn:liberty:security:2005-02:TLS:X509";
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Authentication mechanism "urn:liberty:security:2005-02:ClientTLS:X509"
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public static final String CLIENT_TLS_X509_WSF11 =
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster "urn:liberty:security:2005-02:ClientTLS:X509";
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Authentication mechanism "urn:liberty:security:2005-02:null:SAML"
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public static final String NULL_SAML_WSF11 =
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster "urn:liberty:security:2005-02:null:SAML";
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Authentication mechanism "urn:liberty:security:2005-02:TLS:SAML"
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public static final String TLS_SAML_WSF11 =
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster "urn:liberty:security:2005-02:TLS:SAML";
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Authentication mechanism "urn:liberty:security:2005-02:ClientTLS:SAML"
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public static final String CLIENT_TLS_SAML_WSF11 =
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster "urn:liberty:security:2005-02:ClientTLS:SAML";
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Authentication mechanism "urn:liberty:security:2005-02:null:Bearer"
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public static final String NULL_BEARER_WSF11 =
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster "urn:liberty:security:2005-02:null:Bearer";
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Authentication mechanism "urn:liberty:security:2005-02:TLS:Bearer"
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public static final String TLS_BEARER_WSF11 =
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster "urn:liberty:security:2005-02:TLS:Bearer";
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Authentication mechanism "urn:liberty:security:2005-02:ClientTLS:Bearer"
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public static final String CLIENT_TLS_BEARER_WSF11 =
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster "urn:liberty:security:2005-02:ClientTLS:Bearer";
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster private int securityProfileType = ANONYMOUS;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster private CorrelationHeader correlationHeader = null;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster private ConsentHeader consentHeader = null;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster private List usageDirectiveHeaders = null;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster private ProviderHeader providerHeader = null;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster private ProcessingContextHeader processingContextHeader = null;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster private ServiceInstanceUpdateHeader serviceInstanceUpdateHeader = null;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster private List soapHeaders = null;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster private List soapBodies = null;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster private List securityHeaders = null;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster private List signingIds = null;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster private SOAPFault soapFault = null;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster private String ipAddress = null;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster private String protocol = "http";
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster private SecurityAssertion assertion = null;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster private BinarySecurityToken binarySecurityToken = null;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster private X509Certificate certificate = null;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster private X509Certificate messageCertificate = null;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster private Object token = null;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster private String bodyId = null;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster private boolean clientAuthentication = false;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster private String authenticationMechanism = null;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster private Document doc = null;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster private String wsfVersion = SOAPBindingConstants.WSF_11_VERSION;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Default Constructor.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public Message() {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster correlationHeader = new CorrelationHeader();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster securityProfileType = ANONYMOUS;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * The default constructor uses default cert alias defined in AMConfig for
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * signing.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster *
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param providerHeader <code>ProviderHeader</code>.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @throws SOAPBindingException if provider header is null.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public Message(ProviderHeader providerHeader) throws SOAPBindingException {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster correlationHeader = new CorrelationHeader();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster this.providerHeader = providerHeader;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster securityProfileType = ANONYMOUS;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * This constructor takes a SAML assertion for signing.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster *
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param providerHeader <code>ProviderHeader</code>
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param assertion a SAML assertion
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @throws SOAPBindingException if an error occurs while processing
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * the SAML assertion or the provider
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * header is null
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public Message(ProviderHeader providerHeader,SecurityAssertion assertion)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster throws SOAPBindingException {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (assertion == null) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster throw new SOAPBindingException(
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster Utils.bundle.getString("SAMLAssertionNull"));
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster this.assertion = assertion;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (assertion.isBearer()) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster securityProfileType = BEARER_TOKEN;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster } else {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster securityProfileType = SAML_TOKEN;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster messageCertificate =
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster (X509Certificate)SecurityUtils.getCertificate(assertion);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster correlationHeader = new CorrelationHeader();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster this.providerHeader = providerHeader;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * This constructor takes a binary security token for signing.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster *
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param providerHeader <code>ProviderHeader</code>
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param token a binary security token
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @throws SOAPBindingException if an error occurs while processing
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * the token or the provider header is null
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public Message(ProviderHeader providerHeader, BinarySecurityToken token)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster throws SOAPBindingException {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (token == null) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster throw new SOAPBindingException(
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster Utils.bundle.getString("binarySecurityTokenNull"));
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster binarySecurityToken = token;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster wsfVersion = binarySecurityToken.getWSFVersion();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster messageCertificate =
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster (X509Certificate)SecurityUtils.getCertificate(binarySecurityToken);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster correlationHeader = new CorrelationHeader();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster this.providerHeader = providerHeader;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster securityProfileType = X509_TOKEN;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * This constructor is to create a SOAP fault message.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster *
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param soapFault <code>SOAPFault</code>
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public Message( SOAPFault soapFault) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster this.soapFault = soapFault;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster correlationHeader = new CorrelationHeader();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * This constructor takes an InputStream.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster *
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param inputStream an InputStream
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @throws SOAPBindingException if an error occurs while parsing the input.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public Message(InputStream inputStream) throws SOAPBindingException {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster try {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster doc = XMLUtils.toDOMDocument(inputStream, Utils.debug);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster parseDocument(doc);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster } catch (Exception ex) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster Utils.debug.error("Message:Message", ex);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster throw new SOAPBindingException(ex.getMessage());
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * This constructor takes a SOAP message which is received from a SOAP
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * connection.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster *
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param soapMessage a SOAP message
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @throws SOAPBindingException if an error occurs while parsing the
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * SOAP message
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public Message(SOAPMessage soapMessage)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster throws SOAPBindingException,SOAPFaultException {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster try {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster ByteArrayOutputStream bop = new ByteArrayOutputStream();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster soapMessage.writeTo(bop);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster ByteArrayInputStream bin =
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster new ByteArrayInputStream(bop.toByteArray());
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster doc = XMLUtils.toDOMDocument(bin, Utils.debug);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster parseDocument(doc);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster } catch (Exception ex) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster Utils.debug.error("Message:Message", ex);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster throw new SOAPBindingException(ex.getMessage());
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Gets security profile type. Possible values are ANONYMOUS, X509_TOKEN
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * and SAML_TOKEN.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster *
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @return the Security Profile type
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public int getSecurityProfileType() {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster return securityProfileType;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Sets security profile type.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster *
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param profileType Profile Type. Possible values are ANONYMOUS,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * X509_TOKEN , SAML_TOKEN and BEARER_TOKEN
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public void setSecurityProfileType(int profileType) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster securityProfileType = profileType;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Sets a binary security token for this message.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster *
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param binaryToken a binary security token
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public void setBinarySecurityToken(BinarySecurityToken binaryToken) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster binarySecurityToken = binaryToken;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster messageCertificate =
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster (X509Certificate)SecurityUtils.getCertificate(binarySecurityToken);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Gets authentication mechanism.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Possible values are NULL_NULL,NULL_X509, NULL_SAML, TLS_NULL,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * TLS_X509, TLS_SAML, CLIENT_TLS_NULL,CLIENT_TLS_X509, CLIENT_TLS_SAML,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * NULL_BEAER, TLS_BEARER, and CLIENT_TLS_BEARER.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster *
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @return an authentication mechanism
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public String getAuthenticationMechanism() {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (authenticationMechanism != null) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster return authenticationMechanism;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (protocol.equalsIgnoreCase("https")) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (certificate == null) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster switch (securityProfileType) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster case X509_TOKEN:
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if(SOAPBindingConstants.WSF_11_VERSION.equals(
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster wsfVersion)) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster authenticationMechanism = TLS_X509_WSF11;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster } else {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster authenticationMechanism = TLS_X509;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster return authenticationMechanism;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster case SAML_TOKEN:
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if(SOAPBindingConstants.WSF_11_VERSION.equals(
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster wsfVersion)) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster authenticationMechanism = TLS_SAML_WSF11;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster } else {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster authenticationMechanism = TLS_SAML;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster return authenticationMechanism;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster case BEARER_TOKEN:
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if(SOAPBindingConstants.WSF_11_VERSION.equals(
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster wsfVersion)) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster authenticationMechanism = TLS_BEARER_WSF11;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster } else {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster authenticationMechanism = TLS_BEARER;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster return authenticationMechanism;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster default:
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster authenticationMechanism = TLS_NULL;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster return authenticationMechanism;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster } else {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster switch (securityProfileType) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster case X509_TOKEN:
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if(SOAPBindingConstants.WSF_11_VERSION.equals(
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster wsfVersion)) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster authenticationMechanism = CLIENT_TLS_X509_WSF11;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster } else {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster authenticationMechanism = CLIENT_TLS_X509;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster return authenticationMechanism;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster case SAML_TOKEN:
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if(SOAPBindingConstants.WSF_11_VERSION.equals(
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster wsfVersion)) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster authenticationMechanism = CLIENT_TLS_SAML_WSF11;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster } else {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster authenticationMechanism = CLIENT_TLS_SAML;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster return authenticationMechanism;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster case BEARER_TOKEN:
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if(SOAPBindingConstants.WSF_11_VERSION.equals(
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster wsfVersion)) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster authenticationMechanism = CLIENT_TLS_BEARER_WSF11;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster } else {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster authenticationMechanism = CLIENT_TLS_BEARER;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster return authenticationMechanism;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster default:
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster authenticationMechanism = CLIENT_TLS_NULL;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster return authenticationMechanism;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster } else {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster switch (securityProfileType) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster case X509_TOKEN:
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if(SOAPBindingConstants.WSF_11_VERSION.equals(
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster wsfVersion)) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster authenticationMechanism = NULL_X509_WSF11;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster } else {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster authenticationMechanism = NULL_X509;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster return authenticationMechanism;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster case SAML_TOKEN:
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if(SOAPBindingConstants.WSF_11_VERSION.equals(
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster wsfVersion)) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster authenticationMechanism = NULL_SAML_WSF11;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster } else {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster authenticationMechanism = NULL_SAML;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster return authenticationMechanism;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster case BEARER_TOKEN:
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if(SOAPBindingConstants.WSF_11_VERSION.equals(
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster wsfVersion)) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster authenticationMechanism = NULL_BEARER_WSF11;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster } else {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster authenticationMechanism = NULL_BEARER;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster return authenticationMechanism;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster default:
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster authenticationMechanism = NULL_NULL;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster return authenticationMechanism;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Returns a boolean flag to determine if this Message will be sent to
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * a server that requires client authentication.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster *
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @return true if this Message will be sent to a server that
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * requires client authentication
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public boolean isClientAuthentication() {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster return clientAuthentication;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Returns the <code>CorrelationHeader</code>.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster *
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @return the <code>CorrelationHeader</code>.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public CorrelationHeader getCorrelationHeader() {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster return correlationHeader;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Returns the <code>ConsentHeader</code>.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster *
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @return the <code>ConsentHeader</code>.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public ConsentHeader getConsentHeader() {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster return consentHeader;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Returns a list of <code>UsageDirectiveHeader</code>.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster *
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @return a list of <code>UsageDirectiveHeader</code>.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public List getUsageDirectiveHeaders() {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster return usageDirectiveHeaders;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Returns the <code>ProviderHeader</code>.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster *
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @return the <code>ProviderHeader</code>.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public ProviderHeader getProviderHeader() {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster return providerHeader;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Returns the <code>ProcessingContextHeader</code>.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster *
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @return the <code>ProcessingContextHeader</code>.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public ProcessingContextHeader getProcessingContextHeader() {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster return processingContextHeader;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Returns the <code>ServiceInstanceUpdateHeader</code>.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster *
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @return the <code>ServiceInstanceUpdateHeader</code>.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public ServiceInstanceUpdateHeader getServiceInstanceUpdateHeader() {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster return serviceInstanceUpdateHeader;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Returns a list of SOAP headers except <code>CorrelationHeader</code>,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * <code>ConsentHeader</code>, <code>UsageDirectiveHeader</code> and
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * <code>Security</code> header. Each entry will be a
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * <code>org.w3c.dom.Element</code>.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster *
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @return a list of SOAP headers
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public List getOtherSOAPHeaders() {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster return soapHeaders;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Returns the <code>SOAPFault</code>.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster *
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @return the <code>SOAPFault</code>.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public SOAPFault getSOAPFault() {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster return soapFault;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Returns a list of SOAP bodies.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Each entry will be a <code>org.w3c.dom.Element</code>.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster *
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @return a list of SOAP bodies
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public List getBodies() {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster return soapBodies;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Returns a list of SOAP bodies.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Each entry will be a <code>org.w3c.dom.Element</code> with specified
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * namespace URI and local name.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster *
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param namespaceURI namspace URI
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param localName local name
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @return a list of SOAP bodies
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public List getBodies( String namespaceURI, String localName) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster ArrayList bodies = new ArrayList();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (soapBodies != null && !soapBodies.isEmpty()) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster Iterator iter = soapBodies.iterator();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster while(iter.hasNext()) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster Element bodyE = (Element)iter.next();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String ln = bodyE.getLocalName();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String ns = bodyE.getNamespaceURI();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (((ns == null && namespaceURI == null) ||
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster (ns != null && ns.equals(namespaceURI))) &&
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster ln.equals(localName)) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster bodies.add(bodyE);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster return soapBodies;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Returns a list of security header except the SAML assertion used in
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * SAML token profile or the binary security token used in X509 token
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * profile. Each entry will be a <code>org.w3c.dom.Element</code>.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster *
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @return a list of security headers
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public List getOtherSecurityHeaders() {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster return securityHeaders;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Returns the SAML assertion used for signing.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster *
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @return the SAML assertion.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public SecurityAssertion getAssertion() {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster return assertion;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Returns a binary security token used for signing.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster *
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @return a binary security token.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public BinarySecurityToken getBinarySecurityToken() {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster return binarySecurityToken;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Returns the X509 certificate used in client authentication.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster *
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @return a X509 certificate
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public X509Certificate getPeerCertificate() {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster return certificate;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Returns the X509 certificate used in message level authentication.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster *
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @return a X509 certificate.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public X509Certificate getMessageCertificate() {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster return messageCertificate;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Returns a token for the sender of this Message.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster *
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @return a token Object.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public Object getToken() {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster return token;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Returns the IP address of remote site of the SOAP connection.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster *
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @return a IP address
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public String getIPAddress() {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster return ipAddress;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Returns a list of id's for signing.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster *
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @return a list of id's for signing.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public List getSigningIds() {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster List ids = new ArrayList();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster ids.add(correlationHeader.getId());
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (consentHeader != null) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String id = consentHeader.getId();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (id != null) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster ids.add(id);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (usageDirectiveHeaders != null &&
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster !usageDirectiveHeaders.isEmpty()) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster Iterator iter = usageDirectiveHeaders.iterator();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster while(iter.hasNext()) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String id = ((UsageDirectiveHeader)iter.next()).getId();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (id != null) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster ids.add(id);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (providerHeader != null) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String id = providerHeader.getId();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (id != null) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster ids.add(id);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (processingContextHeader != null) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String id = processingContextHeader.getId();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (id != null) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster ids.add(id);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (serviceInstanceUpdateHeader != null) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String id = serviceInstanceUpdateHeader.getId();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (id != null) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster ids.add(id);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (signingIds != null && !signingIds.isEmpty()) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster ids.addAll(signingIds);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (bodyId == null) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster bodyId = SAMLUtils.generateID();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster ids.add(bodyId);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster return ids;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Sets the <code>CorrelationHeader</code>.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster *
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param correlationHeader <code>CorrelationHeader</code>
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public void setCorrelationHeader(CorrelationHeader correlationHeader) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (correlationHeader != null) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster this.correlationHeader = correlationHeader;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Sets <code>ConsentHeader</code>.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster *
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param consentHeader the <code>ConsentHeader</code>.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public void setConsentHeader(ConsentHeader consentHeader) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster this.consentHeader = consentHeader;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Sets a list of <code>UsageDirectiveHeader</code>.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster *
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param usageDirectiveHeaders a list of <code>UsageDirectiveHeader</code>.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public void setUsageDirectiveHeaders(List usageDirectiveHeaders) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster this.usageDirectiveHeaders = usageDirectiveHeaders;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Sets <code>ProviderHeader</code> if it is not null.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster *
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param providerHeader the <code>ProviderHeader</code>.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public void setProviderHeader(ProviderHeader providerHeader) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster this.providerHeader = providerHeader;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Sets the <code>ProcessingContextHeader</code>.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster *
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param processingContextHeader <code>ProcessingContextHeader</code>
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public void setProcessingContextHeader(
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster ProcessingContextHeader processingContextHeader) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster this.processingContextHeader = processingContextHeader;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Sets the <code>ServiceInstanceUpdateHeader</code>.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster *
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param serviceInstanceUpdateHeader
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * the <code>ServiceInstanceUpdateHeader</code>
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public void setServiceInstanceUpdateHeader(
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster ServiceInstanceUpdateHeader serviceInstanceUpdateHeader) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster this.serviceInstanceUpdateHeader = serviceInstanceUpdateHeader;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Sets a list of SOAP headers except <code>CorrelationHeader</code>,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * <code>ConsentHeader</code>, <code>UsageDirectiveHeader</code> and
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * 'Security' header. Each entry will be a <code>org.w3c.dom.Element</code>.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster *
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param headers a list of SOAP headers.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param signingIds a list of values of <code>id</code> attribute for
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * signing
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public void setOtherSOAPHeaders(List headers, List signingIds) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster soapHeaders = headers;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster this.signingIds = signingIds;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Sets a SOAP header except <code>CorrelationHeader</code>,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * <code>ConsentHeader</code> and <code>UsageDirectiveHeader</code>.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster *
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param header a <code>org.w3c.dom.Element</code>
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param signingId the value of <code>id</code> attribute for signing.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * A value null value for this attribute is assumed as no signing.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public void setOtherSOAPHeader(Element header, String signingId) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster soapHeaders = new ArrayList(1);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster soapHeaders.add(header);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (signingId != null) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster signingIds = new ArrayList(1);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster signingIds.add(signingId);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Sets a list of security headers. Each entry will be a
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * <code>org.w3c.dom.Element</code>.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster *
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param headers a list of security headers.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public void setOtherSecurityHeaders(List headers) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster securityHeaders = headers;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Sets a security header.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster *
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param header the security header element.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public void setOtherSecurityHeader(Element header) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster securityHeaders = new ArrayList(1);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster securityHeaders.add(header);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Sets the <code>SOAPFault</code>.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster *
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param soapFault the <code>SOAPFault</code>.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public void setSOAPFault(SOAPFault soapFault) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster this.soapFault = soapFault;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Sets a list of SOAP bodies. Each entry will be a
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * <code>org.w3c.dom.Element</code>. To send a SOAP Fault, please use
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * method <code>setSOAPFault</code>.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster *
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param bodies a list of SOAP bodies.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public void setSOAPBodies(List bodies) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster soapBodies = bodies;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Sets a SOAP body. To send a SOAP Fault, please use method
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * <code>setSOAPFault</code>.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster *
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param body a <code>org.w3c.dom.Element</code>
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public void setSOAPBody(Element body) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster soapBodies = new ArrayList(1);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster soapBodies.add(body);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Sets the IP address of remote site of the SOAP connection.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster *
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param ipAddress a IP address
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster void setIPAddress( String ipAddress) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster this.ipAddress = ipAddress;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Sets the protocol value . The expected
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * value is either http or https.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster *
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param protocol the protocol value.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster void setProtocol( String protocol) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (protocol == null) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster this.protocol = "http";
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster } else {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster this.protocol = protocol;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Sets the X509 certificate used in client authentication.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster *
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param cert a X509 certificate
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster void setPeerCertificate(X509Certificate cert) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster certificate = cert;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster clientAuthentication = (certificate != null);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Sets a boolean flag. If the flag is true, this Message will be sent to
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * a server that requires client authentication.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster *
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param clientAuthentication a boolean flag
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public void setClientAuthentication( boolean clientAuthentication) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster this.clientAuthentication = clientAuthentication;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Sets a token for the sender of this Message. The accual type
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * will be the same as the type of the Object retured from
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * <code>WebServiceAuthenticator.authenticate</code>.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster *
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param Object a token Object
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster void setToken( Object token) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster this.token = token;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Returns the SOAP message in String format.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster *
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @return the SOAP message in String format.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public String toString() {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster try {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster return XMLUtils.print(toDocument(true).getDocumentElement());
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster } catch (Exception ex) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster Utils.debug.error("Message.toString", ex);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster return "";
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Returns the SOAP message in <code>org.w3c.dom.Document</code> format.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster *
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @return the SOAP message in <code>org.w3c.dom.Document</code> format.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @throws SOAPBindingException if an error occurs while constructing
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * a document.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public Document toDocument() throws SOAPBindingException {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster return toDocument(false);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Returns the SOAP message in <code>org.w3c.dom.Document</code> format.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster *
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param refresh true to reconstruct a document, false to reuse a
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * previous document. If previous document doesn't exist,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * it will construct a new document.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @return the SOAP message in <code>org.w3c.dom.Document</code> format.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @throws SOAPBindingException if an error occurs while constructing
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * the <code>org.w3c.dom.Document</code>.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public Document toDocument( boolean refresh) throws SOAPBindingException {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (!refresh && doc != null) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster return doc;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster try {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster doc = XMLUtils.newDocument();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster } catch (Exception ex) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster Utils.debug.error("Message:toDocument", ex);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster throw new SOAPBindingException(ex.getMessage());
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String wsseNS = WSSEConstants.NS_WSSE_WSF11;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String wsuNS = WSSEConstants.NS_WSU_WSF11;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if(SOAPBindingConstants.WSF_10_VERSION.equals(wsfVersion)) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster wsseNS = WSSEConstants.NS_WSSE;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster wsuNS = WSSEConstants.NS_WSU;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster Element envelopeE = doc.createElementNS(SOAPBindingConstants.NS_SOAP,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster SOAPBindingConstants.PTAG_ENVELOPE);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster envelopeE.setAttributeNS(SOAPBindingConstants.NS_XML,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster SOAPBindingConstants.XMLNS_SOAP,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster SOAPBindingConstants.NS_SOAP);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster envelopeE.setAttributeNS(SOAPBindingConstants.NS_XML,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster SOAPBindingConstants.XMLNS_SOAP_BINDING,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster SOAPBindingConstants.NS_SOAP_BINDING);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster envelopeE.setAttributeNS(SOAPBindingConstants.NS_XML,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster SOAPBindingConstants.XMLNS_SOAP_BINDING_11,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster SOAPBindingConstants.NS_SOAP_BINDING_11);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster envelopeE.setAttributeNS(SOAPBindingConstants.NS_XML,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster WSSEConstants.TAG_XML_WSU,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster wsuNS);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster doc.appendChild(envelopeE);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster Element headerE = doc.createElementNS(SOAPBindingConstants.NS_SOAP,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster SOAPBindingConstants.PTAG_HEADER);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster envelopeE.appendChild(headerE);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (correlationHeader != null) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster correlationHeader.addToParent(headerE);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (consentHeader != null) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster consentHeader.addToParent(headerE);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (usageDirectiveHeaders != null &&
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster !usageDirectiveHeaders.isEmpty()) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster Iterator iter = usageDirectiveHeaders.iterator();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster while(iter.hasNext()) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster ((UsageDirectiveHeader)iter.next()).addToParent(headerE);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (providerHeader != null) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster providerHeader.addToParent(headerE);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (processingContextHeader != null) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster processingContextHeader.addToParent(headerE);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (serviceInstanceUpdateHeader != null) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster serviceInstanceUpdateHeader.addToParent(headerE);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (soapHeaders != null && !soapHeaders.isEmpty()) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (Utils.debug.messageEnabled()) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster Utils.debug.message("Message.toDocument: adding headers ");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster Iterator iter = soapHeaders.iterator();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster while(iter.hasNext()) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster Element soapHeaderE = (Element)iter.next();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster headerE.appendChild(doc.importNode(soapHeaderE, true));
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster boolean hasSecurityHeaders =
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster (securityHeaders != null && !securityHeaders.isEmpty());
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (securityProfileType != ANONYMOUS || hasSecurityHeaders) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (Utils.debug.messageEnabled()) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster Utils.debug.message(
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster "Message.toDocument: adding security headers ");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster Element securityE = doc.createElementNS(wsseNS,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster WSSEConstants.TAG_WSSE + ":" + WSSEConstants.TAG_SECURITYT);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster securityE.setAttributeNS(SOAPBindingConstants.NS_XML,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster WSSEConstants.TAG_XML_WSSE, wsseNS);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster headerE.appendChild(securityE);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (assertion != null) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster Document assertionDoc =
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster XMLUtils.toDOMDocument(assertion.toString(true, true),
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster Utils.debug);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (assertionDoc == null) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String msg =
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster Utils.bundle.getString("cannotProcessSAMLAssertion");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster Utils.debug.error("Message.Message: " + msg);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster throw new SOAPBindingException(msg);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster Element assertionE = assertionDoc.getDocumentElement();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster securityE.appendChild(doc.importNode(assertionE, true));
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster } else if (binarySecurityToken != null) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster Document bstDoc =
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster XMLUtils.toDOMDocument(binarySecurityToken.toString(),
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster Utils.debug);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (bstDoc == null) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String msg = Utils.bundle.getString(
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster "cannotProcessBinarySecurityToken");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster Utils.debug.error("Message.Message: " + msg);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster throw new SOAPBindingException(msg);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster Element binarySecurityTokenE = bstDoc.getDocumentElement();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster securityE.appendChild(doc.importNode(binarySecurityTokenE,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster true));
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (hasSecurityHeaders) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster Iterator iter = securityHeaders.iterator();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster while(iter.hasNext()) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster securityE.appendChild(doc.importNode((Node)iter.next(),
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster true));
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster Element bodyE = null;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (soapFault != null) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (Utils.debug.messageEnabled()) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster Utils.debug.message("Message.toDocument: adding soapFault ");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster bodyE = doc.createElementNS(SOAPBindingConstants.NS_SOAP,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster SOAPBindingConstants.PTAG_BODY);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster envelopeE.appendChild(bodyE);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster soapFault.addToParent(bodyE);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (soapBodies != null && !soapBodies.isEmpty()){
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (Utils.debug.messageEnabled()) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster Utils.debug.message("Message.toDocument: adding bodies ");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (bodyE == null) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster bodyE = doc.createElementNS(SOAPBindingConstants.NS_SOAP,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster SOAPBindingConstants.PTAG_BODY);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster bodyE.setAttributeNS(SOAPBindingConstants.NS_XML,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster SOAPBindingConstants.XMLNS_SOAP,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster SOAPBindingConstants.NS_SOAP);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster envelopeE.appendChild(bodyE);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster Iterator iter = soapBodies.iterator();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster while(iter.hasNext()) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster Element soapBodyE = (Element)iter.next();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster bodyE.appendChild(doc.importNode(soapBodyE, true));
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (bodyId == null) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster bodyId = SAMLUtils.generateID();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (SOAPBindingConstants.WSF_10_VERSION.equals(wsfVersion)) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster bodyE.setAttributeNS(null, SOAPBindingConstants.ATTR_id,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster bodyId);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster } else {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster bodyE.setAttributeNS(wsuNS, WSSEConstants.WSU_ID, bodyId);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster return doc;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Returns the SOAP message in SOAPMessage format.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster *
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @return the SOAP message in SOAPMessage format.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @throws SOAPBindingException if an error occurs while converting
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * this object to a SOAP message.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster SOAPMessage toSOAPMessage() throws SOAPBindingException {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster return Utils.DocumentToSOAPMessage(toDocument(true));
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Parses a <code>org.w3c.dom.Document</code> to construct this object.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster *
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param doc a <code>org.w3c.dom.Document</code>.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @throws SOAPBindingException if an error occurs while parsing
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * the document
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster private void parseDocument( Document doc) throws SOAPBindingException {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster Element envelopeE = doc.getDocumentElement();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (Utils.debug.messageEnabled()) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster Utils.debug.message("Message.parseDocument: doc = " +
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster XMLUtils.print(envelopeE));
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster NodeList nl = envelopeE.getChildNodes();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster int length = nl.getLength();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (length == 0) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String msg = Utils.bundle.getString("soapEnvelopeMissingChildren");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster Utils.debug.error("Message.parseDocument: " + msg);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster throw new SOAPBindingException(msg);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster Element headerE = null;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster Element bodyE = null;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster for(int i = 0; i < length; i++) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster Node child = nl.item(i);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (child.getNodeType() == Node.ELEMENT_NODE) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster Element element = (Element)child;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String localName = element.getLocalName();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String namespaceURI = element.getNamespaceURI();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (SOAPBindingConstants.NS_SOAP.equals(namespaceURI)) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (SOAPBindingConstants.TAG_HEADER.equals(localName)) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster headerE = element;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster } else if(SOAPBindingConstants.TAG_BODY.equals(localName)){
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster bodyE = element;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster Element securityE = null;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster soapHeaders = new ArrayList();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster // parsing Header element
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (headerE != null) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster nl = headerE.getChildNodes();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster length = nl.getLength();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster for (int i = 0; i < length; i++) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster Node child = nl.item(i);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (child.getNodeType() == Node.ELEMENT_NODE) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster Element element = (Element)child;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String localName = element.getLocalName();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String ns = element.getNamespaceURI();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (SOAPBindingConstants.NS_SOAP_BINDING.equals(ns)) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (SOAPBindingConstants.TAG_CORRELATION
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster .equals(localName)) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster correlationHeader = new CorrelationHeader(element);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster } else if (SOAPBindingConstants.TAG_CONSENT
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster .equals(localName)) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster consentHeader = new ConsentHeader(element);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster } else if(SOAPBindingConstants.TAG_USAGE_DIRECTIVE
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster .equals(localName)){
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (usageDirectiveHeaders == null) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster usageDirectiveHeaders = new ArrayList();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster usageDirectiveHeaders.add(
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster new UsageDirectiveHeader(element));
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster } else if (SOAPBindingConstants.TAG_PROVIDER
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster .equals(localName)) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster providerHeader = new ProviderHeader(element);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster } else if (SOAPBindingConstants.TAG_PROCESSING_CONTEXT
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster .equals(localName)) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster processingContextHeader =
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster new ProcessingContextHeader(element);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster } else {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster soapHeaders.add(element);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster } else if (SOAPBindingConstants.NS_SOAP_BINDING_11
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster .equals(ns) &&
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster SOAPBindingConstants
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster .TAG_SERVICE_INSTANCE_UPDATE
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster .equals(localName)) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster serviceInstanceUpdateHeader =
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster new ServiceInstanceUpdateHeader(element);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster } else if (WSSEConstants.NS_WSSE.equals(ns) ||
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster WSSEConstants.NS_WSSE_WSF11.equals(ns)) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (WSSEConstants.TAG_SECURITYT.equals(localName)) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster securityE = element;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster } else {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster soapHeaders.add(element);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster } else {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster soapHeaders.add(element);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster parseSecurityElement(securityE);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (soapHeaders.isEmpty()) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster soapHeaders = null;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster // parsing Body element
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (bodyE != null) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster nl = bodyE.getChildNodes();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster length = nl.getLength();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster for(int i = 0; i < length; i++) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster Node child = nl.item(i);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (child.getNodeType() == Node.ELEMENT_NODE) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster Element childE = (Element)child;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String localName = childE.getLocalName();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String ns = childE.getNamespaceURI();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (soapFault == null &&
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster SOAPBindingConstants.NS_SOAP.equals(ns) &&
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster SOAPBindingConstants.TAG_FAULT.equals(localName)) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster soapFault = new SOAPFault(childE);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster } else {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (soapBodies == null) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster soapBodies = new ArrayList();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster soapBodies.add(child);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Sets security profile type by parsing a security element.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster *
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param se a security element
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @throws SOAPBindingException if an error occurs while parsing
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * the security element
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster private void parseSecurityElement(Element securityE)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster throws SOAPBindingException {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (securityE == null) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster securityProfileType = ANONYMOUS;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster return;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String wsseNS = securityE.getNamespaceURI();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (wsseNS == null) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster securityProfileType = ANONYMOUS;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster return;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String wsuNS = null;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (wsseNS.equals(WSSEConstants.NS_WSSE_WSF11)) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster wsfVersion = SOAPBindingConstants.WSF_11_VERSION;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster wsuNS = WSSEConstants.NS_WSU_WSF11;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster } else if(wsseNS.equals(WSSEConstants.NS_WSSE)) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster wsfVersion = SOAPBindingConstants.WSF_10_VERSION;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster wsuNS = WSSEConstants.NS_WSU;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster } else {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster securityProfileType = ANONYMOUS;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster return;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster NodeList nl = securityE.getElementsByTagNameNS(wsseNS,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster SAMLConstants.TAG_SECURITYTOKENREFERENCE);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster Element securityTokenRefE = null;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String uri = null;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (nl != null && nl.getLength() > 0) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster securityTokenRefE = (Element)nl.item(0);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster List list = XMLUtils.getElementsByTagNameNS1(securityTokenRefE,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster wsseNS, SAMLConstants.TAG_REFERENCE);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (!list.isEmpty()) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster Element referenceE = (Element)list.get(0);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster uri = XMLUtils.getNodeAttributeValue(referenceE,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster SAMLConstants.TAG_URI);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (uri != null && uri.length() > 1 && uri.startsWith("#")) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster uri = uri.substring(1);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster } else {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String msg = Utils.bundle.getString("invalidReferenceURI");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster Utils.debug.error("Message.parseSecurityElement: " + msg);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster throw new SOAPBindingException(msg);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (Utils.debug.messageEnabled()) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster Utils.debug.message("Message.parseSecurityElement: " +
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster "SecurityTokenReference Reference URI = " + uri);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster securityProfileType = ANONYMOUS;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster securityHeaders = new ArrayList();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster nl = securityE.getChildNodes();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster int length = nl.getLength();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster for(int i = 0; i < length; i++) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster Node child = nl.item(i);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (child.getNodeType() == Node.ELEMENT_NODE) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String localName = child.getLocalName();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String ns = child.getNamespaceURI();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (securityProfileType != ANONYMOUS) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster securityHeaders.add(child);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster continue;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (SAMLConstants.BINARYSECURITYTOKEN.equals(localName) &&
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster wsseNS.equals(ns)) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster Element binarySecurityTokenE = (Element)child;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String valuetype = XMLUtils.getNodeAttributeValue(
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster binarySecurityTokenE,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster "ValueType");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster Utils.debug.message("ValueType: "+valuetype);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if ((valuetype != null) &&
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster valuetype.endsWith("ServiceSessionContext")) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster securityHeaders.add(child);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster continue;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (uri != null) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String id = XMLUtils.getNodeAttributeValueNS(
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster binarySecurityTokenE, wsuNS, SAMLConstants.TAG_ID);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (!uri.equals(id)) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster securityHeaders.add(child);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster continue;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster try {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster binarySecurityToken =
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster new BinarySecurityToken(binarySecurityTokenE);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster messageCertificate =
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster (X509Certificate)SecurityUtils.getCertificate(
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster binarySecurityToken);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster } catch (Exception ex) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String msg = Utils.bundle.getString(
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster "cannotProcessBinarySecurityToken");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster Utils.debug.error("Message.parseSecurityElement: "+
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster msg);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster throw new SOAPBindingException(msg);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (Utils.debug.messageEnabled()) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster Utils.debug.message("Message.parseSecurityElement:" +
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster " found binary security token");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster securityProfileType = X509_TOKEN;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster } else if (SAMLConstants.TAG_ASSERTION.equals(localName) &&
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster SAMLConstants.assertionSAMLNameSpaceURI.equals(ns)){
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster Element assertionE = (Element)child;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (uri != null) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String assertionID = XMLUtils.getNodeAttributeValue(
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster assertionE,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster SAMLConstants.TAG_ASSERTION_ID);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (!uri.equals(assertionID)) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster securityHeaders.add(child);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster continue;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster try {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster assertion = new SecurityAssertion(assertionE);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster } catch (SAMLException ex) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String msg = Utils.bundle.getString(
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster "cannotProcessSAMLAssertion");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster Utils.debug.error("Message.parseSecurityElement: " +
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster msg);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster throw new SOAPBindingException(msg);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (Utils.debug.messageEnabled()) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster Utils.debug.message("Message.parseSecurityElement:" +
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster " found security assertion, " +
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster "isBearer = " +
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster assertion.isBearer());
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (assertion.isBearer()) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster securityProfileType = BEARER_TOKEN;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster } else {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster securityProfileType = SAML_TOKEN;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster messageCertificate =
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster (X509Certificate)SecurityUtils.getCertificate(
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster assertion);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster } else {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster securityHeaders.add(child);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (securityHeaders.isEmpty()) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster securityHeaders = null;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Returns the web services version of the message.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster *
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @return the web services version.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public String
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster getWSFVersion()
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster return wsfVersion;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Sets the web services version to the message.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster *
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param version the web services framework version.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public void
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster setWSFVersion(String version)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster this.wsfVersion = version;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster}