SSO身份统一认证系统技术实现_第1页
SSO身份统一认证系统技术实现_第2页
SSO身份统一认证系统技术实现_第3页
SSO身份统一认证系统技术实现_第4页
SSO身份统一认证系统技术实现_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、用户身份统一认证系统技术实现方案用户身份统一认证系统 西安维信软件有限公司2014年4月22日目 录一、认证中心的主要功能:3二、认证中心的设计要求:3三、对业务系统的要求:4四、认证中心的登录4五、SSO验证实现过程5六、接口设计7七、业务系统的集成工作10一、 认证中心的主要功能:1) 用户登录认证(平台机构、用户名和密码的校验、数字证书签名校验、实时短信校验)2) 凭证生成和传递3) 凭证有效性检查4) 记录日志、提供审计5) 关联系统信息的维护6) 证书的管理和公共服务二、 认证中心的设计要求:1) 考虑到凭证的安全性,引入了加密和数字签名技术;2) 不提供注册功能,而是分别在各自应用

2、进行注册,但提供到各个系统的注册链接;3) 注销系统时,只需清除认证中心的Session信息即可,其它已经通过认证登录过的业务系统不受影响;4) 各应用系统的用户信息分别各自管理,综合接入平台提供平台统一机构和统一用户信息的生成和维护功能,并提供平台统一用户和应用系统用户的绑定功能;5) 认证中心专有凭证模块负责凭证的创建,解析及验证,并对外提供服务接口;6) 业务系统可根据凭证得到用户的相关信息,比如业务系统用户机构、用户名等信息,认证中心对外提供用户信息获取服务;7) 提供应用系统管理功能,方便统计登录行为,提供审计和日志功能,方便将其他应用系统经过简单配置,就可加入认证整合系统中,方便证

3、书的注册、注销、查询等;8) 为了确保认证中心的健壮,系统支持热备份等功能。三、 对业务系统的要求:1) 凭证信息的相互传送都是已加密的方式进行传送,即使凭证信息被截取到,也无法解析到凭证信息中的内容,各业务系统只可使用自己的私钥才可以解密凭证信息;2) 业务系统不可以每次都去认证中心验证,所以可将凭证保存在会话中,即Session的方式;3) 业务系统不要过于复杂,以方便和现有系统的整合,建议采用过滤器或Servlet方式;4) 由于业务系统的权限管理机制可能不同,故认证中心不做权限管理,由业务系统自己负责;5) 业务系统和认证中心的通信采用Web Services 接口服务。四、 认证中心

4、的登录业务系统要使用认证中心进行验证操作,第一次需要登录一次认证中心,之后的认证的操作则不需要再次登录认证中心。当认证中心登录成功之后,用户便可在认证中心的“业务应用列表”当中选择相应的业务系统,进行业务系统的用户登录验证操作。五、 SSO验证实现过程1、 当用户要使用认证中心进行业务系统的统一认证时候,分为两种情况:a) 用户未登录过统一认证系统此时用户的浏览器界面首先会跳转到认证中心的登录地址,用户输入相关的登录信息(机构号、柜员号、密码、短信效验码等),待验证通过后,则会跳转到认证中心的“业务系统列表”页面;b) 用户已登录过统一认证系统如果用户之前已经登录过认证中心,则当前用户的浏览器

5、页面会直接跳转到“业务系统列表”。2、 当进入到“业务系统列表”之后,用户通过选择相应的业务系统,然后页面会跳转到业务系统中“用于重定向到SSO验证服务认证地址的转发地址”,跳转完成后,业务系统自身会生成一个用于验证本次认证请求的随机码,并携带认证中心所提供的应用编号,向认证中心发起一次用户验证请求(即将页面重定向到认证中心所提供的“用于业务系统请求SSO验证服务的认证地址”)。3、 当认证中心接收到业务系统发起的用户验证请求后,首先认证中心会从SSO服务端的Session中获取到当前所登录用户的用户信息,然后再从业务系统的请求当中接收到由业务系统所发送的随机码和应用编号,根据认证中心登陆的用

6、户编号,业务系统的应用编号,从数据库查询到业务系统所需要的映射用户信息。然后再将业务系统所发送的随机码等信息通过相关加密方式生成一个用于本次业务系统登录认证的凭证信息,返还给业务系统。4、 业务系统通过回调地址接收到认证中心所返回的凭证信息,然后对其的可用性进行检测(验签、随机码比对、凭证可用性效验等)。如果当前凭证信息正确无误且可用,则对其进行解密。随后业务系统根据自己的需求,从凭证信息中获取到相应的用户信息,加载自己系统的用户权限、菜单等信息,跳转到业务系统自身的系统界面,即完成了一次SSO登录验证过程。六、 接口设计1) 凭证的设计(算法、结构)a) 凭证采用RAS非对称密码算法,服务端

7、采用电子信封和数字签名生成一个用于业务系统登录验证的凭证信息;b) 凭证的数据采用JSON格式存储,结构包括:i. 当验证成功后,返回响应码(00)和验证通过的用户信息凭证,如:响应码"user":"brhId":"用户机构编号","userId":"用户编号","caSerialId":"CA证书序列号",ssoUseId:”SSO用户编号”,"tokenMark":"凭证唯一标识","clientMar

