正方单点接口规范

更新时间:2023-11-11 23:35:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

接口规范

2.1统一身份认证接口 URL单点漫游模式

在门户平台中点击业务系统的链接后,系统会产生类似下面的地址和参数

http://192.168.1.101/index.asp?verify=0188F3F3BD26A72BD6D61C244DA38EE8&userName=20089006072&strSysDatetime=2009-07-0310:02:08&jsName=teacher

统一身份认证系统提供verify、userName、strSysDatetime、jsName等参数,userName是用户的登录名,strSysDatetime是数据中心服务器上的系统时间,jsName是用户的角色(teacher表示教职工,student表示学生) ,verify是校验码,md5加密信息 (32位加密)。所有的参数名称可根据业务系统的实际要求进行修改(管理员可通过统一身份认证系统后台进行自定义),比如:userName 改为 userID。

verify格式:userName + 双方约定的一个key值 + strSysDatetime +jsName

双方约定的一个key值存在数据中心的数据库中;业务系统经授权后可以直接读取key值或者在业务系统数据库创建一张表用于存放key值,以便修改。

举例说明:

原始串:20089006072zfdxc_cyj212009-07-0310:02:08teacher 生成的md5加密串:0188F3F3BD26A72BD6D61C244DA38EE8 z20220070709ZFSSOKEY2015-05-2814:13:17teacher D67728A7570A3926AA59AD84FFEC9511

业务系统先获取各个参数userName(业务系统用户帐号)、strSysDatetime(时间戳)、verify(校验码),jsName(用户角色名),url(访问业务系统的某个地址),然后获取数据库时间,对比时间(注意双方服务器时间需保持标准时间)是否在允许的时间差范围内,若在时间差范围内,则需将userName、strSysDatetime、zf_key、jsName进行加密后与verify进行比较,若一致,则可以正常登录。

以下是.net业务系统集成的代码范例供参考: username = Request.QueryString(\ If username <> \

str_xxmc = getstr(\ time = Request.QueryString(\ key = getstr(\ verify = Request.QueryString(\ jsName = Request.QueryString(\

jmstr = username + key + time + jsName

zf_verify = FormsAuthentication.HashPasswordForStoringInConfigFile(jmstr, \

If username <> \ round(to_number(sysdate - to_date('\& time & \ Alert(\连接超时!!\ Exit Sub End If

If getstr(\js from yhb where yhm='\& username & \= \And getstr(\ Alert(\用户不存在!!\ Exit Sub End If

If username <> \ Alert(\身份验证失败!!\ Exit Sub End If

'Session(\ TextBox1.Text = username

If jsName = \

TextBox2.Text = jiemi(getstr(\& \教师'\

RadioButtonList1.SelectedIndex = 0 B_Click()

ElseIf jsName = \

TextBox2.Text = jiemi(getstr(\& \教师'\

RadioButtonList1.SelectedIndex = 1 B_Click() Else

TextBox2.Text = jiemi(getstr(\mm from xsjbxxb where xh='\& username & \

RadioButtonList1.SelectedIndex = 2 B_Click() End If End If

ZFCA认证模式

单点登录

用户登录到门户后,正常情况下,还要通过ZFCA服务端的验证,并返回给用户浏览器一个用户凭证,该用户凭证将以cookie的方式存储在用户浏览器端。同时,在ZFCA服务端还存储了一个session对象,包含了用户身份等信息。

当用户通过门户直接登录到业务系统,事实上是在业务系统端存在一个过滤器(ZFSSOFileter)。在该过滤器中,通常情况下需要实现的是和ZFSSO服务端的通讯,并取得ZFSSO服务器端保存的Session信息。

在业务系统的ZFSSOFileter中,需要判断session信息是否存在,若存在,则说明用户登录门户时已经通过了ZFSSO服务器的验证,此时可以证明该用户的身份是可信的。之后只需通过针对ZFSSO的验证即可。若session不存在,则需要重定向到ZFSSO服务端,进行身份验证等一系列操作,并将用户身份信息保存在session中。

程序修改:

1、 将zfcaclient.jar拷到应用程序lib目录下

2、 修改ZFSSOFilter.java ,在认证通过后给应用系统的SESSION对象赋值。 3、 在应用系统web.xml内加入filtel配置,配置详见web.xml。

ZFSSOFilter.java修改说明: 在类中

①// TODO 获取内存中参数usezfca(zfca是否启用开关)的值,0为不启用ca认证 进行代码修改,此例中是将参数usezfca存放在xml文件中,容器初始化时,读取xml中的值,并将其放入内存,在过滤链中读取参数值,1为开启zfca认证,0关闭。

参数的存放及获取方式可自行修改(如设为过滤链的初始化参数)

②//TODO 获取内存中的参数rzpturl的值(zfca认证中心地址),组合单点登录和验证地址

进行代码修改,此例中是将参数usezfca存放在xml文件中,容器初始化时,读取xml中的值,并将其放入内存,在过滤链中读取参数值,1为开启zfca认证,0关闭。

参数的存放及获取方式可自行修改(如设为过滤链的初始化参数)

③//TODO 此处加入自已应用系统的session赋值信息, 进行补充代码,完成应用系统需要的session赋值信息

单点注销

经过zfca认证模式配置的单点登录业务,可通过配置单点注销过滤器来实现统一注销。 当业务系统访问zfca的/logout,将导致浏览器中已存储的Cookie被销毁掉,即销毁zfca与当前用户间已建立的信任关系(Web SSO会话)。

1.将zfcasingleout.jar拷到应用程序lib目录下

2.修改SingleSignOutFilter.java ,在认证通过后给应用系统的SESSION对象赋的值移除。 3.在应用系统web.xml内加入filtel配置,配置详见web.xml

SingleSignOutFilter.java修改说明

//此处移除单点登录成功时放置的session值 进行补充代码,移除登录时存放的session值

本文来源:https://www.bwwdw.com/article/p6kv.html

Top