/* * 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.data; import java.io.Serializable; import java.text.DateFormat; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; import java.util.List; import org.w3c.dom.Element; import eu.stork.peps.auth.commons.IPersonalAttributeList; import eu.stork.peps.auth.commons.STORKAuthnRequest; import at.gv.egovernment.moa.id.auth.data.IdentityLink; import at.gv.egovernment.moa.id.util.client.mis.simple.MISMandate; import at.gv.egovernment.moa.logging.Logger; import at.gv.egovernment.moa.util.DOMUtils; import at.gv.egovernment.moa.util.DateTimeUtils; import at.gv.egovernment.moa.util.MiscUtil; /** * @author tlenz * */ public class AuthenticationData implements IAuthData, Serializable { private static final long serialVersionUID = -1042697056735596866L; public static final String IDENTITY_LINK_DATE_FORMAT = "yyyy-MM-dd"; /** * URL of the MOA-ID Auth component issueing this assertion */ private String issuer; /** * time instant of issue of this assertion */ private Date issueInstant; /** * user identification value (Stammzahl); null, * if the authentication module is configured not to return this data */ private String identificationValue; /** * user identification type */ private String identificationType; /** * user identityLink specialized to OAParamter */ private IdentityLink identityLink; /** * application specific user identifier (bPK/wbPK) */ private String bPK; /** * application specific user identifier type */ private String bPKType; /** * given name of the user */ private String givenName; /** * family name of the user */ private String familyName; /** * date of birth of the user */ private Date dateOfBirth; /** * says whether the certificate is a qualified certificate or not */ private boolean qualifiedCertificate; /** * says whether the certificate is a public authority or not */ private boolean publicAuthority; /** * public authority code (Behördenkennzeichen - BKZ) */ private String publicAuthorityCode; /** * URL of the BKU */ private String bkuURL; /** * the corresponding lt;saml:Assertion> */ /** * STORK attributes from response */ private String ccc = null; private IPersonalAttributeList storkAttributes = null; private String storkAuthnResponse; private STORKAuthnRequest storkRequest = null; private byte[] signerCertificate = null; private String authBlock = null; private List encbPKList = null; private boolean useMandate = false; private MISMandate mandate = null; private String mandateReferenceValue = null; private boolean foreigner =false; private String QAALevel = null; private boolean ssoSession = false; private Date ssoSessionValidTo = null; private boolean interfederatedSSOSession = false; private String interfederatedIDP = null; private String sessionIndex = null; private String nameID = null; private String nameIDFormat = null; public AuthenticationData() { issueInstant = new Date(); } /** * Returns the publicAuthority. * @return boolean */ public boolean isPublicAuthority() { return publicAuthority; } /** * Returns the publicAuthorityCode. * @return String */ public String getPublicAuthorityCode() { return publicAuthorityCode; } /** * Returns the qualifiedCertificate. * @return boolean */ public boolean isQualifiedCertificate() { return qualifiedCertificate; } /** * Returns the bPK. * @return String */ public String getBPK() { return bPK; } /** * Sets the publicAuthority. * @param publicAuthority The publicAuthority to set */ public void setPublicAuthority(boolean publicAuthority) { this.publicAuthority = publicAuthority; } /** * Sets the publicAuthorityCode. * @param publicAuthorityIdentification The publicAuthorityCode to set */ public void setPublicAuthorityCode(String publicAuthorityIdentification) { this.publicAuthorityCode = publicAuthorityIdentification; } /** * Sets the qualifiedCertificate. * @param qualifiedCertificate The qualifiedCertificate to set */ public void setQualifiedCertificate(boolean qualifiedCertificate) { this.qualifiedCertificate = qualifiedCertificate; } /** * Sets the bPK. * @param bPK The bPK to set */ public void setBPK(String bPK) { this.bPK = bPK; } /** * Returns the dateOfBirth. * @return String */ public Date getDateOfBirth() { return dateOfBirth; } public String getFormatedDateOfBirth() { DateFormat pvpDateFormat = new SimpleDateFormat(IDENTITY_LINK_DATE_FORMAT); if (getDateOfBirth() != null) return pvpDateFormat.format(getDateOfBirth()); else return "1900-01-01"; } /** * Returns the familyName. * @return String */ public String getFamilyName() { return familyName; } /** * Returns the givenName. * @return String */ public String getGivenName() { return givenName; } /** * Returns the identificationValue. * @return String */ public String getIdentificationValue() { return identificationValue; } /** * Returns the identificationType * @return String */ public String getIdentificationType() { return identificationType; } /** * Returns the issueInstant. * @return String */ public String getIssueInstantString() { return DateTimeUtils.buildDateTimeUTC(issueInstant); } /** * Returns the issueInstant. * @return String */ public Date getIssueInstant() { return issueInstant; } public void setIssueInstant(Date date) { this.issueInstant = date; } /** * Returns the issuer. * @return String */ public String getIssuer() { return issuer; } /** * Returns the BKU URL. * @return String */ public String getBkuURL() { return bkuURL; } /** * Sets the dateOfBirth. * @param dateOfBirth The dateOfBirth to set */ public void setDateOfBirth(Date dateOfBirth) { this.dateOfBirth = dateOfBirth; } public void setDateOfBirth(String dateOfBirth) { try { if (MiscUtil.isNotEmpty(dateOfBirth)) { DateFormat identityLinkFormat = new SimpleDateFormat(IDENTITY_LINK_DATE_FORMAT); this.dateOfBirth = identityLinkFormat.parse(dateOfBirth); } } catch (ParseException e) { Logger.warn("Parse dateOfBirht from IdentityLink FAILED", e); } } /** * Sets the familyName. * @param familyName The familyName to set */ public void setFamilyName(String familyName) { this.familyName = familyName; } /** * Sets the givenName. * @param givenName The givenName to set */ public void setGivenName(String givenName) { this.givenName = givenName; } /** * Sets the identificationValue. * @param identificationValue The identificationValue to set */ public void setIdentificationValue(String identificationValue) { this.identificationValue = identificationValue; } /** * Sets the identificationType. * @param identificationType The identificationType to set */ public void setIdentificationType(String identificationType) { this.identificationType = identificationType; } /** * Sets the issuer. * @param issuer The issuer to set */ public void setIssuer(String issuer) { this.issuer = issuer; } /** * Sets the bkuURL * @param url The BKU URL to set */ public void setBkuURL(String url) { this.bkuURL = url; } public String getBPKType() { return bPKType; } public void setBPKType(String bPKType) { this.bPKType = bPKType; } /** * @return the identityLink */ public IdentityLink getIdentityLink() { return identityLink; } /** * @param identityLink the identityLink to set */ public void setIdentityLink(IdentityLink identityLink) { this.identityLink = identityLink; } /** * @return the storkAttributes */ public IPersonalAttributeList getStorkAttributes() { return storkAttributes; } /** * @param storkAttributes the storkAttributes to set */ public void setStorkAttributes(IPersonalAttributeList storkAttributes) { this.storkAttributes = storkAttributes; } /** * @return the signerCertificate */ public byte[] getSignerCertificate() { return signerCertificate; } /** * @param signerCertificate the signerCertificate to set */ public void setSignerCertificate(byte[] signerCertificate) { this.signerCertificate = signerCertificate; } /** * @return the authBlock */ public String getAuthBlock() { return authBlock; } /** * @param authBlock the authBlock to set */ public void setAuthBlock(String authBlock) { this.authBlock = authBlock; } /** * @return the mandate */ public MISMandate getMISMandate() { return mandate; } public Element getMandate() { try { byte[] byteMandate = mandate.getMandate(); String stringMandate = new String(byteMandate); return DOMUtils.parseDocument(stringMandate, false, null, null).getDocumentElement(); } catch (Throwable e) { Logger.warn("Mandate content could not be generated from MISMandate."); return null; } } /** * @param mandate the mandate to set */ public void setMISMandate(MISMandate mandate) { this.mandate = mandate; } /** * @return the useMandate */ public boolean isUseMandate() { return useMandate; } /** * @param useMandate the useMandate to set */ public void setUseMandate(boolean useMandate) { this.useMandate = useMandate; } /** * @return */ public String getQAALevel() { return this.QAALevel; } /** * @return */ public boolean isForeigner() { return this.foreigner; } /** * @param foreigner the foreigner to set */ public void setForeigner(boolean foreigner) { this.foreigner = foreigner; } /** * @param qAALevel the qAALevel to set */ public void setQAALevel(String qAALevel) { QAALevel = qAALevel; } /** * @return the ssoSession */ public boolean isSsoSession() { return ssoSession; } /** * @param ssoSession the ssoSession to set */ public void setSsoSession(boolean ssoSession) { this.ssoSession = ssoSession; } /** * @param storkRequest the storkRequest to set */ public void setStorkRequest(STORKAuthnRequest storkRequest) { this.storkRequest = storkRequest; } /* (non-Javadoc) * @see at.gv.egovernment.moa.id.data.IAuthData#getStorkAuthnRequest() */ @Override public STORKAuthnRequest getStorkAuthnRequest() { return this.storkRequest; } /** * @return the storkAuthnResponse */ public String getStorkAuthnResponse() { return storkAuthnResponse; } /** * @param storkAuthnResponse the storkAuthnResponse to set */ public void setStorkAuthnResponse(String storkAuthnResponse) { this.storkAuthnResponse = storkAuthnResponse; } /** * @return the mandateReferenceValue */ public String getMandateReferenceValue() { return mandateReferenceValue; } /** * @param mandateReferenceValue the mandateReferenceValue to set */ public void setMandateReferenceValue(String mandateReferenceValue) { this.mandateReferenceValue = mandateReferenceValue; } /** * @return the ccc */ public String getCcc() { return ccc; } /** * @param ccc the ccc to set */ public void setCcc(String ccc) { this.ccc = ccc; } /** * @return the sessionIndex */ public String getSessionIndex() { return sessionIndex; } /** * @param sessionIndex the sessionIndex to set */ public void setSessionIndex(String sessionIndex) { this.sessionIndex = sessionIndex; } /* (non-Javadoc) * @see at.gv.egovernment.moa.id.data.IAuthData#getNameID() */ @Override public String getNameID() { return this.nameID; } /** * @param nameID the nameID to set */ public void setNameID(String nameID) { this.nameID = nameID; } /** * @return the nameIDFormat */ public String getNameIDFormat() { return nameIDFormat; } /** * @param nameIDFormat the nameIDFormat to set */ public void setNameIDFormat(String nameIDFormat) { this.nameIDFormat = nameIDFormat; } /** * @return the interfederatedSSOSession */ public boolean isInterfederatedSSOSession() { return interfederatedSSOSession; } /** * @param interfederatedSSOSession the interfederatedSSOSession to set */ public void setInterfederatedSSOSession(boolean interfederatedSSOSession) { this.interfederatedSSOSession = interfederatedSSOSession; } /** * @return the interfederatedIDP */ public String getInterfederatedIDP() { return interfederatedIDP; } /** * @param interfederatedIDP the interfederatedIDP to set */ public void setInterfederatedIDP(String interfederatedIDP) { this.interfederatedIDP = interfederatedIDP; } /** * @return the ssoSessionValidTo */ public Date getSsoSessionValidTo() { return ssoSessionValidTo; } /** * @param ssoSessionValidTo the ssoSessionValidTo to set */ public void setSsoSessionValidTo(Date ssoSessionValidTo) { this.ssoSessionValidTo = ssoSessionValidTo; } /** * @return the encbPKList */ public List getEncbPKList() { return encbPKList; } /** * @param encbPKList the encbPKList to set */ public void setEncbPKList(List encbPKList) { this.encbPKList = encbPKList; } }