/******************************************************************************* * Copyright 2014 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.protocols.stork2; import java.util.ArrayList; import java.util.Arrays; import java.util.List; import org.opensaml.saml2.core.Attribute; import at.gv.egovernment.moa.id.auth.builder.DynamicOAAuthParameterBuilder; import at.gv.egovernment.moa.id.config.ConfigurationException; import at.gv.egovernment.moa.id.config.auth.AuthConfigurationProvider; import at.gv.egovernment.moa.id.config.auth.IOAAuthParameters; import at.gv.egovernment.moa.id.config.auth.OAAuthParameter; import at.gv.egovernment.moa.id.config.auth.data.DynamicOAAuthParameters; import at.gv.egovernment.moa.id.moduls.RequestImpl; import at.gv.egovernment.moa.id.protocols.pvp2x.PVPConstants; import at.gv.egovernment.moa.id.protocols.pvp2x.builder.AttributQueryBuilder; import at.gv.egovernment.moa.id.protocols.pvp2x.messages.MOAResponse; import at.gv.egovernment.moa.id.protocols.saml1.SAML1Protocol; import at.gv.egovernment.moa.logging.Logger; import at.gv.egovernment.moa.util.Constants; import eu.stork.peps.auth.commons.IPersonalAttributeList; import eu.stork.peps.auth.commons.STORKAttrQueryRequest; import eu.stork.peps.auth.commons.STORKAuthnRequest; import eu.stork.peps.auth.commons.STORKAuthnResponse; /** * Implements MOA request and stores StorkAuthn/Attr-Request related data. * * @author bsuzic */ public class MOASTORKRequest extends RequestImpl { public static final List DEFAULTREQUESTEDATTRFORINTERFEDERATION = Arrays.asList( new String[] { PVPConstants.BPK_NAME, PVPConstants.EID_SECTOR_FOR_IDENTIFIER_NAME, PVPConstants.GIVEN_NAME_NAME, PVPConstants.PRINCIPAL_NAME_NAME, PVPConstants.BIRTHDATE_NAME, PVPConstants.EID_CITIZEN_QAA_LEVEL_NAME, }); /** The Constant serialVersionUID. */ private static final long serialVersionUID = 4581953368724501376L; /** The request id. */ private String requestID; /** The stork authn request. */ private STORKAuthnRequest storkAuthnRequest; /** The stork attr query request. */ private STORKAttrQueryRequest storkAttrQueryRequest; /** * Sets the sTORK authn request. * * @param request the new sTORK authn request */ public void setSTORKAuthnRequest(STORKAuthnRequest request) { this.storkAuthnRequest = request; } /** * Sets the sTORK attr request. * * @param request the new sTORK attr request */ public void setSTORKAttrRequest(STORKAttrQueryRequest request) { this.storkAttrQueryRequest = request; } /** * Checks if the container holds an AttrQueryRequest * * @return true, if is attr request */ public boolean isAttrRequest() { return null != storkAttrQueryRequest; } /** * Checks if the container holds an AuthnRequest * * @return true, if is authn request */ public boolean isAuthnRequest() { return null != storkAuthnRequest; } /** * Gets the stork authn request. * * @return the stork authn request */ public STORKAuthnRequest getStorkAuthnRequest() { return this.storkAuthnRequest; } /** * Gets the stork attr query request. * * @return the stork attr query request */ public STORKAttrQueryRequest getStorkAttrQueryRequest() { return this.storkAttrQueryRequest; } /* (non-Javadoc) * @see at.gv.egovernment.moa.id.moduls.IRequest#getOAURL() */ public String getOAURL() { if (isAuthnRequest()) return storkAuthnRequest.getAssertionConsumerServiceURL(); else if (isAttrRequest()) return storkAttrQueryRequest.getAssertionConsumerServiceURL(); else { Logger.error("There is no authentication or attribute request contained in MOASTORKRequest."); return null; } } /* (non-Javadoc) * @see at.gv.egovernment.moa.id.moduls.IRequest#isPassiv() */ public boolean isPassiv() { return false; } /* (non-Javadoc) * @see at.gv.egovernment.moa.id.moduls.IRequest#forceAuth() */ public boolean forceAuth() { return false; } /* (non-Javadoc) * @see at.gv.egovernment.moa.id.moduls.IRequest#isSSOSupported() */ public boolean isSSOSupported() { return false; } /* (non-Javadoc) * @see at.gv.egovernment.moa.id.moduls.IRequest#setRequestID(java.lang.String) */ public void setRequestID(String id) { this.requestID = id; } /* (non-Javadoc) * @see at.gv.egovernment.moa.id.moduls.IRequest#getRequestID() */ public String getRequestID() { return this.requestID; } /** * Gets the personal attribute list. * * @return the personal attribute list */ public IPersonalAttributeList getPersonalAttributeList() { if(isAttrRequest()) return this.storkAttrQueryRequest.getPersonalAttributeList(); else return this.storkAuthnRequest.getPersonalAttributeList(); } /** * Gets the sp country. * * @return the sp country */ public String getSpCountry() { if(isAttrRequest()) return this.storkAttrQueryRequest.getSpCountry(); else return this.storkAuthnRequest.getSpCountry(); } /** * Gets the assertion consumer service url. * * @return the assertion consumer service url */ public String getAssertionConsumerServiceURL() { if(isAttrRequest()) return this.storkAttrQueryRequest.getAssertionConsumerServiceURL(); else return this.storkAuthnRequest.getAssertionConsumerServiceURL(); } /** * Gets the citizen country code. * * @return the citizen country code */ public String getCitizenCountryCode() { if(isAttrRequest()) return this.storkAttrQueryRequest.getCitizenCountryCode(); else return this.storkAuthnRequest.getCitizenCountryCode(); } /* (non-Javadoc) * @see at.gv.egovernment.moa.id.moduls.RequestImpl#getRequestedAttributes() */ @Override public List getRequestedAttributes() { //TODO: only for testing with MOA-ID as PVP Stammportal IOAAuthParameters oa; try { oa = AuthConfigurationProvider.getInstance().getOnlineApplicationParameter(getOAURL()); oa = DynamicOAAuthParameterBuilder.buildFromAuthnRequest(oa, this); DynamicOAAuthParameters tmp = (DynamicOAAuthParameters) oa; tmp.setBusinessTarget(Constants.URN_PREFIX_CDID + "+BF"); return AttributQueryBuilder.buildSAML2AttributeList(tmp, DEFAULTREQUESTEDATTRFORINTERFEDERATION.iterator()); } catch (ConfigurationException e) { // TODO Auto-generated catch block e.printStackTrace(); return null; } //return new ArrayList(); } }