Implementing Single Sign-On (SSO)

1. Understanding SSO Concepts

ConceptDetail
GoalOne auth session covers multiple apps
IdPCentral authentication authority
SP / RPApplications consuming SSO
Session propagationCookie at IdP + per-RP local session

2. Implementing SAML-Based SSO

StepDetail
Metadata exchangeSP + IdP swap XML metadata
AuthnRequestSP redirects browser to IdP SSO URL
AssertionPOSTed to SP ACS
Librarypassport-saml, spring-security-saml, python3-saml

3. Implementing OAuth/OIDC-Based SSO

AspectDetail
ProtocolOIDC Authorization Code + PKCE
SSO sessionIdP cookie reused across RPs
Discovery/.well-known/openid-configuration
Libraryoidc-client-ts, AppAuth, Spring Security OAuth2

4. Using Enterprise SSO

VendorProtocols
OktaSAML, OIDC, WS-Fed
Azure AD / Entra IDSAML, OIDC, WS-Fed
Auth0OIDC, SAML
Ping IdentitySAML, OIDC, OAuth
KeycloakOIDC, SAML (self-hosted)

5. Implementing Session Propagation

ApproachDetail
Shared cookie domainCookies on .example.com shared across subdomains
Token in URLSingle-use code redirect
SSO session at IdPEach RP exchanges code for own session
BFFBackend-for-Frontend holds session, serves SPA

6. Handling Cross-Domain SSO

ChallengeSolution
Third-party cookies blockedBack-channel logout, server-side polling
Cross-origin requestsCORS + postMessage between origins
CSRFstate + nonce + PKCE
MobileSystem browser / ASWebAuthenticationSession

7. Implementing SSO Logout

TypeBehavior
LocalClear app cookie only
Single Logout (SLO)Terminate IdP + all RP sessions
Back-channelOP POSTs logout_token to each RP
Front-channelHidden iframes per RP (cookie-restricted)

8. Using Identity Federation

AspectDetail
DefinitionTrust between IdPs across organizational boundaries
StandardsSAML federation, OIDC federation, WS-Federation
Hub-and-spokeCentral broker (Auth0, Keycloak) bridges providers
Example"Sign in with Google" delegates AuthN to Google

9. Implementing Just-In-Time Provisioning

StepDetail
First SSO loginSP receives assertion / id_token
LookupBy external ID (sub / NameID)
Not foundCreate local account from claims (email, name, groups)
UpdateSync attributes on subsequent logins
Alt: SCIM 2.0Push-based provisioning (RFC 7644)

10. Handling SSO Failures and Fallbacks

FailureResponse
IdP downCached session continues; new logins blocked
Metadata stalePeriodic refresh (daily)
Cert rotationTrust both old + new during grace
Break-glassLocal admin account (MFA-protected)