package org.atricore.idbus.capabilities.sso.main.sp.plans.actions; import oasis.names.tc.saml._2_0.protocol.ResponseType; import org.atricore.idbus.capabilities.sso.main.common.plans.actions.AbstractSSOAction; import org.atricore.idbus.capabilities.sso.support.binding.SSOBinding; import org.atricore.idbus.common.sso._1_0.protocol.SPAuthnResponseType; import org.atricore.idbus.common.sso._1_0.protocol.SPInitiatedAuthnRequestType; import org.atricore.idbus.kernel.main.federation.metadata.EndpointDescriptorImpl; import org.atricore.idbus.kernel.main.util.UUIDGenerator; import org.atricore.idbus.kernel.planning.IdentityArtifact; import org.jbpm.graph.exe.ExecutionContext; import javax.security.auth.Subject; import java.util.UUID; /** * Initializes the SP Authn response sent from SAML 2 SPs to binding providers. * * @author <a href=mailto:sgonzalez@atricore.org>Sebastian Gonzalez Oyuela</a> */ public class InitializeSPAuthnResponse extends AbstractSSOAction { private static UUIDGenerator uidGen = new UUIDGenerator(); @Override protected void doExecute(IdentityArtifact in, IdentityArtifact out, ExecutionContext executionContext) throws Exception { SPAuthnResponseType ssoResponse = (SPAuthnResponseType) out.getContent(); ResponseType response = (ResponseType) in.getContent(); SPInitiatedAuthnRequestType ssoRequest = (SPInitiatedAuthnRequestType) executionContext.getContextInstance().getVariable(VAR_SSO_AUTHN_REQUEST); ssoResponse.setID(uidGen.generateId()); if (ssoRequest != null) { ssoResponse.setInReplayTo(ssoRequest.getID()); } } }