一个大型的J2EE系统不可能不考虑Security的问题,一般来说,大部分的系统都离不开下面这个安全模版:
 
User -> Web Application -> Security Checking
 
什么是SSO呢,使用SSO有什么好处?
 
我们先来看看传统的Security Authentication是如何运作的:
1. 用户输入User Name和Password登陆Application A,
2. System会查找Application User Database来检查用户输入的信息,看看是否正确,
3. 如果所需要的信息都正确输入了,则用户则通过了System的Authentication,可以运作Appliction。
 
但问题也因此产生:
1. 通过Web,用户将不再仅仅使用一个Application,如果需要整合Application A和Application B呢?
2. 大部分的用户都不会而且不能记住所有的Password,而且如果跨应用时需要不断的输入User Name和Password,这十分恼火。
3. 系统管理员也会觉得维护User的这么多信息是多么不容易的一件事情,从而导致错误也很容易产生。
4. 安全性也降低了,因为不同系统之间的Application User Database并不一定是通用的,你用mysql,我用oracle也不一定,而且用户可能会将所有不同系统的User Name和Password全部写下来以防忘记。
 
因此,基于各自Application为验证中心的传统Security Checking在Web的世界里将不再可行。
 
解决办法就是SSO。
SSO全称是Single Sign On,是一个Session/User的Authentication Process,能够允许User只提供一次自己的Credential Information就可以访问Mutliple Application。SSO是用来验证User是否能够访问所有的Application,而这些Application是已经被授权给User去访问的(这就是Authenticate和Authorize的区别了)。SSO能够避免多次验证,特别是User是在跨Application之间进行操作。