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: FSAuthenticationStatement.java,v 1.2 2008/06/25 05:46:43 qcheng Exp $
f948ca04a28ccfeed9633bf4b0fb0d2c59c37478David Luna * Portions Copyrighted 2014 ForgeRock AS
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterpackage com.sun.identity.federation.message;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport com.sun.identity.federation.common.IFSConstants;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport com.sun.identity.federation.common.FSUtils;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport com.sun.identity.federation.message.common.AuthnContext;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport com.sun.identity.federation.message.common.FSMsgException;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport com.sun.identity.saml.assertion.AuthenticationStatement;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport com.sun.identity.saml.assertion.AuthorityBinding;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport com.sun.identity.saml.assertion.Subject;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport com.sun.identity.saml.assertion.SubjectLocality;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport com.sun.identity.saml.common.SAMLConstants;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport com.sun.identity.saml.common.SAMLException;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport com.sun.identity.shared.DateUtils;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport java.text.ParseException;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport java.util.ArrayList;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport java.util.Date;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport java.util.Iterator;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport java.util.List;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport org.w3c.dom.Attr;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport org.w3c.dom.Element;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport org.w3c.dom.NamedNodeMap;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport org.w3c.dom.Node;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport org.w3c.dom.NodeList;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster/**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * The <code>FSAuthenticationStatement</code> element represents an
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * authentication statement by the issuer that it's subject was authenticated
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * by a particular means at a particular time.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster *
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @supported.all.api
f948ca04a28ccfeed9633bf4b0fb0d2c59c37478David Luna * @deprecated since 12.0.0
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster */
f948ca04a28ccfeed9633bf4b0fb0d2c59c37478David Luna@Deprecated
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterpublic class FSAuthenticationStatement extends AuthenticationStatement {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster protected Date reauthenticateOnOrAfter;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster protected String sessionIndex = null;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster protected AuthnContext _authnContext;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster protected int minorVersion = IFSConstants.FF_11_PROTOCOL_MINOR_VERSION;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Default Constructor.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public FSAuthenticationStatement(){
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Constructor to create <code>FSAuthenticationStatement</code> object.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster *
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param authMethod the Authentication method in the statement.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param authInstant the authentication date in the statement.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param subject the Subject in the statement.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param authnContext the Authentication Context.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @throws FSMsgException if there is error
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * creating the object.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @throws SAMLException if the version is incorrect.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public FSAuthenticationStatement(
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String authMethod,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster Date authInstant,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster Subject subject,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster AuthnContext authnContext
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster ) throws FSMsgException, SAMLException {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster super(authMethod, authInstant, subject);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (authnContext == null) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (FSUtils.debug.messageEnabled()) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster FSUtils.debug.message("FSAuthenticationStatement: missing" +
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster "AuthnContext");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster } else {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster this._authnContext = authnContext;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Constructor for create <code>FSAuthenticationStatement</code> object.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster *
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param authMethod the Authentication method in the statement.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param authInstant the authentication date in the statement.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param subject the <code>Subject</code> in the statement.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param subjectLocality the <code>SubjectLocality</code> in the statement.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param authorityBinding a List of <code>AuthorityBinding</code> objects.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param authnContext the Authentication Context.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @throws FSMsgException if there is an error
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * creating the object.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @throws SAMLException on error.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public FSAuthenticationStatement(
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String authMethod,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster Date authInstant,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster Subject subject,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster SubjectLocality subjectLocality,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster List authorityBinding,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster AuthnContext authnContext
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster ) throws FSMsgException, SAMLException {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster super(authMethod,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster authInstant,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster subject,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster subjectLocality,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster authorityBinding);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster // check if the AuthnContext is null
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (authnContext == null) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (FSUtils.debug.messageEnabled()) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster FSUtils.debug.message("FSAuthenticationStatement: missing" +
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster "AuthnContext.");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster } else {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster this._authnContext = authnContext;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Constructs an <code>FSAuthenticationStatement</code> object from a
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Document Element.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster *
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param element the Document Element object.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @throws FSMsgException if document element is null
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * or required attributes cannot be retrieved from the element.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @throws SAMLException on error.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public FSAuthenticationStatement(Element element)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster throws FSMsgException, SAMLException {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster FSUtils.debug.message("FSAuthenticationStatement(Element): Called");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (element == null) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster FSUtils.debug.message("FSAuthenticationStatement: null input.");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster throw new FSMsgException("nullInput",null);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster int i = 0;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster //handle the attributes of AuthenticationStatement
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster NamedNodeMap atts = ((Node)element).getAttributes();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster int attCount = atts.getLength();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster for (i = 0; i < attCount; i++) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster Node att = atts.item(i);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (att.getNodeType() == Node.ATTRIBUTE_NODE) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String attName = att.getLocalName();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (attName == null || attName.length() == 0) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (FSUtils.debug.messageEnabled()) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster FSUtils.debug.message("FSAuthenticationStatement:" +
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster "Attribute name is either null or empty.");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster throw new FSMsgException("nullInput", null);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (attName.equals(IFSConstants.AUTHENTICATION_METHOD)) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster _authenticationMethod = ((Attr)att).getValue().trim();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster } else if (attName.equals(IFSConstants.AUTHENTICATION_INSTANT)){
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster try {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster _authenticationInstant =
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster DateUtils.stringToDate(((Attr)att).getValue());
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster } catch (ParseException pe ) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster FSUtils.debug.error("FSAuthenticationStatement:" +
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster "StringToDate: ", pe);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster throw new FSMsgException("wrongDateFormat",null);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster } // end of try...catch
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster } else if (attName.equals(IFSConstants.REAUTH_ON_OR_AFTER)) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster try {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster reauthenticateOnOrAfter =
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster DateUtils.stringToDate(((Attr)att).getValue());
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster } catch (ParseException pe ) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster FSUtils.debug.error("FSAuthenticationStatement:" +
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster "StringToDate: ", pe);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster throw new FSMsgException("wrongDateFormat",null);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster } else if (attName.equals(IFSConstants.SESSION_INDEX)) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster sessionIndex =
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster ((Attr)att).getValue().trim();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster } // end of for loop
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster //Handle the children elements of AuthenticationStatement
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster NodeList nodes = element.getChildNodes();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster int nodeCount = nodes.getLength();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (nodeCount > 0) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster for (i = 0; i < nodeCount; i++) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster Node currentNode = nodes.item(i);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (currentNode.getNodeType() == Node.ELEMENT_NODE) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String tagName = currentNode.getLocalName();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String tagNS = currentNode.getNamespaceURI();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if ((tagName == null) || tagName.length() == 0 ||
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster tagNS == null || tagNS.length() == 0) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (FSUtils.debug.messageEnabled()) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster FSUtils.debug.message("FSAuthenticationStatement: "+
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster "The tag name or tag namespace of child" +
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster " element is either null or empty.");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster throw new FSMsgException("nullInput",null);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (tagName.equals(IFSConstants.AUTH_SUBJECT)) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (this._subject != null) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (FSUtils.debug.messageEnabled()) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster FSUtils.debug.message(
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster "FSAuthenticationStatement" +
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster ":should only contain one subject");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster throw new FSMsgException("oneElement",null);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster } else {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster this._subject =
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster new FSSubject((Element) currentNode);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster } else if (tagName.equals(IFSConstants.SUBJECT_LOCALITY)) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (_subjectLocality != null) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (FSUtils.debug.messageEnabled()) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster FSUtils.debug.message(
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster "FSAuthenticationStatement"+
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster "Statement: should at most " +
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster "contain one SubjectLocality.");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster throw new FSMsgException("oneElement",null);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster } else {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster _subjectLocality =
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster new SubjectLocality((Element)currentNode);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster } else if (tagName.equals(IFSConstants.AUTHN_CONTEXT) &&
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster (tagNS.equals(
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster IFSConstants.libertyMessageNamespaceURI)||
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster tagNS.equals(IFSConstants.FF_12_XML_NS))) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (_authnContext != null) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (FSUtils.debug.messageEnabled()) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster FSUtils.debug.message("FSAuthentication"+
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster "Statement: should not contain more " +
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster "than one AuthnContext element.");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster throw new FSMsgException("oneElement",null);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster } else {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster _authnContext =
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster new AuthnContext((Element)currentNode);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster } else if (tagName.equals(IFSConstants.AUTHORITY_BINDING)) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (_authorityBinding == null) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster _authorityBinding = new ArrayList();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if ((_authorityBinding.add(new AuthorityBinding(
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster (Element)currentNode))) == false) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (FSUtils.debug.messageEnabled()) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster FSUtils.debug.message(
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster "FSAuthenticationStatement"+
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster ": failed to add to the" +
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster " AuthorityBinding list.");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster throw new FSMsgException("addListError",null);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster } else {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (FSUtils.debug.messageEnabled()) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster FSUtils.debug.message("FSAuthenticationStatement:"+
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster "Wrong element "
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster + tagName + "included.");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster throw new FSMsgException("wrongInput",null);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster } // end of if (currentNode.getNodeType() == Node.ELEMENT_NODE)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster } // end of for loop
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster } // end of if (nodeCount > 0)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster // check if the subject is null
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (this._subject == null) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (FSUtils.debug.messageEnabled()) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster FSUtils.debug.message("FSAuthenticationStatement should " +
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster "contain one subject.");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster throw new FSMsgException("missingElement",null);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster FSUtils.debug.message("FSAuthenticationStatement(Element): leaving");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Returns the value of <code>SessionIndex</code> attribute.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster *
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @return the value of </code>SessionIndex</code> attribute.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @see #setSessionIndex(String)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public String getSessionIndex(){
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster return sessionIndex;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Sets the <code>SessionIndex</code> attribute.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster *
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param sessionIndex the value of <code>SessionIndex</code> attribute.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @see #getSessionIndex
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public void setSessionIndex(String sessionIndex){
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster this.sessionIndex = sessionIndex;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Returns the re-authentication date for this
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * authentication statement.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster *
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @return the re-authentication date for this object.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @see #setReauthenticateOnOrAfter
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public Date getReauthenticateOnOrAfter(){
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster return reauthenticateOnOrAfter;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Sets re-authentication date for this authentication
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * statement.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster *
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param reauthenticateOnOrAfter the date object.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @see #getReauthenticateOnOrAfter
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public void setReauthenticateOnOrAfter(Date reauthenticateOnOrAfter){
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster this.reauthenticateOnOrAfter = reauthenticateOnOrAfter;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Returns the Authentication Context in this
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * authentication statement.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster *
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @return the Authentication Context object.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @see #setAuthnContext(AuthnContext)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public AuthnContext getAuthnContext(){
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster return _authnContext;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Sets the Authentication Context object.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster *
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param authnContext the Authentication Context object.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @see #getAuthnContext
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public void setAuthnContext(AuthnContext authnContext){
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster this._authnContext = authnContext;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Returns the value of <code>MinorVersion</code> attribute.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster *
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @return the value of <code>MinorVersion</code> attribute.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @see #setMinorVersion(int)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public int getMinorVersion() {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster return minorVersion;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Sets the value of <code>MinorVersion</code> attribute.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster *
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param version the <code>MinorVersion</code> attribute.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @see #getMinorVersion
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public void setMinorVersion(int version) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster minorVersion = version;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Returns a String representation of this object.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster *
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @throws FSMsgException if there is an error creating
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * the string.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @return a String representation of this Object.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public String toXMLString() throws FSMsgException {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster return (toXMLString(true, false));
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Returns a String representation of this object.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster *
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param includeNS Determines whether or not the namespace qualifier is
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * prepended to the Element when converted
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param declareNS Determines whether or not the namespace is declared
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * within the Element.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @return A string containing the valid XML for this object.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @throws FSMsgException if there is an error creating
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * the string.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public String toXMLString(boolean includeNS,boolean declareNS)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster throws FSMsgException {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster StringBuffer result = new StringBuffer(1000);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String prefix = "";
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String libprefix = "";
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String uri = "";
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String liburi = "";
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (includeNS) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster prefix = SAMLConstants.ASSERTION_PREFIX;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster libprefix = IFSConstants.LIB_PREFIX;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (declareNS) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (minorVersion == IFSConstants.FF_12_PROTOCOL_MINOR_VERSION) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster liburi = IFSConstants.LIB_12_NAMESPACE_STRING;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster } else {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster liburi = IFSConstants.LIB_NAMESPACE_STRING;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster uri = SAMLConstants.assertionDeclareStr;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster result.append(IFSConstants.LEFT_ANGLE).append(prefix)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster .append(IFSConstants.AUTHENTICATIONSTATEMENT)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster .append(uri).append(IFSConstants.SPACE).append(liburi)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster .append(IFSConstants.SPACE);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if ((_authenticationMethod != null) &&
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster _authenticationMethod.length() != 0) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster result.append(IFSConstants.AUTHENTICATION_METHOD).append("=\"")
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster .append(_authenticationMethod).append("\" ");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (_authenticationInstant != null) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster result.append(IFSConstants.AUTHENTICATION_INSTANT).append("=\"")
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster .append(DateUtils.toUTCDateFormat(_authenticationInstant))
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster .append("\" ");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (reauthenticateOnOrAfter != null) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster result.append(IFSConstants.REAUTH_ON_OR_AFTER).append("=\"")
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster .append(DateUtils.toUTCDateFormat(reauthenticateOnOrAfter))
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster .append("\" ");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (sessionIndex != null) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster result.append(IFSConstants.SESSION_INDEX).append("=\"")
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster .append(sessionIndex).append("\" ");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster result.append("xsi:type")
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster .append("=\"")
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster .append(libprefix)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster .append(IFSConstants.AUTHENTICATIONSTATEMENT_TYPE)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster .append(IFSConstants.QUOTE)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster .append(IFSConstants.RIGHT_ANGLE);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (getSubject() != null) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster result.append(
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster ((FSSubject)getSubject()).toXMLString(includeNS, false));
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (_subjectLocality != null) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster result.append(_subjectLocality.toString(includeNS, false));
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if ((_authorityBinding != null) && (!_authorityBinding.isEmpty())) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster Iterator iter = this.getAuthorityBinding().iterator();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster while (iter.hasNext()) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster AuthorityBinding authBinding =
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster (AuthorityBinding)iter.next();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster result.append(authBinding.toString(includeNS, false));
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (_authnContext != null) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster result.append(_authnContext.toXMLString(includeNS, false));
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster result.append(IFSConstants.START_END_ELEMENT).append(prefix)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster .append(IFSConstants.AUTHENTICATIONSTATEMENT)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster .append(IFSConstants.RIGHT_ANGLE);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster return(result.toString());
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster}