单点登录 (SSO)
单点登录是指在多个业务应用系统中,用户只需要登陆一次,就可以访问所有有权限的业务应用系统。在企业内部使用单点登录还是挺常见的,记录一下单点登录是什么主要是发现Oracle EBS也能单点登录,抽空特意了解了一下Oracle EBS单点登录的机制。
EBS单点登录的原理
官方文档见UG
EBS的单点登录是需要依靠Oracle Access Manage和Oracle Directory Services,启用SSO之后,EBS会将登录的功能委派给Oracle Access Manger。
从实现原理的角度看,EBS的单点登录主要是依靠cookie实现。EBS会要求需要使用相同的域名来实现单点登录
打开EBS的网址后,如果EBS没有登录的话(判断EBS的cookie是否还存在且有效)就会重定向到OAM的网址去做登录
如果OAM已经登录了(判断OAM的cookie是否存在且有效),就会重定向回EBS(返回到ebs的url中会包含用户信息,EBS会根据OAM的登录结果产生EBS的cookie),这时EBS就会自动登录
如果OAM还没有登录,用户会在OAM的网站登录,成功登录后(OAM会创建一个cookie),之后会重新回到EBS的界面,这时EBS就会自动登录了。
基本工作逻辑见下图
PS: Oracle Directory Services主要是用来存储用户名和密码信息以及映射到EBS的用户名
以上是基于标准模块的功能原理配置,如果要使用其他第三方SSO登录的软件的话,原理和上面的类似,都需要启用Oracle Access Manage和Oracle Directory Services。 只是OAM可以把登录的权限在委派给第三方的SSO软件
单点登出:也就是用户在EBS上面注销后应该一并注销单点登录认证,这需要在Access Gate做一些特殊处理清理一些cookies
EBS实施单点登录时的一些特殊考量点:
- 特殊用户不能使用SSO,如系统管理员/接口用户
- WebADI不建议使用SSO
CAS(Central Authentication Service)
CAS是一个单点登录的协议,详细逻辑见官网。
CAS 协议基于在客户端Web浏览器、Web应用和CAS服务器之间的票据验证。当客户端访问访问应用程序,请求身份验证时,应用程序重定向到CAS。CAS验证客户端是否被授权,通常通过在数据库对用户名和密码进行检查。如果身份验证成功,CAS一次性在客户端以Cookie形式发放TGT票据,在其有效期CAS将一直信任用户,同时将客户端自动返回到应用程序,并向应用传递身份验证票(Service ticket)。然后,应用程序通过安全连接连接CAS,并提供自己的服务标识和验证票。之后CAS给出了关于特定用户是否已成功通过身份验证的应用程序授信信息。
from wikipedia
从实现的角度感觉也还是用了session的功能。当第一次登陆SSO系统的时候,就会生成一个ticket,然后存放到了服务器,同时会分配给ticket给应用系统。之后应用系统访问SSO系统的时候就会带上ticket,SSO系统验证ticket来判断用户时候有效。