8、k":"业务系统所生成的随机码","signData":"签名值";ii. 当验证失败后,则返回响应码和未通过验证的异常信息凭证;响应码"errInfo":"详细的异常信息说明"。响应码说明:响应码响应码详细说明00验证通过01代表当前所请求的应用信息不存在;02代码当前所请求的应用暂时不可用;03代表当前所请求的应用在SSO服务端暂为添加映射用户信息;04代表当前所请求的应用在SSO服务端中的映射用户信息不可用;09其他异常信息;2) 认证中心提供用于业务系统请求SSO验证服务的认证

9、地址业务系统每次使用SSO验证服务,需请求以下链接:http:/serverIp:port/verificationApp?appId=应用编号&clientMark=业务系统随机码 应用编号将会由SSO服务提供,业务系统随机码由业务系统自身生成。3) 业务系统提供用于重定向到SSO验证服务认证地址的转发地址当需要进行登录验证时,SSO系统首先跳转到此地址,然后由业务系统自身生成一个随机码,并携带认证系统所分配给自己的应用编号,重定向到认证中心所提供的用于业务系统请求SSO验证服务的认证地址:http:/clientIp:port/SSOLoginRedirect4) 业务系统提供接收

10、服务端返回凭证的回调地址 http:/clientIp:port/SSOLoginServlet 接收服务端返回的凭证(String):响应码+凭证业务应用系统读取响应码判断凭证是否正确返回,解密凭证读取随机码(clientMark),验证随机码是否是业务系统生成。5) 认证中心提供业务系统用于验证本次凭证相关信息的WebService接口地址当业务通过回调地址接收到SSO服务端的凭证信息后,需要对凭证信息进行相关的验证操作,此时就需要调用SSO服务端的WebService接口进行验证,此接口地址为:http:/serverIp:port/service/SSOService?wsdl调用方法

11、及说明:方法名称方法说明方法参数返回结果verificationToken用于验证凭证信息是否可用String,凭证唯一标识(唯一标识为凭证信息中的tokenMark值)Boolean,凭证是否可用6) 认证中心提供业务系统用于本地验签,解密数据相关方法相关的方法都位于sso_client.jar文件当中。方法名称方法说明方法参数返回结果verificationSign用于验证凭证信息是否由SSO服务端所发送String,SSO服务端返回的凭证信息Boolean,验签结果deAppToken用于解密服务端所返回的凭证信息中的数据String,SSO服务端返回的凭证信息String,解密后的凭证

12、信息7) 认证中心提供业务系统用于调用SSO验证服务所需的配置文件业务系统调用SSO验证服务所有所需的相关配置参数均存放于ssoCperties文件当中,文件当中主要包含以下几条属性信息:serviceUrl:业务系统用于调用SSO验资服务的远程WebService地址;privateKey:业务系统用于验签,解密服务端返回凭证信息的私钥信息。七、 业务系统的集成工作业务系统如要整合SSO用户验证系统,需要按以下步骤对现有业务系统进行改造,为了各业务系统更方便的整合SSO用户验证服务,以下步骤中会出现部分代码示例,其中的代码可能对部分业务系统并不适用,各业务系统也可以更具具体

13、情况更改其中的代码。1、 将相关的JAR包、配置文件添加到项目当中:Ø sso_client.jar(该JAR包用于调用远程SSO服务端相关验证接口);Ø WebService相关JAR包,由于SSO服务端的WebService服务采用Xfire方式,所以业务系统需要自行添加Xfire的相关JAR包文件;Ø 将ssoCperties文件拷贝到业务系统的src目录下,并根据情况修改其中的参数。2、 集成判断用户在线状态功能: 可以通过Filter等技术方式,判断业务系统的用户是否已登录。如果未登录,调转到SSO的认证地址http:/serverIp

14、:port/verificationApp?appId=应用编号。3、 集成凭证接收、处理、页面重定向功能:在业务系统的web.xml文件中增加以下内容: <servlet> <servlet-name>SSOLoginRedirect</servlet-name> <servlet-class>com.webtec.servlet.SSOLoginRedirect</servlet-class> </servlet> <servlet> <servlet-name>SSOLoginServle&l

15、t;/servlet-name> <servlet-class>com.webtec.servlet.SSOLoginServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>SSOLoginServle</servlet-name> <url-pattern>/ssoLogin</url-pattern> </servlet-mapping> <servlet-mapping> <ser

16、vlet-name>SSOLoginRedirect</servlet-name> <url-pattern>/ssoLoginRedirect</url-pattern> </servlet-mapping>创建用于重定向到SSO验证服务认证地址的Servlet,以下为示例代码:public class SSOLoginRedirect extends HttpServlet public void doPost(HttpServletRequest request, HttpServletResponse response) throw

17、s ServletException, IOException / 由业务系统自己生成一个随机码String clientMark = UUID.randomUUID().toString();/ 将页面重定向到SSO验证服务的认证地址response.sendRedirect("http:/serverIp:port/verificationApp?appId=app1&clientMark=" + clientMark);创建用于接收认证返回凭证的Servlet,以下为示例代码:public class SSOLoginServlet extends HttpS

18、ervlet public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException / 获取从SSO服务端返回的凭证信息String appToken = request.getParameter("appToken");/ 对SSO服务端返回的凭证信息进行验签操作boolean signState = SSOClientService.verificationSign(appToken);if(signState)/ 如果验签无误则对凭证信息进行解密操作,SSOBean实体为对解密后的JSON对象进行封装而成SSOBean ssoBean = SSOClientService.deAppToken(appToken);/ 调用SS

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论