In the previous post, we went through an overview of SSO with a domain cookie. In this post, we’ll dig into some of the technical considerations when implementing this SSO solution.
System Overview
As an overview, here are the responsibilities of each website from the previous post:
- AMS.abc.org (Identity Provider/System of Record):
- Provides login page
- Provides logout page
- Manages Tokens and SSO cookie.
- Provides SlideCookie page/handler (more on this below)
- Provides API to validate Tokens
- Inspects SSO cookie on every page request
- Validates Token against API on every page request (server side)
- Automatically logs the user in if the Token is valid.
- Automatically logs the user out if the Token is not valid.
Note: While this example has the login page on the Identity Provider only, this solution can also be implemented with login pages on the Service Provider assuming the Identity Provider offers an open API, but does require additional development work.
Technical Considerations
As you’re getting into your SSO implementation, there are a range of technical aspects that you need to consider. Here are a few items worth thinking through as part of your implementation.
Session Synchronization
- Sliding SSO cookie and Token (Tickling) – The “tickle” to slide the SSO cookie and the Token can be accomplished by referencing the ams.abc.org “cookie-sliding” page or handler with an image tag such as <img style=”display:none” src=”ams.abc.org/slidecookie”></img>
- In-Process sessions between all of the websites do not have to be in synch. The SSO cookie along with the API validation will keep all of the websites informed if the user is authenticated. So a session can be restarted seamlessly for the user.
Conclusion
SSO synchronization is more often than not an afterthought of SSO implementations. There are other methods to accomplish SSO synchronization between multiple websites, including those that are on different domains, however if your websites share the same Top-Level-Domain, then an SSO Domain Cookie approach is a simple and a fairly straightforward method to implement.