package org.jboss.seam.security.examples.id_provider;
import java.io.IOException;
import javax.inject.Inject;
import javax.servlet.ServletContext;
import org.jboss.solder.logging.Logger;
import org.jboss.seam.security.external.api.ResponseHolder;
import org.jboss.seam.security.external.saml.api.SamlIdentityProviderApi;
import org.jboss.seam.security.external.saml.api.SamlIdpSession;
import org.jboss.seam.security.external.spi.SamlIdentityProviderSpi;
public class SamlIdentityProviderSpiImpl implements SamlIdentityProviderSpi {
@Inject
private Logger log;
@Inject
private ServletContext servletContext;
@Inject
private SamlIdentity identity;
@Inject
private SamlIdentityProviderApi idpApi;
public void authenticate(ResponseHolder responseHolder) {
if (identity.isLoggedIn()) {
idpApi.authenticationSucceeded(responseHolder.getResponse());
} else {
responseHolder.redirectWithDialoguePropagation(servletContext.getContextPath() + "/Login.jsf");
}
}
public void globalLogoutFailed(ResponseHolder responseHolder) {
try {
responseHolder.getResponse().sendRedirect(servletContext.getContextPath() + "/SingleLogoutFailed.jsf");
} catch (IOException e) {
throw new RuntimeException(e);
}
}
public void globalLogoutSucceeded(ResponseHolder responseHolder) {
try {
responseHolder.getResponse().sendRedirect(servletContext.getContextPath() + "/Login.jsf");
} catch (IOException e) {
throw new RuntimeException(e);
}
}
public void loggedOut(SamlIdpSession session) {
log.info("Unsolicited logout for user " + session.getPrincipal().getNameId().getValue() + ".");
}
}