package org.atricore.idbus.capabilities.sso.ui.internal;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.wicket.Session;
import org.apache.wicket.markup.html.pages.AccessDeniedPage;
import org.apache.wicket.markup.html.pages.PageExpiredErrorPage;
import org.apache.wicket.request.Request;
import org.apache.wicket.request.Response;
import org.atricore.idbus.capabilities.sso.ui.agent.JossoLoginPage;
import org.atricore.idbus.capabilities.sso.ui.agent.JossoLogoutPage;
import org.atricore.idbus.capabilities.sso.ui.agent.JossoSecurityCheckPage;
import org.atricore.idbus.capabilities.sso.ui.page.authn.simple.SimpleLoginPage;
import org.atricore.idbus.capabilities.sso.ui.page.authn.strong.StrongLoginPage;
import org.atricore.idbus.capabilities.sso.ui.page.authn.twofactor.TwoFactorLoginPage;
import org.atricore.idbus.capabilities.sso.ui.page.error.AppErrorPage;
import org.atricore.idbus.capabilities.sso.ui.page.error.IdBusErrorPage;
import org.atricore.idbus.capabilities.sso.ui.page.error.SessionExpiredPage;
import org.atricore.idbus.capabilities.sso.ui.page.selfsvcs.dashboard.DashboardPage;
import org.atricore.idbus.capabilities.sso.ui.page.selfsvcs.profile.ProfilePage;
import org.atricore.idbus.capabilities.sso.ui.page.selfsvcs.pwdchange.PwdChangePage;
import org.atricore.idbus.capabilities.sso.ui.page.selfsvcs.pwdreset.PwdResetPage;
import org.atricore.idbus.capabilities.sso.ui.page.selfsvcs.pwdreset.ReqPwdResetPage;
import org.atricore.idbus.capabilities.sso.ui.page.selfsvcs.pwdreset.VerifyPwdResetPage;
import org.atricore.idbus.capabilities.sso.ui.page.selfsvcs.registration.RegistrationPage;
import org.atricore.idbus.capabilities.sso.ui.page.selfsvcs.registration.RegistrationStartedPage;
import org.atricore.idbus.capabilities.sso.ui.page.selfsvcs.registration.ReqRegistrationPage;
import org.atricore.idbus.kernel.main.provisioning.spi.ProvisioningTarget;
/**
* IdP Specific application, it provides front-end for claim channels, self-services, saml2, etc.
*
* @author: sgonzalez@atriocore.com
* @date: 3/1/13
*/
public class SSOIdPApplication extends BaseWebApplication {
private static final Log logger = LogFactory.getLog(SSOIdPApplication.class);
public SSOIdPApplication() {
super();
}
@Override
protected void preInit() {
super.preInit();
}
@Override
protected void postConfig() {
super.postConfig();
}
@Override
protected void init() {
super.init();
}
@Override
protected void buildPageMounts() {
// SSO Authentication pages: SIMPLE (usr/pwd), STRONG (x509 cert, SSL), 2FA (2 factor pass code)
addPageMount("LOGIN/SIMPLE", SimpleLoginPage.class);
addPageMount("LOGIN/STRONG", StrongLoginPage.class);
addPageMount("LOGIN/2FA", TwoFactorLoginPage.class);
// Use general purpose error pages ?!
addPageMount("ERROR", IdBusErrorPage.class);
addPageMount("ERROR/APP", AppErrorPage.class);
addPageMount("ERROR/401", AccessDeniedPage.class);
addPageMount("ERROR/404", PageExpiredErrorPage.class);
addPageMount("ERROR/SESSION", SessionExpiredPage.class);
// TODO : Only mount Self-Services pages if an SS SP is configured (we need the app. configured by now)
addPageMount("SS/HOME", DashboardPage.class);
addPageMount("SS/PROFILE", ProfilePage.class);
addPageMount("SS/REGISTER", ReqRegistrationPage.class);
addPageMount("SS/REGISTERED", RegistrationStartedPage.class);
addPageMount("SS/CONFIRM", RegistrationPage.class);
addPageMount("SS/PWDCHANGE", PwdChangePage.class);
addPageMount("SS/REQPWDRESET", ReqPwdResetPage.class);
addPageMount("SS/VFYPWDRESET", VerifyPwdResetPage.class);
addPageMount("SS/PWDRESET", PwdResetPage.class);
addPageMount("AGENT/LOGIN", JossoLoginPage.class);
addPageMount("AGENT/LOGOUT", JossoLogoutPage.class);
addPageMount("AGENT/SECURITY_CHECK", JossoSecurityCheckPage.class);
}
/**
* @see org.apache.wicket.Application#getHomePage()
*/
@Override
public Class getHomePage() {
return DashboardPage.class;
}
@Override
public Session newSession(Request request, Response response) {
return new SSOWebSession(request);
}
public ProvisioningTarget getProvisioningTarget() {
return getIdentityProvider().getProvisioningTarget();
}
}