/* * Copyright 2003 Federal Chancellery Austria * MOA-ID has been developed in a cooperation between BRZ, the Federal * Chancellery Austria - ICT staff unit, and Graz University of Technology. * * Licensed under the EUPL, Version 1.1 or - as soon they will be approved by * the European Commission - subsequent versions of the EUPL (the "Licence"); * You may not use this work except in compliance with the Licence. * You may obtain a copy of the Licence at: * http://www.osor.eu/eupl/ * * Unless required by applicable law or agreed to in writing, software * distributed under the Licence is distributed on an "AS IS" basis, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the Licence for the specific language governing permissions and * limitations under the Licence. * * This product combines work with different licenses. See the "NOTICE" text * file for details on the various modules and licenses. * The "NOTICE" text file is part of the distribution. Any derivative works * that you distribute must include a readable copy of the "NOTICE" text file. */ package at.gv.egovernment.moa.id.auth.builder; import java.util.List; import org.w3c.dom.Element; import at.gv.egovernment.moa.id.auth.data.AuthenticationSession; import at.gv.egovernment.moa.id.auth.data.IdentityLink; import at.gv.egovernment.moa.id.auth.data.InfoboxValidatorParams; import at.gv.egovernment.moa.id.auth.data.InfoboxValidatorParamsImpl; import at.gv.egovernment.moa.id.auth.parser.IdentityLinkAssertionParser; import at.gv.egovernment.moa.id.config.auth.OAAuthParameter; import at.gv.egovernment.moa.id.config.auth.VerifyInfoboxParameter; import at.gv.egovernment.moa.util.XPathUtils; /** * This class provides one method for building parameters needed for * validating an infobox token. * * @author Harald Bratko */ public class InfoboxValidatorParamsBuilder { // hide the default constructor private InfoboxValidatorParamsBuilder() { } /** * Builds the parameters passed to the validator class for validating an infobox token. * * @param session The actual Authentication session. * @param verifyInfoboxParameter The configuration parameters for the infobox. * @param infoboxTokenList Contains the infobox token to be validated. * @param oaParam The configuration parameters of the online application * * @return Parameters for validating an infobox token. */ public static InfoboxValidatorParams buildInfoboxValidatorParams( AuthenticationSession session, VerifyInfoboxParameter verifyInfoboxParameter, List infoboxTokenList, OAAuthParameter oaParam) { InfoboxValidatorParamsImpl infoboxValidatorParams = new InfoboxValidatorParamsImpl(); IdentityLink identityLink = session.getIdentityLink(); // the infobox token to validate infoboxValidatorParams.setInfoboxTokenList(infoboxTokenList); // configuration parameters infoboxValidatorParams.setTrustProfileID(verifyInfoboxParameter.getTrustProfileID()); infoboxValidatorParams.setSchemaLocations(verifyInfoboxParameter.getSchemaLocations()); infoboxValidatorParams.setApplicationSpecificParams(verifyInfoboxParameter.getApplicationSpecificParams()); // authentication session parameters infoboxValidatorParams.setBkuURL(session.getBkuURL()); infoboxValidatorParams.setTarget(session.getTarget()); infoboxValidatorParams.setDomainIdentifier(oaParam.getIdentityLinkDomainIdentifier()); infoboxValidatorParams.setBusinessApplication(session.getBusinessService()); // parameters from the identity link infoboxValidatorParams.setFamilyName(identityLink.getFamilyName()); infoboxValidatorParams.setGivenName(identityLink.getGivenName()); infoboxValidatorParams.setDateOfBirth(identityLink.getDateOfBirth()); if (verifyInfoboxParameter.getProvideStammzahl()) { infoboxValidatorParams.setIdentificationValue(identityLink.getIdentificationValue()); } infoboxValidatorParams.setIdentificationType(identityLink.getIdentificationType()); infoboxValidatorParams.setPublicKeys(identityLink.getPublicKey()); if (verifyInfoboxParameter.getProvideIdentityLink()) { Element identityLinkElem = (Element)identityLink.getSamlAssertion().cloneNode(true); if (!verifyInfoboxParameter.getProvideStammzahl()) { Element identificationValueElem = (Element)XPathUtils.selectSingleNode(identityLinkElem, IdentityLinkAssertionParser.PERSON_IDENT_VALUE_XPATH); if (identificationValueElem != null) { identificationValueElem.getFirstChild().setNodeValue(""); } } infoboxValidatorParams.setIdentityLink(identityLinkElem); } //TODO: check if this is Protocol specific //infoboxValidatorParams.setHideStammzahl(!oaParam.getProvideStammzahl()); infoboxValidatorParams.setHideStammzahl(true); return infoboxValidatorParams; } }