diff options
| author | Thomas Lenz <tlenz@iaik.tugraz.at> | 2014-03-21 11:03:21 +0100 | 
|---|---|---|
| committer | Thomas Lenz <tlenz@iaik.tugraz.at> | 2014-03-21 11:03:21 +0100 | 
| commit | bab8c73085806024c05435f632341634d4dce465 (patch) | |
| tree | 824e53a88cad61eb6f0d009e34c0ddcf8513199b | |
| parent | 3974cdadf7e40ce7fd6b2bc7e067dc77ab51ee0b (diff) | |
| download | moa-id-spss-bab8c73085806024c05435f632341634d4dce465.tar.gz moa-id-spss-bab8c73085806024c05435f632341634d4dce465.tar.bz2 moa-id-spss-bab8c73085806024c05435f632341634d4dce465.zip | |
add relayState from SAML2 request to SAML2 response
10 files changed, 34 insertions, 9 deletions
| diff --git a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/pvp2x/PVP2XProtocol.java b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/pvp2x/PVP2XProtocol.java index db83233fe..2b9e72782 100644 --- a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/pvp2x/PVP2XProtocol.java +++ b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/pvp2x/PVP2XProtocol.java @@ -321,7 +321,12 @@ public class PVP2XProtocol implements IModulInfo, MOAIDAuthConstants {  			encoder = new RedirectBinding();  		} -		encoder.encodeRespone(request, response, samlResponse, pvpRequest.getConsumerURL()); +		String relayState = null; +		if (pvpRequest.getRequest() != null) +			relayState = pvpRequest.getRequest().getRelayState(); +		 +		encoder.encodeRespone(request, response, samlResponse, pvpRequest.getConsumerURL(),  +				relayState);  		return true;  	} diff --git a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/pvp2x/PVPTargetConfiguration.java b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/pvp2x/PVPTargetConfiguration.java index 18d757208..b3887a444 100644 --- a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/pvp2x/PVPTargetConfiguration.java +++ b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/pvp2x/PVPTargetConfiguration.java @@ -57,5 +57,4 @@ public class PVPTargetConfiguration extends RequestImpl {  		this.consumerURL = consumerURL;  	} -	  } diff --git a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/pvp2x/binding/ArtifactBinding.java b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/pvp2x/binding/ArtifactBinding.java index a0fba918c..43a17af23 100644 --- a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/pvp2x/binding/ArtifactBinding.java +++ b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/pvp2x/binding/ArtifactBinding.java @@ -55,7 +55,7 @@ public class ArtifactBinding implements IDecoder, IEncoder {  	}  	public void encodeRespone(HttpServletRequest req, HttpServletResponse resp, -			StatusResponseType response, String targetLocation) +			StatusResponseType response, String targetLocation, String relayState)  			throws MessageEncodingException, SecurityException {  		try {  			Credential credentials = CredentialProvider diff --git a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/pvp2x/binding/IEncoder.java b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/pvp2x/binding/IEncoder.java index 8b888e806..f7dfd055c 100644 --- a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/pvp2x/binding/IEncoder.java +++ b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/pvp2x/binding/IEncoder.java @@ -47,6 +47,6 @@ public interface IEncoder {  	 * @throws SecurityException  	 */  	public void encodeRespone(HttpServletRequest req,  -			HttpServletResponse resp, StatusResponseType response, String targetLocation)  +			HttpServletResponse resp, StatusResponseType response, String targetLocation, String relayState)   					throws MessageEncodingException, SecurityException, PVP2Exception;  } diff --git a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/pvp2x/binding/MOARequest.java b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/pvp2x/binding/MOARequest.java index c1104f9f5..11054fd57 100644 --- a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/pvp2x/binding/MOARequest.java +++ b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/pvp2x/binding/MOARequest.java @@ -48,6 +48,7 @@ public class MOARequest implements Serializable{  	private Element samlRequest;  	private boolean verified = false;  	private String entityID = null; +	private String relayState = null;  	public MOARequest(RequestAbstractType request) {  		samlRequest = request.getDOM(); @@ -67,6 +68,22 @@ public class MOARequest implements Serializable{  	} +	 +	 +	/** +	 * @return the relayState +	 */ +	public String getRelayState() { +		return relayState; +	} + +	/** +	 * @param relayState the relayState to set +	 */ +	public void setRelayState(String relayState) { +		this.relayState = relayState; +	} +  	public void setSamlRequest(RequestAbstractType request) {  		this.samlRequest = request.getDOM();  	} diff --git a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/pvp2x/binding/PostBinding.java b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/pvp2x/binding/PostBinding.java index aebd94a29..a609942f3 100644 --- a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/pvp2x/binding/PostBinding.java +++ b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/pvp2x/binding/PostBinding.java @@ -63,7 +63,7 @@ public class PostBinding implements IDecoder, IEncoder {  	}  	public void encodeRespone(HttpServletRequest req, HttpServletResponse resp, -			StatusResponseType response, String targetLocation) +			StatusResponseType response, String targetLocation, String relayState)  			throws MessageEncodingException, SecurityException {  		try { @@ -99,6 +99,7 @@ public class PostBinding implements IDecoder, IEncoder {  			// context.setOutboundMessage(authReq);  			context.setOutboundSAMLMessage(response);  			context.setOutboundMessageTransport(responseAdapter); +			context.setRelayState(relayState);  			encoder.encode(context);  		} catch (CredentialsNotAvailableException e) { @@ -128,9 +129,12 @@ public class PostBinding implements IDecoder, IEncoder {  		RequestAbstractType inboundMessage = (RequestAbstractType) messageContext  				.getInboundMessage(); + +		  		MOARequest request = new MOARequest(inboundMessage);  		request.setVerified(false);  		request.setEntityID(messageContext.getPeerEntityMetadata().getEntityID()); +		request.setRelayState(messageContext.getRelayState());  		return request;  	} diff --git a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/pvp2x/binding/RedirectBinding.java b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/pvp2x/binding/RedirectBinding.java index 5155d6958..dc6a1f637 100644 --- a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/pvp2x/binding/RedirectBinding.java +++ b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/pvp2x/binding/RedirectBinding.java @@ -67,7 +67,7 @@ public class RedirectBinding implements IDecoder, IEncoder {  	}  	public void encodeRespone(HttpServletRequest req, HttpServletResponse resp, -			StatusResponseType response, String targetLocation) +			StatusResponseType response, String targetLocation, String relayState)  			throws MessageEncodingException, SecurityException {  		try {  			X509Credential credentials = CredentialProvider diff --git a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/pvp2x/binding/SoapBinding.java b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/pvp2x/binding/SoapBinding.java index 9fe75618d..1d41654eb 100644 --- a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/pvp2x/binding/SoapBinding.java +++ b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/pvp2x/binding/SoapBinding.java @@ -83,7 +83,7 @@ public class SoapBinding implements IDecoder, IEncoder {  	}  	public void encodeRespone(HttpServletRequest req, HttpServletResponse resp, -			StatusResponseType response, String targetLocation) +			StatusResponseType response, String targetLocation, String relayState)  			throws MessageEncodingException, SecurityException, PVP2Exception {  		try {  			Credential credentials = CredentialProvider diff --git a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/pvp2x/requestHandler/ArtifactResolution.java b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/pvp2x/requestHandler/ArtifactResolution.java index f84e6e588..04ef4cdbf 100644 --- a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/pvp2x/requestHandler/ArtifactResolution.java +++ b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/pvp2x/requestHandler/ArtifactResolution.java @@ -67,7 +67,7 @@ public class ArtifactResolution implements IRequestHandler {  				response.setMessage(assertion.getSamlMessage());  				response.setIssueInstant(new DateTime());  				SoapBinding encoder = new SoapBinding(); -				encoder.encodeRespone(req, resp, response, null); +				encoder.encodeRespone(req, resp, response, null, null);  			} catch (Exception e) {  				Logger.error("Failed to resolve artifact", e);  			} diff --git a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/pvp2x/requestHandler/AuthnRequestHandler.java b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/pvp2x/requestHandler/AuthnRequestHandler.java index c5afbabe5..fd7ff9885 100644 --- a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/pvp2x/requestHandler/AuthnRequestHandler.java +++ b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/pvp2x/requestHandler/AuthnRequestHandler.java @@ -220,7 +220,7 @@ public class AuthnRequestHandler implements IRequestHandler, PVPConstants {  		}  		try { -			binding.encodeRespone(req, resp, authResponse, oaURL); +			binding.encodeRespone(req, resp, authResponse, oaURL, obj.getRelayState());  			// TODO add remoteSessionID to AuthSession ExternalPVPSessionStore  //			Logger logger = new Logger(); | 
