单点登录

阅读(414) 标签: 单点登录,

单点登录是目前比较流行的企业业务整合的解决方案之一。在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。

比如小张在公司需要登录应用1和应用2,打开了应用1的登录界面,完成登录;之后再打开应用2,应用2通过令牌系统得知小张已经登录过了,则不用在输入口令,可直接进入应用内。这里令牌系统是客户公司内部的令牌系统。

为方便客户更好的体验报表中心,我们为报表中心提供了接入令牌系统的能力,这个单点登录设置就是用来把报表中心接入到客户单点登录令牌系统。

单点登录的实现方式有不只一种,我们针对最常见的方法做了接口。为客户提供了一种能够接入到支持http协议的远程令牌中心的接口,并在本地将令牌存入cookie,实现按域共享登录状态。

点击“设置”进入“单点登录”编辑界面:

上图示例中的校验令牌urlhttp://127.0.0.1:8080/token/testsso?action=1&token={0};登出urlhttp://127.0.0.1:8080/token/testsso?action=2&username={0}&token={1}

url{0}{1}…代表占位符,会被报表中心替换成对应的值。比如登出url使用{0}{1},会被替换成输入的用户名和密码,需要几个参数,这里我们就给了几个占位符。使用时要严格按规则填写。

 

启用:是否启动单点登录功能;

登录页:单点登录系统的首页登录界面,必填;

获取令牌url子系统向令牌中心获取令牌的url配置,必填。比如:http://localhost:8080/auth/get?redirect=http://localhost:6868/demo/raqsoft/center/ssoActivate.jsp

校验令牌url每个用户登录后,都会生成一个token标记,通过校验urltoken传递给令牌中心,验证通过后则无需输入用户名密码,直接登录,同时令牌中心会返回用户名给报表中心应用;

登出url退出应用时使用,用于关闭令牌中心的登录状态。此时并不会导致正在使用的应用登出。只是当应用再需要验证时,去令牌中心取不到token了,需要用户名密码重新登录;

请求方式:post/get;

cookie名称:可任意指定,用于为当前网页定义名字,方便报表中心及其他应用的认识;

cookie生效路径:域名后跟的路径。同路径命名下cookie才能互通使用,/代表应用根目录;

coolie作用域cookie有作用域设置,也就是不能跨域使用。比如设置域为testsso.com,那么这个cookie仅可以在访问***.testsso.com相互传递过去。

 

举例:

原理:报表中心提供一个免密登录的接口。接口目前已经做成了一个jsp,位于[安装根目录]/report/web/webapps/demo/raqsoft/center/ssoActivate.jsp需要用户名username参数和access_token两个参数。

1.客户配置校验url

url包括两部分:

1) 客户的校验登录url,这个是客户自己系统的,如http://xxx/getauth。这个地址用于校验请求者的登录状态,并根据redirect参数重定向,给拼上usernameaccess_token

access_token 串说明:

如果客户系统需要反向验证,则需要access_token串;

如果客户系统不需要反向验证,access_token可以随便写一个或者不传,不传的话要改下ssoActivate.jsp 中的代码,对access_token长度串的判断。

2)redirect参数,返回到报表中心执行免密登录的接口url(如redirect= http://yyy/raqsoft/center/ssoActivate.jsp

客户系统获取令牌urlredirect到报表中心的ssoActivate.jsp时,拼接参数默认用井号(#)解析。

完整url如:http://xxx/getauth?redirect=http://yyy/raqsoft/center/ssoActivate.jsp

2.报表中心,admin登录后,设置里面启用单点登录,填写登录页和获取令牌url

3.在客户的应用中,添加跳转子应用报表中心的urlhttp://yyy/reportCenterServlet?action=91

4.使用时点击3中配置的链接,就可以实现报表中心登录跳转。流程是:消息发给1中配置的地址,客户自行校验用户,通过后拼接用户名、token码,转发回ssoActivate.jsp,报表中心根据用户名免密登录。

 

每个用户可能给ssoActivate.jsp返回的参数不同,那么在ssoActivate.jsp中可以对逻辑进行修改