diff options
| author | Thomas Lenz <tlenz@iaik.tugraz.at> | 2016-01-12 10:44:13 +0100 | 
|---|---|---|
| committer | Thomas Lenz <tlenz@iaik.tugraz.at> | 2016-01-12 10:44:13 +0100 | 
| commit | 68017565392861db4958716971d5be38faf5fff6 (patch) | |
| tree | a062aad32d972dcf1ac8da8d7acdf060a855d587 /id/server/idserverlib/src/main/java/at | |
| parent | 74e36f95b4fb49b37b05d5e93c9404f795c964df (diff) | |
| download | moa-id-spss-68017565392861db4958716971d5be38faf5fff6.tar.gz moa-id-spss-68017565392861db4958716971d5be38faf5fff6.tar.bz2 moa-id-spss-68017565392861db4958716971d5be38faf5fff6.zip | |
refactore STORK authentication module to use generic MOASession data-storage
Diffstat (limited to 'id/server/idserverlib/src/main/java/at')
3 files changed, 51 insertions, 25 deletions
| diff --git a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/builder/AuthenticationDataBuilder.java b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/builder/AuthenticationDataBuilder.java index 998fa495f..b79b99a65 100644 --- a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/builder/AuthenticationDataBuilder.java +++ b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/builder/AuthenticationDataBuilder.java @@ -32,7 +32,9 @@ import java.security.PrivateKey;  import java.util.ArrayList;  import java.util.Arrays;  import java.util.Date; +import java.util.Iterator;  import java.util.List; +import java.util.Map.Entry;  import java.util.regex.Matcher;  import java.util.regex.Pattern; @@ -62,6 +64,7 @@ import at.gv.e_government.reference.namespace.persondata._20020228_.PersonNameTy  import at.gv.e_government.reference.namespace.persondata._20020228_.PhysicalPersonType;  import at.gv.egovernment.moa.id.auth.MOAIDAuthConstants;  import at.gv.egovernment.moa.id.auth.data.AuthenticationSession; +import at.gv.egovernment.moa.id.auth.data.AuthenticationSessionStorageConstants;  import at.gv.egovernment.moa.id.auth.data.ExtendedSAMLAttribute;  import at.gv.egovernment.moa.id.auth.data.IdentityLink;  import at.gv.egovernment.moa.id.auth.data.VerifyXMLSignatureResponse; @@ -69,6 +72,7 @@ import at.gv.egovernment.moa.id.auth.exception.BuildException;  import at.gv.egovernment.moa.id.auth.exception.DynamicOABuildException;  import at.gv.egovernment.moa.id.auth.exception.MOAIDException;  import at.gv.egovernment.moa.id.auth.exception.ParseException; +import at.gv.egovernment.moa.id.auth.exception.SessionDataStorageException;  import at.gv.egovernment.moa.id.auth.exception.WrongParametersException;  import at.gv.egovernment.moa.id.auth.parser.IdentityLinkAssertionParser;  import at.gv.egovernment.moa.id.commons.db.MOASessionDBUtils; @@ -788,16 +792,24 @@ public class AuthenticationDataBuilder extends MOAIDAuthConstants {  		//set STORK attributes  		if (extractor.containsAttribute(PVPConstants.EID_STORK_TOKEN_NAME)) {				 -			authData.setStorkAuthnResponse(extractor.getSingleAttributeValue(PVPConstants.EID_STORK_TOKEN_NAME));				 -			authData.setForeigner(true); +			try { +				authData.setGenericData(AuthenticationSessionStorageConstants.STORK_RESPONSE,  +						extractor.getSingleAttributeValue(PVPConstants.EID_STORK_TOKEN_NAME)); +				authData.setForeigner(true); +				 +			} catch (SessionDataStorageException e) { +				Logger.warn("STORK Response can not stored into generic authData.", e); +				 +			}				 -		} -	 -		if (!extractor.getSTORKAttributes().isEmpty()) { -			authData.setStorkAttributes(extractor.getSTORKAttributes()); -			authData.setForeigner(true);  		} +	 +//		if (!extractor.getSTORKAttributes().isEmpty()) { +//			authData.setStorkAttributes(extractor.getSTORKAttributes()); +//			authData.setForeigner(true); +//			 +//		}  		authData.setSsoSession(true);  		authData.setInterfederatedSSOSession(true); @@ -887,10 +899,22 @@ public class AuthenticationDataBuilder extends MOAIDAuthConstants {  		authData.setBkuURL(session.getBkuURL()); -		authData.setStorkAttributes(session.getStorkAttributes()); -		authData.setStorkAuthnResponse(session.getStorkAuthnResponse()); -		authData.setStorkRequest(session.getStorkAuthnRequest()); -		 +		//copy all generic authentication information to authData +		if (session.getGenericSessionDataStorage() != null &&   +				!session.getGenericSessionDataStorage().isEmpty()) { +			Iterator<Entry<String, Object>> copyInterator = session.getGenericSessionDataStorage().entrySet().iterator(); +			while (copyInterator.hasNext()) { +				Entry<String, Object> element = copyInterator.next(); +				try { +					authData.setGenericData(element.getKey(), element.getValue()); +					 +				} catch (SessionDataStorageException e) { +					Logger.warn("Can not add generic authData with key:" + element.getKey(), e); +					 +				}				 +			}									 +		} +								  		authData.setSignerCertificate(session.getEncodedSignerCertificate());  		authData.setAuthBlock(session.getAuthBlock()); @@ -921,9 +945,12 @@ public class AuthenticationDataBuilder extends MOAIDAuthConstants {  			}  			if (MiscUtil.isEmpty(authData.getCcc())) { -				if (authData.getStorkAuthnRequest() != null) { -					authData.setCcc(authData.getStorkAuthnRequest().getCitizenCountryCode()); -					Logger.info("Can not extract country from certificate -> Use country from STORK request."); +				String storkCCC = authData.getGenericData( +						AuthenticationSessionStorageConstants.STORK_CCC, String.class); +				 +				if (MiscUtil.isNotEmpty(storkCCC)) { +					authData.setCcc(storkCCC); +					Logger.info("Can not extract country from certificate -> Use country:" + storkCCC + " from STORK request.");  				} diff --git a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/builder/attributes/EIDSTORKTOKEN.java b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/builder/attributes/EIDSTORKTOKEN.java index 84b791708..43a0458cb 100644 --- a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/builder/attributes/EIDSTORKTOKEN.java +++ b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/builder/attributes/EIDSTORKTOKEN.java @@ -24,6 +24,7 @@ package at.gv.egovernment.moa.id.protocols.builder.attributes;  import java.io.IOException; +import at.gv.egovernment.moa.id.auth.data.AuthenticationSessionStorageConstants;  import at.gv.egovernment.moa.id.config.auth.IOAAuthParameters;  import at.gv.egovernment.moa.id.config.auth.OAAuthParameter;  import at.gv.egovernment.moa.id.data.IAuthData; @@ -47,7 +48,8 @@ public class EIDSTORKTOKEN implements IPVPAttributeBuilder  {  			throw new UnavailableAttributeException(EID_STORK_TOKEN_NAME);  		} else { -			String storkResponse = authData.getStorkAuthnResponse(); +			String storkResponse = authData.getGenericData( +					AuthenticationSessionStorageConstants.STORK_RESPONSE, String.class);  			if ( MiscUtil.isEmpty(storkResponse) ) {  				throw new UnavailableAttributeException(EID_STORK_TOKEN_NAME); diff --git a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/pvp2x/utils/AssertionAttributeExtractor.java b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/pvp2x/utils/AssertionAttributeExtractor.java index 26b3bfbd1..9c294245f 100644 --- a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/pvp2x/utils/AssertionAttributeExtractor.java +++ b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/pvp2x/utils/AssertionAttributeExtractor.java @@ -38,9 +38,6 @@ import org.opensaml.saml2.core.StatusResponseType;  import org.opensaml.saml2.core.Subject;  import org.opensaml.xml.XMLObject; -import eu.stork.peps.auth.commons.PersonalAttribute; -import eu.stork.peps.auth.commons.PersonalAttributeList; -  import at.gv.egovernment.moa.id.protocols.pvp2x.PVPConstants;  import at.gv.egovernment.moa.id.protocols.pvp2x.exceptions.AssertionAttributeExtractorExeption;  import at.gv.egovernment.moa.logging.Logger; @@ -50,7 +47,7 @@ public class AssertionAttributeExtractor {  	private Assertion assertion = null;  	private Map<String, List<String>> attributs = new HashMap<String, List<String>>(); -	private PersonalAttributeList storkAttributes = new PersonalAttributeList(); +	//private PersonalAttributeList storkAttributes = new PersonalAttributeList();  	private final List<String> minimalAttributeNameList = Arrays.asList(  			PVPConstants.PRINCIPAL_NAME_NAME,  @@ -77,9 +74,9 @@ public class AssertionAttributeExtractor {  						for (XMLObject el : attr.getAttributeValues())  							storkAttrValues.add(el.getDOM().getTextContent()); -						PersonalAttribute storkAttr = new PersonalAttribute(attr.getName(),  -								false, storkAttrValues , "Available"); -						storkAttributes.put(attr.getName(), storkAttr ); +//						PersonalAttribute storkAttr = new PersonalAttribute(attr.getName(),  +//								false, storkAttrValues , "Available"); +//						storkAttributes.put(attr.getName(), storkAttr );  					} else {  						List<String> attrList = new ArrayList<String>(); @@ -155,9 +152,9 @@ public class AssertionAttributeExtractor {  	} -	public PersonalAttributeList getSTORKAttributes() { -		return storkAttributes; -	} +//	public PersonalAttributeList getSTORKAttributes() { +//		return storkAttributes; +//	}  	public String getNameID() throws AssertionAttributeExtractorExeption {		 | 
