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());
}
}
}