diff options
| author | Florian Reimair <florian.reimair@iaik.tugraz.at> | 2014-02-13 20:52:19 +0100 | 
|---|---|---|
| committer | Florian Reimair <florian.reimair@iaik.tugraz.at> | 2014-02-13 22:06:02 +0100 | 
| commit | 6ac37f0acfb232d64607d685c0ad7f11fe581df0 (patch) | |
| tree | b4fcb8d6c6aab54a1716f56df6bb408f074358ff /id/server | |
| parent | f9889e63f9263c2d1fc24c9103025d16ee471a79 (diff) | |
| download | moa-id-spss-6ac37f0acfb232d64607d685c0ad7f11fe581df0.tar.gz moa-id-spss-6ac37f0acfb232d64607d685c0ad7f11fe581df0.tar.bz2 moa-id-spss-6ac37f0acfb232d64607d685c0ad7f11fe581df0.zip | |
StorkAPprovider can parse a stork response
Diffstat (limited to 'id/server')
| -rw-r--r-- | id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/stork2/StorkAttributeRequestProvider.java | 33 | 
1 files changed, 32 insertions, 1 deletions
| diff --git a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/stork2/StorkAttributeRequestProvider.java b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/stork2/StorkAttributeRequestProvider.java index 1862bdbe9..fbb430362 100644 --- a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/stork2/StorkAttributeRequestProvider.java +++ b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/stork2/StorkAttributeRequestProvider.java @@ -4,9 +4,14 @@ import javax.servlet.http.HttpServletRequest;  import javax.servlet.http.HttpServletResponse;  import at.gv.egovernment.moa.id.auth.exception.MOAIDException; +import at.gv.egovernment.moa.logging.Logger;  import eu.stork.peps.auth.commons.IPersonalAttributeList; +import eu.stork.peps.auth.commons.PEPSUtil;  import eu.stork.peps.auth.commons.PersonalAttribute;  import eu.stork.peps.auth.commons.PersonalAttributeList; +import eu.stork.peps.auth.commons.STORKAttrQueryResponse; +import eu.stork.peps.auth.engine.STORKSAMLEngine; +import eu.stork.peps.exceptions.STORKSAMLEngineException;  /**   * creates a STORK attribute request for a configurable set of attributes @@ -31,7 +36,33 @@ public class StorkAttributeRequestProvider implements AttributeProvider {  	 */  	@Override  	public IPersonalAttributeList parse(HttpServletRequest httpReq) throws MOAIDException { -		return null; +		Logger.debug("Beginning to extract SAMLResponse out of HTTP Request"); +		 +		//extract STORK Response from HTTP Request +		//Decodes SAML Response +		byte[] decSamlToken; +		try { +			decSamlToken = PEPSUtil.decodeSAMLToken(httpReq.getParameter("SAMLResponse")); +		} catch(NullPointerException e) { +			Logger.error("Unable to retrieve STORK Response", e); +			throw new MOAIDException("stork.04", null); +		} + +		//Get SAMLEngine instance +		STORKSAMLEngine engine = STORKSAMLEngine.getInstance("VIDP"); + +		STORKAttrQueryResponse attrResponse = null; +		try { +			//validate SAML Token +			Logger.debug("Starting validation of SAML response"); +			attrResponse = engine.validateSTORKAttrQueryResponse(decSamlToken, (String) httpReq.getRemoteHost()); +			Logger.info("SAML response succesfully verified!"); +		}catch(STORKSAMLEngineException e){ +			Logger.error("Failed to verify STORK SAML Response", e); +			throw new MOAIDException("stork.05", null); +		} +		 +		return attrResponse.getPersonalAttributeList();  	}  	/* (non-Javadoc) | 
