ccf9d4a5c6453fa9f8b839baeee25147865fbb7dJames Phillpotts/*
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: FSAuthnRequest.java,v 1.4 2008/07/08 06:03:37 exu Exp $
ccf9d4a5c6453fa9f8b839baeee25147865fbb7dJames Phillpotts *
ccf9d4a5c6453fa9f8b839baeee25147865fbb7dJames Phillpotts * Portions Copyrighted 2014-2016 ForgeRock AS.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterpackage com.sun.identity.federation.message;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
ccf9d4a5c6453fa9f8b839baeee25147865fbb7dJames Phillpottsimport static org.forgerock.openam.utils.Time.*;
ccf9d4a5c6453fa9f8b839baeee25147865fbb7dJames Phillpotts
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport com.sun.identity.federation.common.FSUtils;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport com.sun.identity.federation.common.IFSConstants;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport com.sun.identity.federation.message.common.Extension;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport com.sun.identity.federation.message.common.FSMsgException;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport com.sun.identity.federation.message.common.RequestAuthnContext;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport com.sun.identity.saml.common.SAMLConstants;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport com.sun.identity.saml.common.SAMLException;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport com.sun.identity.saml.common.SAMLResponderException;
f948ca04a28ccfeed9633bf4b0fb0d2c59c37478David Lunaimport com.sun.identity.saml.common.SAMLUtils;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport com.sun.identity.saml.protocol.AbstractRequest;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport com.sun.identity.saml.xmlsig.XMLSignatureManager;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport com.sun.identity.shared.DateUtils;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport com.sun.identity.shared.encode.Base64;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport com.sun.identity.shared.encode.URLEncDec;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport com.sun.identity.shared.xml.XMLUtils;
f948ca04a28ccfeed9633bf4b0fb0d2c59c37478David Lunaimport java.text.ParseException;
f948ca04a28ccfeed9633bf4b0fb0d2c59c37478David Lunaimport java.util.ArrayList;
f948ca04a28ccfeed9633bf4b0fb0d2c59c37478David Lunaimport java.util.Collections;
f948ca04a28ccfeed9633bf4b0fb0d2c59c37478David Lunaimport java.util.Date;
f948ca04a28ccfeed9633bf4b0fb0d2c59c37478David Lunaimport java.util.Iterator;
f948ca04a28ccfeed9633bf4b0fb0d2c59c37478David Lunaimport java.util.List;
f948ca04a28ccfeed9633bf4b0fb0d2c59c37478David Lunaimport javax.servlet.http.HttpServletRequest;
f948ca04a28ccfeed9633bf4b0fb0d2c59c37478David Lunaimport org.w3c.dom.Document;
f948ca04a28ccfeed9633bf4b0fb0d2c59c37478David Lunaimport org.w3c.dom.Element;
f948ca04a28ccfeed9633bf4b0fb0d2c59c37478David Lunaimport org.w3c.dom.Node;
f948ca04a28ccfeed9633bf4b0fb0d2c59c37478David Lunaimport org.w3c.dom.NodeList;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster/**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * The class <code>FSAuthnRequest</code> is used to create , parse
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * <code>AuthnRequest</code> object.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster *
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @supported.all.api
f948ca04a28ccfeed9633bf4b0fb0d2c59c37478David Luna * @deprecated since 12.0.0
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster */
f948ca04a28ccfeed9633bf4b0fb0d2c59c37478David Luna@Deprecated
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterpublic class FSAuthnRequest extends AbstractRequest {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster private List extensions = null;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster private boolean isPassive = false;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster private boolean forceAuthn = false;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster private boolean federate = false;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster private String nameIDPolicy = null;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster private String protocolProfile = null;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster private String providerId = null;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster private RequestAuthnContext authnContext = null;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster private String relayState = null;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster protected String xmlString = null;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster protected String signatureString = null;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster protected String authContextCompType = null;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster protected String id = null;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster protected String assertionConsumerServiceID = null;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster protected String consentURI = null;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster protected String affiliationID = null;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster protected int minorVersion = 0;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster protected FSScoping scoping = null;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster private static final String QUERY_STRING_EXTENSION_PREFIX = "AE_";
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Default AuthnRequest construtor
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public FSAuthnRequest() {
ccf9d4a5c6453fa9f8b839baeee25147865fbb7dJames Phillpotts setIssueInstant(newDate());
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Constructor to create <code>FSAuthnRequest</code> object.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster *
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param requestId the request identifier.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param respondWiths List of respond withs attributes.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param providerID provider id of the requesting provider.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param forceAuthn Force Authentication boolean value.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param isPassive attribute for IDP to be passive or active.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param fed attribute to distingush this request for Federation or SSO
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param nameIDPolicy Name ID Policy for this request, possible values
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * are "none", "onetime", "federated", "any".
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param protocolProf ProtocolProfile used for the SSO.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param authnCxt Authentication Context used for the SSO.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param relaySt Relay State i.e. original URL to be redirected after SSO.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param authContextCompType AuthContext comparison type.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @throws <code>FSMsgException</code> on error.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public FSAuthnRequest(String requestId,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster List respondWiths,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String providerID,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster boolean forceAuthn,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster boolean isPassive,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster boolean fed,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String nameIDPolicy,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String protocolProf,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster RequestAuthnContext authnCxt,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String relaySt,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String authContextCompType)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster throws FSMsgException {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
ccf9d4a5c6453fa9f8b839baeee25147865fbb7dJames Phillpotts setIssueInstant(newDate());
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if((respondWiths != null) && (respondWiths != Collections.EMPTY_LIST)) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster int length = respondWiths.size();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster for(int i = 0; i < length; i++) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster Object temp = respondWiths.get(i);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if(!(temp instanceof String)) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster FSUtils.debug.error("FSAuthnRequest: wrong input for " +
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster "RespondWith");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster throw new FSMsgException("wrongInput", null);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster this.respondWiths = respondWiths;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if ((requestId != null) && (requestId.length() != 0)) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster requestID = requestId;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster } else {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster // random generate one
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster requestID = SAMLUtils.generateID();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (requestID == null) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster FSUtils.debug.error("FSAuthnRequest: couldn't gen RequestID.");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster throw new FSMsgException("errorGenerateID",null);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster this.isPassive = isPassive;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster this.forceAuthn = forceAuthn;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster this.providerId = providerID;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster this.federate = fed;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster this.nameIDPolicy = nameIDPolicy;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster this.protocolProfile = protocolProf;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster this.relayState = relaySt;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster this.authnContext = authnCxt;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster this.authContextCompType = authContextCompType;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster id = requestID;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Constructor to create <code>FSAuthnRequest</code> object.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster *
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param root the Document Element object.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @throws <code>FSMsgException</code> on error.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public FSAuthnRequest(Element root) throws FSMsgException {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String tag = null;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (root == null) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster FSUtils.debug.error("FSAuthnRequest(Element): null input.");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster throw new FSMsgException("nullInput",null);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if(((tag = root.getLocalName()) == null) ||
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster (!tag.equals(IFSConstants.AUTHN_REQUEST))) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster FSUtils.debug.error("FSAuthnRequest(Element): wrong input");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster throw new FSMsgException("wrongInput",null);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster // Attribute IssueInstant
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String instantString = root.getAttribute(IFSConstants.ISSUE_INSTANT);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if ((instantString == null) || (instantString.length() == 0)) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster FSUtils.debug.error("FSAuthnRequest(Element): "
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster + "missing IssueInstant");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String[] args = { IFSConstants.ISSUE_INSTANT };
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster throw new FSMsgException("missingAttribute",args);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster } else {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster try {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster issueInstant = DateUtils.stringToDate(instantString);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster } catch (ParseException e) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster FSUtils.debug.error("FSAuthnRequest(Element): "
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster + "could not parse IssueInstant", e);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster throw new FSMsgException("wrongInput", null);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster // Consent attribute
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster consentURI = root.getAttribute(IFSConstants.CONSENT);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster id = root.getAttribute(IFSConstants.ID);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster requestID = root.getAttribute(IFSConstants.AUTH_REQUEST_ID);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster parseMajorVersion(root.getAttribute(IFSConstants.MAJOR_VERSION));
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster parseMinorVersion(root.getAttribute(IFSConstants.MINOR_VERSION));
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster NodeList contentnl = root.getChildNodes();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster Node child;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String nodeName;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster int length = contentnl.getLength();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster for(int i = 0; i < length; i++) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster child = contentnl.item(i);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if ((nodeName = child.getLocalName()) != null) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (nodeName.equals(IFSConstants.RESPONDWITH)) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (respondWiths == Collections.EMPTY_LIST) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster respondWiths = new ArrayList();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster respondWiths.add(XMLUtils.getElementValue((Element) child));
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster } else if (nodeName.equals(IFSConstants.PROVIDER_ID)) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if(providerId != null && providerId.length() != 0) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster FSUtils.debug.error("FSAuthnRequest(Element): should"
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster + "contain only one ProviderID.");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster throw new FSMsgException("wrongInput",null);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster providerId = XMLUtils.getElementValue((Element) child);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster } else if(nodeName.equals(IFSConstants.NAMEID_POLICY_ELEMENT)) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster nameIDPolicy=XMLUtils.getElementValue((Element) child);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (nameIDPolicy != null &&
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster (nameIDPolicy.equals(
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster IFSConstants.NAME_ID_POLICY_FEDERATED) ||
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster nameIDPolicy.equals(
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster IFSConstants.NAME_ID_POLICY_ONETIME))
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster ) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster federate = true;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster } else if (nodeName.equals(IFSConstants.FEDERATE)) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String strFederate =
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster XMLUtils.getElementValue((Element)child);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if(strFederate != null && strFederate.length() != 0 &&
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster strFederate.equals(IFSConstants.TRUE)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster || strFederate.equals(IFSConstants.ONE)) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster federate = true;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster } else if (nodeName.equals(IFSConstants.IS_PASSIVE_ELEM)) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String strIsPassive =
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster XMLUtils.getElementValue((Element) child);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if(strIsPassive != null && strIsPassive.length() != 0 &&
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster strIsPassive.equals(IFSConstants.TRUE)) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster isPassive = true;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster } else {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster isPassive = false;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster } else if (nodeName.equals(IFSConstants.FORCE_AUTHN_ELEM)) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String strForceAuthn =
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster XMLUtils.getElementValue((Element) child);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if(strForceAuthn != null && strForceAuthn.length() != 0 &&
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster strForceAuthn.equals(IFSConstants.TRUE)) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster forceAuthn = true;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster } else {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster forceAuthn = false;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster } else if (nodeName.equals(IFSConstants.PROTOCOL_PROFILE)) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if(protocolProfile != null
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster && protocolProfile.length() != 0) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster FSUtils.debug.error("FSAuthnRequest(Element): "
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster + "should contain only one ProtocolProfile.");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster throw new FSMsgException("wrongInput",null);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster protocolProfile = XMLUtils.getElementValue((Element) child);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster } else if (nodeName.equals(IFSConstants.AUTHN_CONTEXT)) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster authnContext = new RequestAuthnContext((Element) child);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster } else if (nodeName.equals(
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster IFSConstants.REQUEST_AUTHN_CONTEXT)) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster authnContext = new RequestAuthnContext((Element) child);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster } else if (nodeName.equals(IFSConstants.RELAY_STATE)) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster relayState = XMLUtils.getElementValue((Element) child);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster } else if (nodeName.equals(
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster IFSConstants.AUTHN_CONTEXT_COMPARISON)) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster authContextCompType =
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster XMLUtils.getElementValue((Element) child);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if(!(authContextCompType.equals(IFSConstants.MINIMUM) ||
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster authContextCompType.equals(IFSConstants.EXACT) ||
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster authContextCompType.equals(IFSConstants.MAXIMUM) ||
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster authContextCompType.equals(IFSConstants.BETTER)) ) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster throw new FSMsgException("wrongInput",null);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster } else if (nodeName.equals(
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster IFSConstants.ASSERTION_CONSUMER_SVC_ID)) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster assertionConsumerServiceID =
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster XMLUtils.getElementValue((Element) child);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster } else if(nodeName.equals(IFSConstants.AFFILIATIONID)) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster affiliationID = XMLUtils.getElementValue((Element) child);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster } else if(nodeName.equals(IFSConstants.EXTENSION)) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (extensions == null) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster extensions = new ArrayList();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster extensions.add(new Extension((Element)child));
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster } else if(nodeName.equals(IFSConstants.SCOPING)) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster scoping = new FSScoping((Element)child);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster } else {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster FSUtils.debug.error("FSAuthnRequest(Element): invalid"
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster + " node" + nodeName);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster throw new FSMsgException("wrongInput",null);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster //check for signature
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster List signs = XMLUtils.getElementsByTagNameNS1(root,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster SAMLConstants.XMLSIG_NAMESPACE_URI,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster SAMLConstants.XMLSIG_ELEMENT_NAME);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster int signsSize = signs.size();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (signsSize == 1) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster Element elem = (Element)signs.get(0);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster setSignature(elem);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster xmlString = XMLUtils.print(root);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster signed = true;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster } else if (signsSize != 0) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster FSUtils.debug.error("FSAuthnRequest(Element): "
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster + "included more than one Signature element.");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster throw new FSMsgException("moreElement",null);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster //end check for signature
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * This method translates the request to an XML document String based on
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * the Request schema described above.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * NOTE: this is a complete AuthnRequest xml string with RequestID,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * MajorVersion, etc.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster *
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @return XML String representing the request.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @throws FSMsgException if there is an error.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public String toXMLString() throws FSMsgException {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster return toXMLString(true, true);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Creates a String representation of the &lt;lib:AuthnRequest&gt; element.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster *
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param includeNS : Determines whether or not the namespace qualifier
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * is prepended to the Element when converted
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param declareNS : Determines whether or not the namespace is declared
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * within the Element.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @return string containing the valid XML for this element.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @throws FSMsgException if there is an error.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public String toXMLString(
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster boolean includeNS, boolean declareNS
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster ) throws FSMsgException {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster return toXMLString(includeNS, declareNS, false);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Creates a String representation of the &lt;lib:AuthnRequest&gt; element.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster *
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param includeNS Determines whether or not the namespace qualifier
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * is prepended to the Element when converted
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param declareNS Determines whether or not the namespace is declared
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * within the Element.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param includeHeader Determines whether the output include the xml
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * declaration header.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @return A string containing the valid XML for this element.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @throws FSMsgException if there is an error.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public String toXMLString(boolean includeNS,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster boolean declareNS,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster boolean includeHeader) throws FSMsgException {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (xmlString != null) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster return xmlString;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if((providerId == null) || (providerId.length() == 0)){
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster FSUtils.debug.error("FSAuthnRequest.toXMLString: "
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster + "providerId is null in the request with requestId:"
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster + requestID);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String[] args = { requestID };
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster throw new FSMsgException("nullProviderIdWRequestId",args);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if ((requestID == null) || (requestID.length() == 0)){
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster requestID = SAMLUtils.generateID();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (requestID == null) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster FSUtils.debug.error("FSAuthnRequest.toXMLString: "
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster + "couldn't generate RequestID.");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster throw new FSMsgException("errorGenerateID",null);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster StringBuffer xml = new StringBuffer(300);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (includeHeader) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster xml.append("<?xml version=\"1.0\" encoding=\"").
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster append(IFSConstants.DEFAULT_ENCODING).append("\" ?>");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String prefix = "";
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String samlpPrefix = "";
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String uri = "";
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String samlpUri = "";
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (includeNS) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster prefix = IFSConstants.LIB_PREFIX;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster samlpPrefix = IFSConstants.PROTOCOL_PREFIX;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (declareNS) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if(minorVersion == IFSConstants.FF_12_PROTOCOL_MINOR_VERSION) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster uri = IFSConstants.LIB_12_NAMESPACE_STRING;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster } else {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster uri = IFSConstants.LIB_NAMESPACE_STRING;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster samlpUri = IFSConstants.PROTOCOL_NAMESPACE_STRING;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String instantString = DateUtils.toUTCDateFormat(issueInstant);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (requestID != null) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster xml.append(IFSConstants.LEFT_ANGLE)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster .append(prefix)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster .append(IFSConstants.AUTHN_REQUEST)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster .append(uri)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster .append(IFSConstants.SPACE)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster .append(samlpUri);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (minorVersion == IFSConstants.FF_11_PROTOCOL_MINOR_VERSION &&
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster id != null && !(id.length() == 0)){
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster xml.append(IFSConstants.SPACE)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster .append(IFSConstants.ID)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster .append(IFSConstants.EQUAL_TO)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster .append(IFSConstants.QUOTE)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster .append(id)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster .append(IFSConstants.QUOTE);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster xml.append(IFSConstants.SPACE)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster .append(IFSConstants.REQUEST_ID)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster .append(IFSConstants.EQUAL_TO)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster .append(IFSConstants.QUOTE)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster .append(requestID)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster .append(IFSConstants.QUOTE)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster .append(IFSConstants.SPACE)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster .append(IFSConstants.MAJOR_VERSION)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster .append(IFSConstants.EQUAL_TO)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster .append(IFSConstants.QUOTE)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster .append(majorVersion)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster .append(IFSConstants.QUOTE)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster .append(IFSConstants.SPACE)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster .append(IFSConstants.MINOR_VERSION)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster .append(IFSConstants.EQUAL_TO)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster .append(IFSConstants.QUOTE)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster .append(minorVersion)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster .append(IFSConstants.QUOTE)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster .append(IFSConstants.SPACE)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster .append(IFSConstants.ISSUE_INSTANT)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster .append(IFSConstants.EQUAL_TO)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster .append(IFSConstants.QUOTE)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster .append(instantString)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster .append(IFSConstants.QUOTE);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (consentURI != null) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster xml.append(IFSConstants.SPACE)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster .append(IFSConstants.CONSENT)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster .append(IFSConstants.EQUAL_TO)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster .append(IFSConstants.QUOTE)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster .append(consentURI)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster .append(IFSConstants.QUOTE);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster xml.append(IFSConstants.RIGHT_ANGLE);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if((respondWiths != null) &&
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster (respondWiths != Collections.EMPTY_LIST)) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster Iterator i = respondWiths.iterator();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster while (i.hasNext()) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster xml.append(IFSConstants.LEFT_ANGLE)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster .append(samlpPrefix)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster .append(IFSConstants.RESPONDWITH)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster .append(IFSConstants.RIGHT_ANGLE)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster .append((String) i.next())
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster .append(IFSConstants.START_END_ELEMENT)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster .append(samlpPrefix)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster .append(IFSConstants.RESPONDWITH)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster .append(IFSConstants.RIGHT_ANGLE);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (signed) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (signatureString != null) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster xml.append(signatureString);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster } else if (signature != null) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster signatureString = XMLUtils.print(signature);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster xml.append(signatureString);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if ((extensions != null) && (!extensions.isEmpty())) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster for(Iterator iter = extensions.iterator(); iter.hasNext();) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster Extension extension = (Extension)iter.next();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster extension.setMinorVersion(minorVersion);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster xml.append(extension.toXMLString());
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster xml.append(IFSConstants.LEFT_ANGLE)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster .append(prefix)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster .append(IFSConstants.PROVIDER_ID)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster .append(IFSConstants.RIGHT_ANGLE)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster .append(providerId)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster .append(IFSConstants.START_END_ELEMENT)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster .append(prefix)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster .append(IFSConstants.PROVIDER_ID)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster .append(IFSConstants.RIGHT_ANGLE);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (affiliationID != null) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster xml.append(IFSConstants.LEFT_ANGLE)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster .append(prefix)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster .append(IFSConstants.AFFILIATIONID)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster .append(IFSConstants.RIGHT_ANGLE)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster .append(affiliationID)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster .append(IFSConstants.START_END_ELEMENT)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster .append(prefix)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster .append(IFSConstants.AFFILIATIONID)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster .append(IFSConstants.RIGHT_ANGLE);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (minorVersion == IFSConstants.FF_12_PROTOCOL_MINOR_VERSION) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String strFederate = IFSConstants.NAME_ID_POLICY_NONE;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (federate) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster strFederate = IFSConstants.NAME_ID_POLICY_FEDERATED;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (nameIDPolicy != null && nameIDPolicy.length()>0) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster strFederate = nameIDPolicy;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster xml.append(IFSConstants.LEFT_ANGLE)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster .append(prefix)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster .append(IFSConstants.NAMEID_POLICY_ELEMENT)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster .append(IFSConstants.RIGHT_ANGLE)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster .append(strFederate)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster .append(IFSConstants.START_END_ELEMENT)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster .append(prefix)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster .append(IFSConstants.NAMEID_POLICY_ELEMENT)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster .append(IFSConstants.RIGHT_ANGLE);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster } else {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String strFederate = IFSConstants.FALSE;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (federate) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster strFederate = IFSConstants.TRUE;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster xml.append(IFSConstants.LEFT_ANGLE)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster .append(prefix)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster .append(IFSConstants.FEDERATE)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster .append(IFSConstants.RIGHT_ANGLE)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster .append(strFederate)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster .append(IFSConstants.START_END_ELEMENT)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster .append(prefix)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster .append(IFSConstants.FEDERATE)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster .append(IFSConstants.RIGHT_ANGLE);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String strForceAuthn = IFSConstants.FALSE;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (forceAuthn) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster strForceAuthn = IFSConstants.TRUE;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster xml.append(IFSConstants.LEFT_ANGLE)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster .append(prefix)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster .append(IFSConstants.FORCE_AUTHN_ELEM)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster .append(IFSConstants.RIGHT_ANGLE)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster .append(strForceAuthn)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster .append(IFSConstants.START_END_ELEMENT)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster .append(prefix)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster .append(IFSConstants.FORCE_AUTHN_ELEM)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster .append(IFSConstants.RIGHT_ANGLE);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String strIsPassive = IFSConstants.FALSE;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (isPassive) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster strIsPassive = IFSConstants.TRUE;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster xml.append(IFSConstants.LEFT_ANGLE)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster .append(prefix)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster .append(IFSConstants.IS_PASSIVE_ELEM)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster .append(IFSConstants.RIGHT_ANGLE)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster .append(strIsPassive)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster .append(IFSConstants.START_END_ELEMENT)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster .append(prefix)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster .append(IFSConstants.IS_PASSIVE_ELEM)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster .append(IFSConstants.RIGHT_ANGLE);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if(protocolProfile != null && protocolProfile.length() != 0) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster xml.append(IFSConstants.LEFT_ANGLE)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster .append(prefix)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster .append(IFSConstants.PROTOCOL_PROFILE)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster .append(IFSConstants.RIGHT_ANGLE)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster .append(protocolProfile)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster .append(IFSConstants.START_END_ELEMENT)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster .append(prefix)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster .append(IFSConstants.PROTOCOL_PROFILE)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster .append(IFSConstants.RIGHT_ANGLE);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if(assertionConsumerServiceID != null) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster xml.append(IFSConstants.LEFT_ANGLE)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster .append(prefix)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster .append(IFSConstants.ASSERTION_CONSUMER_SVC_ID)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster .append(IFSConstants.RIGHT_ANGLE)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster .append(assertionConsumerServiceID)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster .append(IFSConstants.START_END_ELEMENT)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster .append(prefix)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster .append(IFSConstants.ASSERTION_CONSUMER_SVC_ID)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster .append(IFSConstants.RIGHT_ANGLE);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if(authnContext != null){
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster authnContext.setMinorVersion(minorVersion);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster xml.append(authnContext.toXMLString());
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if(relayState != null && relayState.length() != 0){
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster xml.append(IFSConstants.LEFT_ANGLE)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster .append(prefix)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster .append(IFSConstants.RELAY_STATE)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster .append(IFSConstants.RIGHT_ANGLE)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster .append(XMLUtils.escapeSpecialCharacters(relayState))
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster .append(IFSConstants.START_END_ELEMENT)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster .append(prefix)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster .append(IFSConstants.RELAY_STATE)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster .append(IFSConstants.RIGHT_ANGLE);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (minorVersion == IFSConstants.FF_12_PROTOCOL_MINOR_VERSION) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (scoping != null) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster xml.append(scoping.toXMLString(true, false));
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if(minorVersion == IFSConstants.FF_11_PROTOCOL_MINOR_VERSION) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if(authContextCompType != null &&
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster authContextCompType.length() != 0) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster xml.append(IFSConstants.LEFT_ANGLE)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster .append(prefix)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster .append(IFSConstants.AUTHN_CONTEXT_COMPARISON)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster .append(IFSConstants.RIGHT_ANGLE)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster .append(authContextCompType)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster .append(IFSConstants.START_END_ELEMENT)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster .append(prefix)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster .append(IFSConstants.AUTHN_CONTEXT_COMPARISON)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster .append(IFSConstants.RIGHT_ANGLE);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster xml.append(IFSConstants.START_END_ELEMENT)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster .append(prefix)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster .append(IFSConstants.AUTHN_REQUEST)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster .append(IFSConstants.RIGHT_ANGLE);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster } else{
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster FSUtils.debug.error("FSAuthnRequest.toString: requestID is null ");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster throw new FSMsgException("nullAuthnRequestID",null);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster return xml.toString();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Returns the <code>FSAuthnRequest</code> object.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster *
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param xml the XML string.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @return <code>FSAuthnRequest</code> object.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @throws FSMsgException if there is
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * error creating the object.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public static FSAuthnRequest parseXML(String xml) throws FSMsgException {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster Document doc = XMLUtils.toDOMDocument(xml, FSUtils.debug);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (doc == null) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster FSUtils.debug.error("FSAuthnRequest.parseXML:Error "
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster + "while parsing input xml string");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster throw new FSMsgException("parseError",null);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster Element root = doc.getDocumentElement();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster return new FSAuthnRequest(root);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Returns Signed XML String representation of this object.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster *
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @return signed XML String.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public String getSignedXMLString(){
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster return xmlString;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Returns the signature string.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster *
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @return the signature string.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public String getSignatureString(){
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster return signatureString;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Returns a list of <code>Extension</code> objects.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Each entry of the list is a <code>Extension</code> object.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster *
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @return a list of <code>Extension</code> elements.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @see #setExtensions(List)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public List getExtensions() {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster return extensions;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Sets <code>Extension</code> objects.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Each entry of the list is a <code>Extension</code> object.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster *
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param extensions a list of <code>Extension</code> objects.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @see #getExtensions
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public void setExtensions(List extensions) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster this.extensions = extensions;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Returns the value of Force Authentication attribute.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster *
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @return the value of Force Authentication attribute.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public boolean getForceAuthn() {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster return forceAuthn;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Sets the value of Force Authentication attribute.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster *
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param forceAuthn value of Force Authentication attribute.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public void setForceAuthn(boolean forceAuthn) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster this.forceAuthn = forceAuthn;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Returns the value of the <code>isPassive</code> attribute.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster *
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @return value of <code>isPassive</code> attribute.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public boolean getIsPassive() {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster return isPassive;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Sets the value of the <code>IsPassive</code> attribute.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster *
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param isPassive value of <code>isPassive</code> attribute.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public void setIsPassive(boolean isPassive) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster this.isPassive = isPassive;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Returns the value of the <code>Federate</code> attribute.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster *
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @return the value fo the <code>Federate</code> attribute.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public boolean getFederate() {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster return federate;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Sets the value of the <code>Federate</code> attribute.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster *
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param fed the value of the <code>Federate</code> attribute.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public void setFederate(boolean fed) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster federate = fed;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Returns the <code>NameIDPolicy</code> object.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster *
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @return the <code>NameIDPolicy</code> object.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @see #setNameIDPolicy(String)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public String getNameIDPolicy() {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster return nameIDPolicy;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Sets the <code>NameIDPolicy</code> object.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster *
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param nameIDPolicy the new <code>NameIDPolicy</code> object.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @see #getNameIDPolicy
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public void setNameIDPolicy(String nameIDPolicy) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster this.nameIDPolicy = nameIDPolicy;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Returns the value of <code>ProtocolProfile<code> attribute.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster *
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @return the value of <code>ProtocolProfile<code> attribute.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @see #setProtocolProfile(String)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public String getProtocolProfile() {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster return protocolProfile;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Sets the value of <code>ProtocolProfile<code> attribute.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster *
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param protocolProf the value of <code>ProtocolProfile<code> attribute.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @see #getProtocolProfile()
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public void setProtocolProfile(String protocolProf) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster protocolProfile = protocolProf;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Returns the value of RelayState attribute.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster *
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @return the value of RelayState attribute.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @see #setRelayState(String)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public String getRelayState() {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster return relayState;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Set the value of RelayState attribute.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster *
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param relaySt the value of RelayState attribute.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @see #getRelayState()
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public void setRelayState(String relaySt) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster relayState = relaySt;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Returns the <code>RequestedAuthnContext</code> object.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster *
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @return the <code>RequestedAuthnContext</code> object.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @see #setAuthnContext(RequestAuthnContext)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public RequestAuthnContext getAuthnContext() {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster return authnContext;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Sets the <code>RequestedAuthnContext</code> object.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster *
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param authnCxt the <code>RequestAuthnContext</code> object.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @see #getAuthnContext()
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public void setAuthnContext(RequestAuthnContext authnCxt) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster authnContext = authnCxt;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Returns the value of <code>ProviderID</code> attribute.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster *
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @return the value of <code>ProviderID</code> attribute.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @see #setProviderId(String).
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public String getProviderId() {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster return providerId;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Sets the value of <code>ProviderID</code> attribute.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster *
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param provId the value of <code>ProviderID</code> attribute.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @see #getProviderId()
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public void setProviderId(String provId) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster providerId = provId;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Returns the value of AuthContext Comparison attribute.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster *
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @return he value of AuthContext Comparison attribute.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @see #setAuthContextCompType(String)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public String getAuthContextCompType() {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster return authContextCompType;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Sets the value of AuthContext Comparison attribute.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster *
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param authType he value of AuthContext Comparison attribute.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @see #getAuthContextCompType()
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public void setAuthContextCompType(String authType) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster authContextCompType = authType;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Returns the value of <code>id</code> attribute.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster *
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @return the value of <code>id</code> attribute.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @see #setID(String)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public String getID() {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster return id;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Sets the value of <code>id</code> attribute.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster *
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param id the value of <code>id</code> attribute.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @see #getID()
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public void setID(String id) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster this.id = id;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Returns the value of the <code>MinorVersion</code> attribute.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster *
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @return the value of the <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 the <code>MinorVersion</code> attribute.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster *
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param version the value of 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 the Affliation Identifier.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster *
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @return the Affliation Identifier.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @see #setAffiliationID(String)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public String getAffiliationID() {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster return affiliationID;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Sets the Affiliation Identifier.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster *
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param affiliationID the Affiliation Identifier.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @see #getAffiliationID()
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public void setAffiliationID(String affiliationID) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster this.affiliationID = affiliationID;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Returns the Assertion Consumer Service Identifier.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster *
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @return the Assertion Consumer Service Identifier.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @see #setAssertionConsumerServiceID(String)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public String getAssertionConsumerServiceID() {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster return assertionConsumerServiceID;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Sets the Assertion Consumer Service Identifier.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster *
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param assertionConsumerServiceID the Assertion Consumer
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Service Identifier.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @see #getAssertionConsumerServiceID
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public void setAssertionConsumerServiceID(
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String assertionConsumerServiceID) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster this.assertionConsumerServiceID = assertionConsumerServiceID;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Returns the value of <code>consent</code> attribute.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster *
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @return the value of <code>consent</code> attribute.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @see #setConsent(String)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public String getConsent() {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster return consentURI;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Sets the value of <code>consent</code> attribute.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster *
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param consentURI the value of <code>consent</code> attribute.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @see #getConsent()
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public void setConsent(String consentURI) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster this.consentURI = consentURI;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Sets the <code>FSScoping</code> object.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster *
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param scoping the <code>FSScoping</code> object.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @see #getScoping()
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public void setScoping(FSScoping scoping) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster this.scoping = scoping;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Returns the <code>FSScoping</code> object.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster *
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @return the <code>FSScoping</code> object.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @see #setScoping(FSScoping)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public FSScoping getScoping() {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster return scoping;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Validates the the <code>MajorVersion</code> property in the
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * <code>AuthnRequest</code>.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster *
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param majorVer the value of <code>MajorVersion</code> property
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @throws FSMsgException if the <code>MajoorVersion</code>
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * is null or is invalid.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster private void parseMajorVersion(String majorVer) throws FSMsgException {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster try {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster majorVersion = Integer.parseInt(majorVer);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster } catch (NumberFormatException e) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (FSUtils.debug.messageEnabled()) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster FSUtils.debug.message("FSAuthnRequest(Element): invalid "
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster + "MajorVersion", e);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster throw new FSMsgException("wrongInput",null);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (majorVersion != IFSConstants.PROTOCOL_MAJOR_VERSION) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (majorVersion > IFSConstants.PROTOCOL_MAJOR_VERSION) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (FSUtils.debug.messageEnabled()) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster FSUtils.debug.message("FSAuthnRequest(Element): "
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster + "MajorVersion of the AuthnRequest is too high.");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster throw new FSMsgException("requestVersionTooHigh",null);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster } else {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (FSUtils.debug.messageEnabled()) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster FSUtils.debug.message("FSAuthnRequest(Element): "
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster + "MajorVersion of the AuthnRequest is too low.");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster throw new FSMsgException("requestVersionTooLow",null);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Validates the the <code>MinorVersion</code> property in the
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * <code>AuthnRequest</code>.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster *
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param minorVer the value of <code>MinorVersion</code> property
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @throws FSMsgException if the <code>MinorVersion</code>
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * is null or is invalid.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster private void parseMinorVersion(String minorVer) throws FSMsgException {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster try {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster minorVersion = Integer.parseInt(minorVer);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster } catch (NumberFormatException e) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (FSUtils.debug.messageEnabled()) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster FSUtils.debug.message("FSAuthnRequest(Element): invalid "
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster + "MinorVersion", e);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster throw new FSMsgException("wrongInput",null);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if(minorVersion > IFSConstants.FF_12_PROTOCOL_MINOR_VERSION) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (FSUtils.debug.messageEnabled()) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster FSUtils.debug.message("FSAuthnRequest.checkMinorVersion:"+
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster " Minor Version of the AuthnRequest is too high.");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster throw new FSMsgException("requestVersionTooHigh",null);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster } else if (minorVersion < IFSConstants.FF_11_PROTOCOL_MINOR_VERSION) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (FSUtils.debug.messageEnabled()) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster FSUtils.debug.message("FSAuthnRequest.checkMinorVersion:" +
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster " Minor Version of the AuthnRequest is too low.");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster throw new FSMsgException("requestVersionTooLow",null);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Checks the value of the <code>MajorVersion</code> property
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * in the <code>AuthnRequest</code>.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster *
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param minorVer the value of <code>MajorVersion</code> property
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @return integer value of <code>MajorVersion</code> property
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @throws FSMsgException if the <code>MajorVersion</code>
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * is null or invalid.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster private static int checkMajorVersion(String majorVer)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster throws FSMsgException {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster int majorVersion;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (majorVer == null){
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster throw new FSMsgException("nullMajorVersion",null);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster try {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster majorVersion = Integer.parseInt(majorVer);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster } catch (NumberFormatException e) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (FSUtils.debug.messageEnabled()) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster FSUtils.debug.message("FSAuthnRequest.checkMajorVersion: "
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster + "invalid MajorVersion: " + e.getMessage());
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster throw new FSMsgException("wrongInput",null);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (majorVersion != SAMLConstants.PROTOCOL_MAJOR_VERSION) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (majorVersion > SAMLConstants.PROTOCOL_MAJOR_VERSION) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (FSUtils.debug.messageEnabled()) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster FSUtils.debug.message("FSAuthnRequest.checkMajorVersion: "
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster + "MajorVersion of the AuthnRequest is too high"
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster + majorVersion);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster throw new FSMsgException("requestVersionTooHigh",null);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster } else {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (FSUtils.debug.messageEnabled()) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster FSUtils.debug.message(
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster "FSAuthnRequest.checkMajorVersion:MajorVersion of "
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster + "the AuthnRequest is too low. " + majorVersion);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster throw new FSMsgException("requestVersionTooLow",null);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster return majorVersion;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Checks the value of the <code>MinorVersion</code> property
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * in the <code>AuthnRequest</code>.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster *
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param minorVer the value of <code>MinorVersion</code> property
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @return integer value of <code>MinorVersion</code> property
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @throws FSMsgException if the <code>MinorVersion</code>
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * is null or invalid.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster private static int checkMinorVersion(String minorVer)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster throws FSMsgException {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster int minorVersion;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (minorVer == null){
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster throw new FSMsgException("nullMinorVersion",null);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster try {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster minorVersion = Integer.parseInt(minorVer);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster } catch (NumberFormatException e) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (FSUtils.debug.messageEnabled()) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster FSUtils.debug.message("FSAuthnRequest.checkMinorVersion: "
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster + "invalid MinorVersion", e);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster throw new FSMsgException("wrongInput",null);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if(minorVersion == IFSConstants.FF_12_PROTOCOL_MINOR_VERSION ||
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster minorVersion == IFSConstants.FF_11_PROTOCOL_MINOR_VERSION) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster return minorVersion;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if(minorVersion > IFSConstants.FF_12_PROTOCOL_MINOR_VERSION) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if(FSUtils.debug.messageEnabled()) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster FSUtils.debug.message("FSAuthnRequest.checkMinorVersion:"+
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster " Minor Version of the AuthnRequest is too high.");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster throw new FSMsgException("requestVersionTooHigh",null);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster } else {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if(FSUtils.debug.messageEnabled()) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster FSUtils.debug.message("FSAuthnRequest.checkMinorVersion:" +
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster " Minor Version of the AuthnRequest is too low.");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster throw new FSMsgException("requestVersionTooLow",null);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Returns an URL Encoded Query String.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster *
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @return a url encoded query string.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @throws FSMsgException if there is an error.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public String toURLEncodedQueryString() throws FSMsgException {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if ((providerId == null) || (providerId.length() == 0)) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster FSUtils.debug.error("FSAuthnRequest.toURLEncodedQueryString: "
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster + "providerId is null in the request with requestId:"
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster + requestID);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String[] args = { requestID };
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster throw new FSMsgException("nullProviderIdWRequestId",args);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if ((requestID == null) || (requestID.length() == 0)){
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster requestID = SAMLUtils.generateID();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (requestID == null) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster FSUtils.debug.error("FSAuthnRequest.toURLEncodedQueryString: "
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster + "couldn't generate RequestID.");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster throw new FSMsgException("errorGenerateID",null);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster StringBuffer urlEncodedAuthnReq = new StringBuffer(300);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster urlEncodedAuthnReq.append(IFSConstants.AUTH_REQUEST_ID)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster .append(IFSConstants.EQUAL_TO)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster .append(URLEncDec.encode(requestID))
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster .append(IFSConstants.AMPERSAND)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster .append(IFSConstants.MAJOR_VERSION)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster .append(IFSConstants.EQUAL_TO)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster .append(majorVersion)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster .append(IFSConstants.AMPERSAND)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster .append(IFSConstants.MINOR_VERSION)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster .append(IFSConstants.EQUAL_TO)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster .append(minorVersion)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster .append(IFSConstants.AMPERSAND);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if ((extensions != null) && (!extensions.isEmpty())) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster Extension extension = (Extension)extensions.get(0);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster urlEncodedAuthnReq.append(extension.toURLEncodedQueryString(
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster QUERY_STRING_EXTENSION_PREFIX)).append(IFSConstants.AMPERSAND);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (extensions.size() > 1) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (FSUtils.debug.warningEnabled()) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster FSUtils.debug.warning(
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster "FSAuthnRequest.toURLEncodedQueryString: " +
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster "only one Extension element is allowed and extras " +
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster " will be removed");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster urlEncodedAuthnReq.append(IFSConstants.PROVIDER_ID)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster .append(IFSConstants.EQUAL_TO)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster .append(URLEncDec.encode(providerId))
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster .append(IFSConstants.AMPERSAND);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (consentURI != null) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster urlEncodedAuthnReq.append(IFSConstants.CONSENT)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster .append(IFSConstants.EQUAL_TO)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster .append(URLEncDec.encode(consentURI))
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster .append(IFSConstants.AMPERSAND);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if(affiliationID != null) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster urlEncodedAuthnReq.append(IFSConstants.AFFILIATIONID)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster .append(IFSConstants.EQUAL_TO)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster .append(URLEncDec.encode(affiliationID))
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster .append(IFSConstants.AMPERSAND);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (issueInstant != null){
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster urlEncodedAuthnReq.append(IFSConstants.ISSUE_INSTANT)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster .append(IFSConstants.EQUAL_TO)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster .append(URLEncDec.encode(
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster DateUtils.toUTCDateFormat(issueInstant)))
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster .append(IFSConstants.AMPERSAND);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster } else {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster FSUtils.debug.error("FSAuthnRequest.toURLEncodedQueryString: "
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster + "issueInstant missing");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String[] args = { IFSConstants.ISSUE_INSTANT };
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster throw new FSMsgException("missingAttribute",args);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String strForceAuthn = IFSConstants.FALSE;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (forceAuthn) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster strForceAuthn = IFSConstants.TRUE;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster urlEncodedAuthnReq.append(IFSConstants.FORCE_AUTHN_ELEM)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster .append(IFSConstants.EQUAL_TO)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster .append(strForceAuthn)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster .append(IFSConstants.AMPERSAND);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String strIsPassive = IFSConstants.FALSE;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (isPassive) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster strIsPassive = IFSConstants.TRUE;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster urlEncodedAuthnReq.append(IFSConstants.IS_PASSIVE_ELEM)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster .append(IFSConstants.EQUAL_TO)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster .append(strIsPassive)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster .append(IFSConstants.AMPERSAND);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (minorVersion == IFSConstants.FF_12_PROTOCOL_MINOR_VERSION) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String strFederate = IFSConstants.NAME_ID_POLICY_NONE;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (federate) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster strFederate = IFSConstants.NAME_ID_POLICY_FEDERATED;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (nameIDPolicy != null && nameIDPolicy.length() > 0) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster strFederate = nameIDPolicy;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster urlEncodedAuthnReq.append(IFSConstants.NAMEID_POLICY_ELEMENT)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster .append(IFSConstants.EQUAL_TO)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster .append(strFederate)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster .append(IFSConstants.AMPERSAND);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster } else {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String strFederate = IFSConstants.FALSE;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (federate) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster strFederate = IFSConstants.TRUE;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster urlEncodedAuthnReq.append(IFSConstants.FEDERATE)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster .append(IFSConstants.EQUAL_TO)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster .append(strFederate)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster .append(IFSConstants.AMPERSAND);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (protocolProfile != null && protocolProfile.length() != 0) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster urlEncodedAuthnReq.append(IFSConstants.PROTOCOL_PROFILE)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster .append(IFSConstants.EQUAL_TO)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster .append(URLEncDec.encode(protocolProfile))
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster .append(IFSConstants.AMPERSAND);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (authnContext != null) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster authnContext.setMinorVersion(minorVersion);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster urlEncodedAuthnReq.append(authnContext.toURLEncodedQueryString());
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (relayState != null && relayState.length() != 0) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster urlEncodedAuthnReq.append(IFSConstants.RELAY_STATE)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster .append(IFSConstants.EQUAL_TO)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster .append(URLEncDec.encode(relayState))
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster .append(IFSConstants.AMPERSAND);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (scoping != null) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster urlEncodedAuthnReq.append(scoping.toURLEncodedQueryString());
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (minorVersion == IFSConstants.FF_11_PROTOCOL_MINOR_VERSION) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (authContextCompType != null
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster && authContextCompType.length() != 0) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster urlEncodedAuthnReq.append(IFSConstants.AUTHN_CONTEXT_COMPARISON)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster .append(IFSConstants.EQUAL_TO)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster .append(URLEncDec.encode(authContextCompType))
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster .append(IFSConstants.AMPERSAND);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster int len = urlEncodedAuthnReq.length() - 1;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (urlEncodedAuthnReq.charAt(len) == '&') {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster urlEncodedAuthnReq = urlEncodedAuthnReq.deleteCharAt(len);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster return urlEncodedAuthnReq.toString();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Returns a Base64 Encoded String.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster *
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @return a Base64 Encoded String.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @throws FSMsgException if there is an error encoding
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * the string.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public String toBASE64EncodedString() throws FSMsgException {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if((providerId == null) || (providerId.length() == 0)){
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster FSUtils.debug.error("FSAuthnRequest.toBASE64EncodedString: "
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster + "providerId is null in the request with requestId:"
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster + requestID);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String[] args = { requestID };
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster throw new FSMsgException("nullProviderIdWRequestId",args);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if ((requestID == null) || (requestID.length() == 0)) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster requestID = SAMLUtils.generateID();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (requestID == null) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster FSUtils.debug.error("FSAuthnRequest.toBASE64EncodedString: "
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster + "couldn't generate RequestID.");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster throw new FSMsgException("errorGenerateID",null);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster return Base64.encode(this.toXMLString().getBytes());
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Returns <code>FSAuthnRequest</code> object. The
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * object is creating by parsing the <code>HttpServletRequest</code>
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * object.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster *
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param request the <code>HttpServletRequest</code> object.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @throws FSMsgException if there is an error
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * creating <code>FSAuthnRequest</code> object.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public static FSAuthnRequest parseURLEncodedRequest(
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster HttpServletRequest request) throws FSMsgException {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster FSAuthnRequest retAuthnRequest = new FSAuthnRequest();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String authReqID = request.getParameter(IFSConstants.AUTH_REQUEST_ID);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (authReqID == null || authReqID.length() == 0) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster throw new FSMsgException("nullAuthnRequestID",null);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster retAuthnRequest.requestID = authReqID;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String instantString =
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster request.getParameter(IFSConstants.ISSUE_INSTANT);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (instantString == null || instantString.length() == 0) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String[] args = { IFSConstants.ISSUE_INSTANT };
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster throw new FSMsgException("missingAttribute",args);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster try{
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster retAuthnRequest.issueInstant =
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster DateUtils.stringToDate(instantString);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster } catch (ParseException e){
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster throw new FSMsgException("parseError",null);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster retAuthnRequest.majorVersion =
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster checkMajorVersion(request.getParameter(
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster IFSConstants.MAJOR_VERSION));
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster retAuthnRequest.minorVersion =
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster checkMinorVersion(request.getParameter(
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster IFSConstants.MINOR_VERSION));
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String providerId = request.getParameter(IFSConstants.PROVIDER_ID);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (providerId == null || providerId.length() == 0) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster throw new FSMsgException("nullProviderIdInRequest",null);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster } else{
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster FSUtils.debug.message("ProviderID of the sender: " + providerId);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster retAuthnRequest.providerId = providerId;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster retAuthnRequest.affiliationID =
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster request.getParameter(IFSConstants.AFFILIATIONID);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String forceAuthn = request.getParameter(IFSConstants.FORCE_AUTHN_ELEM);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if ( forceAuthn != null && forceAuthn.length() != 0
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster && (forceAuthn.equals(IFSConstants.TRUE)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster || forceAuthn.equals(IFSConstants.ONE))) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster retAuthnRequest.forceAuthn = true;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster } else {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster retAuthnRequest.forceAuthn = false;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String isPassive = request.getParameter(IFSConstants.IS_PASSIVE_ELEM);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (isPassive != null && isPassive.length() != 0 &&
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster (isPassive.equals(IFSConstants.TRUE) ||
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster isPassive.equals(IFSConstants.ONE)))
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster retAuthnRequest.isPassive = true;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster } else {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster retAuthnRequest.isPassive = false;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (retAuthnRequest.minorVersion
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster == IFSConstants.FF_12_PROTOCOL_MINOR_VERSION) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String nameIDPolicy =
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster request.getParameter(IFSConstants.NAMEID_POLICY_ELEMENT);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (nameIDPolicy != null &&
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster (nameIDPolicy.equals(
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster IFSConstants.NAME_ID_POLICY_FEDERATED) ||
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster nameIDPolicy.equals(
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster IFSConstants.NAME_ID_POLICY_ONETIME))
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster ) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster retAuthnRequest.federate = true;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster retAuthnRequest.nameIDPolicy = nameIDPolicy;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster } else {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String federate = request.getParameter(IFSConstants.FEDERATE);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (federate != null &&
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster federate.length() != 0 &&
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster (federate.equals(IFSConstants.TRUE)||
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster federate.equals(IFSConstants.ONE))) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster retAuthnRequest.federate = true;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster } else {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster retAuthnRequest.federate = false;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String protocolProfile =
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster request.getParameter(IFSConstants.PROTOCOL_PROFILE);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (protocolProfile != null && protocolProfile.length() != 0) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster retAuthnRequest.protocolProfile = protocolProfile;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String relayState = request.getParameter(IFSConstants.RELAY_STATE);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if(relayState != null && relayState.length() != 0) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster retAuthnRequest.setRelayState(relayState);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String authnContextComparison =
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster request.getParameter(IFSConstants.AUTHN_CONTEXT_COMPARISON);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if(authnContextComparison != null &&
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster authnContextComparison.length() != 0) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster retAuthnRequest.setAuthContextCompType(authnContextComparison);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String authType = retAuthnRequest.getAuthContextCompType();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if(! (authType.equals(IFSConstants.MINIMUM) ||
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster authType.equals(IFSConstants.EXACT) ||
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster authType.equals(IFSConstants.MAXIMUM) ||
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster authType.equals(IFSConstants.BETTER)) ) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster throw new FSMsgException("wrongInput",null);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster retAuthnRequest.authnContext =
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster RequestAuthnContext.parseURLEncodedRequest(
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster request, retAuthnRequest.getMinorVersion());
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster retAuthnRequest.scoping = FSScoping.parseURLEncodedRequest(request);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster Extension extension = Extension.parseURLEncodedRequest(request,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster QUERY_STRING_EXTENSION_PREFIX, retAuthnRequest.getMinorVersion());
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (extension != null) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster retAuthnRequest.extensions = new ArrayList();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster retAuthnRequest.extensions.add(extension);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster return retAuthnRequest;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Returns <code>FSAuthnRequest</code> object. The object
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * is created by parsing an Base64 encode authentication
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * request string.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster *
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param encodedReq the encode string
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @throws FSMsgException if there is an error
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * creating <code>FSAuthnRequest</code> object.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public static FSAuthnRequest parseBASE64EncodedString(String encodedReq)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster throws FSMsgException {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (encodedReq != null && encodedReq.length() != 0) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String decodedAuthnReq = new String(Base64.decode(encodedReq));
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (FSUtils.debug.messageEnabled()) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster FSUtils.debug.message(
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster "FSAuthnRequest.parseBASE64EncodedString: "
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster + "decoded input string: " + decodedAuthnReq);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster return parseXML(decodedAuthnReq);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster } else{
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (FSUtils.debug.messageEnabled()) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster FSUtils.debug.message(
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster "FSAuthnRequest.parseBASE64EncodedString: "
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster + "null String passed in as argument.");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster throw new FSMsgException("nullInput",null);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Signs the Request.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster *
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param certAlias the Certificate Alias.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @throws XMLSignatureException if <code>FSAuthnRequest</code>
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * cannot be signed.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public void signXML(String certAlias) throws SAMLException {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster FSUtils.debug.message("FSAuthnRequest.signXML: Called");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (signed) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (FSUtils.debug.messageEnabled()) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster FSUtils.debug.message("FSAuthnRequest.signXML: "
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster + "the assertion is "
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster + "already signed.");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster throw new SAMLResponderException(FSUtils.BUNDLE_NAME,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster "alreadySigned",null);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (certAlias == null || certAlias.length() == 0) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster throw new SAMLResponderException(
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster FSUtils.BUNDLE_NAME,"cannotFindCertAlias",null);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster try{
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster XMLSignatureManager manager = XMLSignatureManager.getInstance();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (minorVersion == IFSConstants.FF_11_PROTOCOL_MINOR_VERSION) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster signatureString = manager.signXML(this.toXMLString(true, true),
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster certAlias, (String) null, IFSConstants.ID,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster this.id, false);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster } else if(minorVersion ==
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster IFSConstants.FF_12_PROTOCOL_MINOR_VERSION) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster signatureString =
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster manager.signXML(this.toXMLString(true, true),
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster certAlias, (String) null, IFSConstants.REQUEST_ID,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster this.getRequestID(), false);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster } else {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (FSUtils.debug.messageEnabled()) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster FSUtils.debug.message("invalid minor version.");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster signature =
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster XMLUtils.toDOMDocument(signatureString, FSUtils.debug)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster .getDocumentElement();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster signed = true;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster xmlString = this.toXMLString(true, true);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster } catch(Exception e){
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster throw new SAMLResponderException(
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster FSUtils.BUNDLE_NAME,"signFailed",null);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Unsupported Method.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public void signXML() throws SAMLException {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster throw new SAMLException(
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster FSUtils.BUNDLE_NAME,"unsupportedOperation",null);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Sets the Signature of the Element passed.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster *
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param elem the Document Element.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @return true if success otherwise false.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public boolean setSignature(Element elem) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster signatureString = XMLUtils.print(elem);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster return super.setSignature(elem);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster}