Chapter 15. Single Sign On (SSO)

15.1. About Single Sign On (SSO) for Web Applications


Single Sign On (SSO) allows authentication to one resource to implicitly authorize access to other resources.

Clustered and Non-Clustered SSO

Non-clustered SSO limits the sharing of authorization information to applications on the same virtual host. In addition, there is no resiliency in the event of a host failure. Clustered SSO data can be shared between applications in multiple virtual hosts, and is resilient to failover. In addition, clustered SSO is able to receive requests from a load balancer.

How SSO Works

If a resource is unprotected, a user is not challenged to authenticate at all. If a user accesses a protected resource, the user is required to authenticate.

Upon successful authentication, the roles associated with the user are stored and used for authorization of all other associated resources.
If the user logs out of an application, or an application invalidates the session programmatically, all persisted authorization data is removed, and the process starts over.
A session timeout does not invalidate the SSO session if other sessions are still valid.

Limitations of SSO

No propagation across third-party boundaries.
SSO can only be used between applications deployed within JBoss EAP 6 containers.
Container-managed authentication only.
You must use container-managed authentication elements such as <login-config> in your application's web.xml.
Requires cookies.
SSO is maintained via browser cookies and URL rewriting is not supported.
Realm and security-domain limitations
Unless the requireReauthentication parameter is set to true, all web applications configured for the same SSO valve must share the same Realm configuration in web.xml and the same security domain.
You can nest the Realm element inside the Host element or the surrounding Engine element, but not inside a context.xml element for one of the involved web applications.
The <security-domain> configured in the jboss-web.xml must be consistent across all web applications.
All security integrations must accept the same credentials (for instance, username and password).