package org.jboss.seam.security.external.saml.sp; import javax.enterprise.inject.Instance; import javax.inject.Inject; import javax.servlet.http.HttpServletResponse; import org.jboss.seam.security.external.SamlMultiUserServiceProviderApi; import org.jboss.seam.security.external.saml.api.SamlServiceProviderApi; import org.jboss.seam.security.external.saml.api.SamlSpSession; /** * @author Marcel Kolsteren */ public class SamlSpSingleUser implements SamlServiceProviderApi { @Inject private Instance<SamlMultiUserServiceProviderApi> multiUserApi; public void login(String idpEntityId, HttpServletResponse response) { multiUserApi.get().login(idpEntityId, response); } public void localLogout() { SamlSpSession session = getSession(); if (session == null) { throw new IllegalStateException("Logout not possible because there is no current session."); } multiUserApi.get().localLogout(session); } public void globalLogout(HttpServletResponse response) { SamlSpSession session = getSession(); if (session == null) { throw new IllegalStateException("Logout not possible because there is no current session."); } multiUserApi.get().globalLogout(session, response); } public SamlSpSession getSession() { if (multiUserApi.get().getSessions().size() == 0) { return null; } else { return multiUserApi.get().getSessions().iterator().next(); } } }