java web项目利用Filter进行单点登录的简单实现

来源:互联网 发布:33选6的所有组合数据 编辑:程序博客网 时间:2024/06/11 21:27

接到一项目需求,要求对项目进行改造,主要涉及单点登录功能。以下为详细内容:

认证整合方案

名词解释:

仿真:行内现有的实达仿真系统程序。

EF:图形前端系统。

EFS:图形前端系统服务端。

EFC:图形前端系统客户端。

UCS: 用户认证管理模块

实现方式:

单点登录功能就是用户通过登录EF系统后,EFC界面上提供所有嵌入系统链接按钮或者菜单(包含个人网上银行内部管理系统、验印系统、二代身份核查等系统)。用户点击相应连接或按钮(图标)后EF系统跨过原系统登录步骤直接进入该系统操作界面。实现用户一次登录,多系统操作功能


1、 用户点击嵌入系统链接或按钮,EFC将当前登录用户ID和外围系统编号发送给EFS中的认证服务模块;

2、 认证服务模块返回EFC当前登录所对应的外围系统用户和令牌;

3、 EFC将用户和令牌传递给嵌入系统客户端(仿真字节流方式、URL参数方式、命令行带参数方式);

4、 外围系统客户端将对应的用户和令牌传递给服务端(同时进行本系统用户登录操作);

5、 外围系统服务端将用户和令牌到认证系统做认证;

6、 认证系统返回认证结果给外围系统服务端;

7、 外围系统服务端将认证结果回传给客户端。

UCS认证服务

令牌的产生:

图形前端系统的UCS认证服务模块会根据所嵌入系统的系统编号(图形前端系统统一颁发)、柜员号(映射后的编号)产生27位长度的令牌,格式如下:

XXXXXX-XXXXXX-XXXXXX-XXXXXX

嵌入URL的发起:

当柜员要访问被嵌入系统,图形前端系统会将UCS认证服务模块颁发的令牌以及第三方系统(被嵌入系统)需要验证令牌的服务器地址、服务端口、验证请求路径拼接到需要发起URL请求的最后,格式如下:

sysno=1001&=tellerno=10001&token=XXXXXX-XXXXXX-XXXXXX-XXXXXX&ip1=127.0.0.1&port1=8989&path1=/efs/efs/verifytk.do

完整事例:

https://130.1.10.201:9043/ibm/console? sysno=1001&tellerno=10001&token=231232-231441-561267-907612&ip1=127.0.0.1&port1=8989&path1=/efs/efs/verifytk.do

注:发起的链接是http或者https适被嵌入式系统而定,具体的第三方系统要求传入的参数由第三方提出看新柜面综合前端系统是否能够满足(新柜面综合前端系统能够提供机构、柜员、日期信息)

第三方发起URL认证与验证:

第三方系统收到url请求后,得到token,ip,port,path等参数后。需要发起token的合法性校验。通过提供的jar调用相应的api进行验证,验证成功后返回true。

TokenHttpClientclient = newTokenHttpClient();boolean tokenCheck =client.tokenCheck(http://localhost:8080/efs/tokenCheck.do?sysno=01&tellerno=000001&token=31232-231441-561267-907612);

其中localhost为上送请求参数中的ip1,端口8080为port1。路径为path1,后边的sysno为上送sysno,tellerno为上送的tellerno,token为上送的Token。

第三方接到令牌认证后处理:

第三方系统从图形前端系统接收到令牌认证返回后,根据接收到的状态判断是否能够打开第三方系统。

详细的解决方案请看:java web项目利用Filter进行单点登录的简单实现(解决方案)
0 0
原创粉丝点击