a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster/**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster *
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Copyright (c) 2006 Sun Microsystems Inc. All Rights Reserved
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster *
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * The contents of this file are subject to the terms
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * of the Common Development and Distribution License
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * (the License). You may not use this file except in
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * compliance with the License.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster *
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * You can obtain a copy of the License at
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * https://opensso.dev.java.net/public/CDDLv1.0.html or
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * opensso/legal/CDDLv1.0.txt
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * See the License for the specific language governing
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * permission and limitations under the License.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster *
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * When distributing Covered Code, include this CDDL
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Header Notice in each file and include the License file
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * at opensso/legal/CDDLv1.0.txt.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * If applicable, add the following below the CDDL Header,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * with the fields enclosed by brackets [] replaced by
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * your own identifying information:
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * "Portions Copyrighted [year] [name of copyright owner]"
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster *
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * $Id: NameIDInfo.java,v 1.3 2008/06/25 05:47:45 qcheng Exp $
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster *
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterpackage com.sun.identity.saml2.common;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport java.util.StringTokenizer;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport com.sun.identity.saml2.assertion.NameID;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport com.sun.identity.saml2.assertion.AssertionFactory;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster/**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * This class <code>NameIDInfo</code> represents the user account
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * federation information stored in the repository.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * The name of attribute name is sun-fm-saml2-nameid-info.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * This multiple-valued attribute is used to store all information
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * related to the name identifier, such as IDP, SP entity id, role, etc.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Value format for this attribute:
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * <hosted_entity_id>|<remote_entity_id>|<idp_nameid>|<idp_nameid_qualifier>|
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * <idp_nameid_format>|<sp_nameid>|<sp_nameid_qualifier>|<hosted_entity_role>|
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * <is_affiliation>
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * where:
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * <hosted_entity_id> : entity id for this hosted entity
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * <remote_entity_id> : entity id for the remote entity
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * <idp_nameid> : name identifier for the IDP
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * <idp_nameid_qualifier>: nameid qualifier for the IDP
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * <idp_nameid_format> : nameid format for the IDP
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * <sp_nameid> : name identifier for the SP/Affiliation
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * <sp_nameid_qualifier> : nameid qualifier for the SP/Affiliation
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * <hosted_entity_role> : value of SPRole, IDPRole or DualRole.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * <is_affiliation> : true for affiliation, false otherwise
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * for example:
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * http://www.sp.com|http://www.idp.com|
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * vPQyHXLnSWLAVh2BoI3gdUrhanC1|http://www.idp.com|
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * urn:oasis:names:tc:SAML:2.0:nameid-format:persistent|
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * g6lD46kMqDGSsFPawoFrw4iNf86C|http://www.sp.com|SPRole|false
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterpublic class NameIDInfo {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster private static final String DELIM = "|";
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster private static final String NULL = "null";
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster private String _hostEntityID = null;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster private String _remoteEntityID = null;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster private String _nameIDValue = null;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster private String _nameQualifier = null;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster private String _format = null;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster private String _spNameIDValue = null;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster private String _spNameQualifier = null;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster private String _role = null;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster private boolean _isAffiliation = false;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster private NameID _nameID = null;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Private contstructor.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster private NameIDInfo() {}
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Constructor
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param hostEntityID <code>EntityID</code> of the hosted entity.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param remoteEntityID <code>EntityID</code> of the remote entity.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param nameID <code>NameID</code> object.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param hostEntityRole the role of the hosted entity.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param isAffiliation true if this account federation information
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * is an affilation based federation.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @exception SAML2Exception if any of the parameter values are null.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public NameIDInfo (
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String hostEntityID,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String remoteEntityID,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster NameID nameID,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String hostEntityRole,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster boolean isAffiliation
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster ) throws SAML2Exception {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if(nameID == null) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster throw new SAML2Exception(SAML2Utils.bundle.getString(
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster "nullNameID"));
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if(hostEntityID == null) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster throw new SAML2Exception(SAML2Utils.bundle.getString(
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster "nullHostEntityID"));
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if(remoteEntityID == null) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster throw new SAML2Exception(SAML2Utils.bundle.getString(
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster "nullRemoteEntityID"));
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if(hostEntityRole == null) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster throw new SAML2Exception(SAML2Utils.bundle.getString(
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster "nullEntityRole"));
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster _hostEntityID = hostEntityID;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster _remoteEntityID = remoteEntityID;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster _nameIDValue = nameID.getValue();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster _nameQualifier = nameID.getNameQualifier();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster _format = nameID.getFormat();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster _spNameIDValue = nameID.getSPProvidedID();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster _spNameQualifier = nameID.getSPNameQualifier();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster _role = hostEntityRole;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster _isAffiliation = isAffiliation;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster _nameID = nameID;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Returns the <code>NameID</code> object.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @return the <code>NameID</code> object.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public NameID getNameID() {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster return _nameID;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Returns the <code>NameIDInfoKey</code>
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @return the <code>NameID</code> object.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @exception SAML2Exception if any failure.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public NameIDInfoKey getNameIDInfoKey() throws SAML2Exception {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster return new NameIDInfoKey(_nameIDValue, _hostEntityID, _remoteEntityID);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Returns the <code>NameID</code> value.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @return the value of the <code>NameID</code>.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public String getNameIDValue() {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster return _nameIDValue;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Returns the value of the <code>NameQualifier</code>.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @return the value of the <code>NameQualifier</code>.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public String getNameQualifier() {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster return _nameQualifier;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Returns the value of the <code>NameID</code> format.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @return the value of the <code>NameID</code> format.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public String getFormat() {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster return _format;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Returns the Service Provider provided <code>NameID</code> value.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @return the value of the Service Provider provided <code>NameID</code>.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public String getSPNameIDValue() {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster return _spNameIDValue;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Returns the Service Provider provided <code>NameID</code>'s
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Name Qualifier.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @return the value of Service Provider provided <code>NameID</code>'s
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Name Qualifier.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public String getSPNameQualifier() {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster return _spNameQualifier;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Returns the <code>EntityID</code> of the hosted provider.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @return the <code>EntityID</code> of the hosted provider.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public String getHostEntityID() {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster return _hostEntityID;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Returns the <code>EntityID</code> of the remote provider.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @return the <code>EntityID</code> of the remote provider.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public String getRemoteEntityID() {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster return _remoteEntityID;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Returns the role of the host entity.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @return the role of the host entity.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public String getHostEntityRole() {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster return _role;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Checks if this is an affiliation based federation.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @return true if this is an affiliation based federation.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public boolean isAffiliation() {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster return _isAffiliation;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Returns the account federation information key value string that is
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * stored in the repository.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @return the value of the <code>NameIDInfo</code> that is
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * stored in the repository.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public String toValueString() {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster StringBuffer sb = new StringBuffer();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster sb.append(_hostEntityID)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster .append(DELIM)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster .append(_remoteEntityID)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster .append(DELIM)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster .append(_nameIDValue)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster .append(DELIM);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if(_nameQualifier != null && _nameQualifier.length() != 0) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster sb.append(_nameQualifier);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster } else {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster sb.append(NULL);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster sb.append(DELIM);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if(_format != null && _format.length() != 0) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster sb.append(_format);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster } else {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster sb.append(NULL);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster sb.append(DELIM);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if(_spNameIDValue != null && _spNameIDValue.length() != 0) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster sb.append(_spNameIDValue);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster } else {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster sb.append(NULL);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster sb.append(DELIM);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if(_spNameQualifier != null && _spNameQualifier.length() != 0) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster sb.append(_spNameQualifier);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster } else {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster sb.append(NULL);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster sb.append(DELIM);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if(_role != null && _role.length() != 0) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster sb.append(_role);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster } else {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster sb.append(NULL);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster sb.append(DELIM)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster .append(Boolean.toString(_isAffiliation));
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster return sb.toString();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Returns the <code>NameIDInfo</code> by parsing the string value.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @return the <code>NameIDInfo</code>
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @exception SAML2Exception if the parsing fails.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public static NameIDInfo parse(String info) throws SAML2Exception {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if(info == null) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster throw new SAML2Exception(SAML2Utils.bundle.getString(
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster "nullNameIDInfo"));
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster StringTokenizer st = new StringTokenizer(info, DELIM);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if(st.countTokens() != 9) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster throw new SAML2Exception(SAML2Utils.bundle.getString(
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster "inValidNameIDInfo"));
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String hostEntityID = st.nextToken();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String remoteEntityID = st.nextToken();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String nameIDValue = st.nextToken();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String nameQualifier = st.nextToken();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String format = st.nextToken();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String spNameIDValue = st.nextToken();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String spNameQualifier = st.nextToken();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String role = st.nextToken();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster boolean isAffiliation = Boolean.valueOf(st.nextToken()).booleanValue();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster NameID nameID = AssertionFactory.getInstance().createNameID();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster nameID.setValue(nameIDValue);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if(nameQualifier != null && !NULL.equals(nameQualifier)) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster nameID.setNameQualifier(nameQualifier);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if(spNameIDValue != null && !NULL.equals(spNameIDValue)) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster nameID.setSPProvidedID(spNameIDValue);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if(spNameQualifier != null && !NULL.equals(spNameQualifier)) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster nameID.setSPNameQualifier(spNameQualifier);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if(format != null && !NULL.equals(format)) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster nameID.setFormat(format);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster return new NameIDInfo(hostEntityID, remoteEntityID,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster nameID, role, isAffiliation);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster}
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster