SSO身份统一认证系统技术实现.docx

上传人:b****7 文档编号:9357840 上传时间:2023-02-04 格式:DOCX 页数:10 大小:73.28KB
下载 相关 举报
SSO身份统一认证系统技术实现.docx_第1页
第1页 / 共10页
SSO身份统一认证系统技术实现.docx_第2页
第2页 / 共10页
SSO身份统一认证系统技术实现.docx_第3页
第3页 / 共10页
SSO身份统一认证系统技术实现.docx_第4页
第4页 / 共10页
SSO身份统一认证系统技术实现.docx_第5页
第5页 / 共10页
点击查看更多>>
下载资源
资源描述

SSO身份统一认证系统技术实现.docx

《SSO身份统一认证系统技术实现.docx》由会员分享,可在线阅读,更多相关《SSO身份统一认证系统技术实现.docx(10页珍藏版)》请在冰豆网上搜索。

SSO身份统一认证系统技术实现.docx

SSO身份统一认证系统技术实现

用户身份统一认证系统

 

西安维信软件有限公司

2014年4月22日

一、认证中心的主要功能:

1)用户登录认证(平台机构、用户名和密码的校验、数字证书签名校验、实时短信校验)

2)凭证生成和传递

3)凭证有效性检查

4)记录日志、提供审计

5)关联系统信息的维护

6)证书的管理和公共服务

二、认证中心的设计要求:

1)考虑到凭证的安全性,引入了加密和数字签名技术;

2)不提供注册功能,而是分别在各自应用进行注册,但提供到各个系统的注册链接;

3)注销系统时,只需清除认证中心的Session信息即可,其它已经通过认证登录过的业务系统不受影响;

4)各应用系统的用户信息分别各自管理,综合接入平台提供平台统一机构和统一用户信息的生成和维护功能,并提供平台统一用户和应用系统用户的绑定功能;

5)认证中心专有凭证模块负责凭证的创建,解析及验证,并对外提供服务接口;

6)业务系统可根据凭证得到用户的相关信息,比如业务系统用户机构、用户名等信息,认证中心对外提供用户信息获取服务;

7)提供应用系统管理功能,方便统计登录行为,提供审计和日志功能,方便将其他应用系统经过简单配置,就可加入认证整合系统中,方便证书的注册、注销、查询等;

8)为了确保认证中心的健壮,系统支持热备份等功能。

三、对业务系统的要求:

1)凭证信息的相互传送都是已加密的方式进行传送,即使凭证信息被截取到,也无法解析到凭证信息中的内容,各业务系统只可使用自己的私钥才可以解密凭证信息;

2)业务系统不可以每次都去认证中心验证,所以可将凭证保存在会话中,即Session的方式;

3)业务系统不要过于复杂,以方便和现有系统的整合,建议采用过滤器或Servlet方式;

4)由于业务系统的权限管理机制可能不同,故认证中心不做权限管理,由业务系统自己负责;

5)业务系统和认证中心的通信采用WebServices接口服务。

四、认证中心的登录

业务系统要使用认证中心进行验证操作,第一次需要登录一次认证中心,之后的认证的操作则不需要再次登录认证中心。

当认证中心登录成功之后,用户便可在认证中心的“业务应用列表”当中选择相应的业务系统,进行业务系统的用户登录验证操作。

五、SSO验证实现过程

1、当用户要使用认证中心进行业务系统的统一认证时候,分为两种情况:

a)用户未登录过统一认证系统

此时用户的浏览器界面首先会跳转到认证中心的登录地址,用户输入相关的登录信息(机构号、柜员号、密码、短信效验码等),待验证通过后,则会跳转到认证中心的“业务系统列表”页面;

b)用户已登录过统一认证系统

如果用户之前已经登录过认证中心,则当前用户的浏览器页面会直接跳转到“业务系统列表”。

2、当进入到“业务系统列表”之后,用户通过选择相应的业务系统,然后页面会跳转到业务系统中“用于重定向到SSO验证服务认证地址的转发地址”,跳转完成后,业务系统自身会生成一个用于验证本次认证请求的随机码,并携带认证中心所提供的应用编号,向认证中心发起一次用户验证请求(即将页面重定向到认证中心所提供的“用于业务系统请求SSO验证服务的认证地址”)。

3、当认证中心接收到业务系统发起的用户验证请求后,首先认证中心会从SSO服务端的Session中获取到当前所登录用户的用户信息,然后再从业务系统的请求当中接收到由业务系统所发送的随机码和应用编号,根据认证中心登陆的用户编号,业务系统的应用编号,从数据库查询到业务系统所需要的映射用户信息。

然后再将业务系统所发送的随机码等信息通过相关加密方式生成一个用于本次业务系统登录认证的凭证信息,返还给业务系统。

4、业务系统通过回调地址接收到认证中心所返回的凭证信息,然后对其的可用性进行检测(验签、随机码比对、凭证可用性效验等)。

如果当前凭证信息正确无误且可用,则对其进行解密。

随后业务系统根据自己的需求,从凭证信息中获取到相应的用户信息,加载自己系统的用户权限、菜单等信息,跳转到业务系统自身的系统界面,即完成了一次SSO登录验证过程。

六、接口设计

1)凭证的设计(算法、结构)

a)凭证采用RAS非对称密码算法,服务端采用电子信封和数字签名生成一个用于业务系统登录验证的凭证信息;

b)凭证的数据采用JSON格式存储,结构包括:

i.当验证成功后,返回响应码(00)和验证通过的用户信息凭证,如:

响应码{"user":

["brhId":

"用户机构编号","userId":

"用户编号","caSerialId":

"CA证书序列号"],ssoUseId:

”SSO用户编号”,"tokenMark":

"凭证唯一标识","clientMark":

"业务系统所生成的随机码","signData":

"签名值"};

ii.当验证失败后,则返回响应码和未通过验证的异常信息凭证;

响应码{"errInfo":

"详细的异常信息说明"}。

响应码说明:

响应码

响应码详细说明

00

验证通过

01

代表当前所请求的应用信息不存在;

02

代码当前所请求的应用暂时不可用;

03

代表当前所请求的应用在SSO服务端暂为添加映射用户信息;

04

代表当前所请求的应用在SSO服务端中的映射用户信息不可用;

09

其他异常信息;

2)认证中心提供用于业务系统请求SSO验证服务的认证地址

业务系统每次使用SSO验证服务,需请求以下链接:

http:

//serverIp:

port/verificationApp?

appId=应用编号&clientMark=业务系统随机码

应用编号将会由SSO服务提供,业务系统随机码由业务系统自身生成。

3)业务系统提供用于重定向到SSO验证服务认证地址的转发地址

当需要进行登录验证时,SSO系统首先跳转到此地址,然后由业务系统自身生成一个随机码,并携带认证系统所分配给自己的应用编号,重定向到认证中心所提供的用于业务系统请求SSO验证服务的认证地址:

http:

//clientIp:

port/SSOLoginRedirect

4)业务系统提供接收服务端返回凭证的回调地址

http:

//clientIp:

port/SSOLoginServlet

接收服务端返回的凭证(String):

响应码+凭证

业务应用系统读取响应码判断凭证是否正确返回,解密凭证读取随机码(clientMark),验证随机码是否是业务系统生成。

5)认证中心提供业务系统用于验证本次凭证相关信息的WebService接口地址

当业务通过回调地址接收到SSO服务端的凭证信息后,需要对凭证信息进行相关的验证操作,此时就需要调用SSO服务端的WebService接口进行验证,此接口地址为:

http:

//serverIp:

port/service/SSOService?

wsdl

调用方法及说明:

方法名称

方法说明

方法参数

返回结果

verificationToken

用于验证凭证信息是否可用

String,凭证唯一标识(唯一标识为凭证信息中的tokenMark值)

Boolean,凭证是否可用

6)认证中心提供业务系统用于本地验签,解密数据相关方法

相关的方法都位于sso_client.jar文件当中。

方法名称

方法说明

方法参数

返回结果

verificationSign

用于验证凭证信息是否由SSO服务端所发送

String,SSO服务端返回的凭证信息

Boolean,验签结果

deAppToken

用于解密服务端所返回的凭证信息中的数据

String,SSO服务端返回的凭证信息

String,解密后的凭证信息

7)认证中心提供业务系统用于调用SSO验证服务所需的配置文件

业务系统调用SSO验证服务所有所需的相关配置参数均存放于ssoClient.properties文件当中,文件当中主要包含以下几条属性信息:

serviceUrl:

业务系统用于调用SSO验资服务的远程WebService地址;

privateKey:

业务系统用于验签,解密服务端返回凭证信息的私钥信息。

七、业务系统的集成工作

业务系统如要整合SSO用户验证系统,需要按以下步骤对现有业务系统进行改造,为了各业务系统更方便的整合SSO用户验证服务,以下步骤中会出现部分代码示例,其中的代码可能对部分业务系统并不适用,各业务系统也可以更具具体情况更改其中的代码。

1、将相关的JAR包、配置文件添加到项目当中:

Øsso_client.jar(该JAR包用于调用远程SSO服务端相关验证接口);

ØWebService相关JAR包,由于SSO服务端的WebService服务采用Xfire方式,所以业务系统需要自行添加Xfire的相关JAR包文件;

Ø将ssoClient.properties文件拷贝到业务系统的src目录下,并根据情况修改其中的参数。

2、集成判断用户在线状态功能:

可以通过Filter等技术方式,判断业务系统的用户是否已登录。

如果未登录,调转到SSO的认证地址

http:

//serverIp:

port/verificationApp?

appId=应用编号。

3、集成凭证接收、处理、页面重定向功能:

在业务系统的web.xml文件中增加以下内容:

SSOLoginRedirect

com.webtec.servlet.SSOLoginRedirect

SSOLoginServle

com.webtec.servlet.SSOLoginServlet

SSOLoginServle

/ssoLogin

SSOLoginRedirect

/ssoLoginRedirect

创建用于重定向到SSO验证服务认证地址的Servlet,以下为示例代码:

publicclassSSOLoginRedirectextendsHttpServlet{

publicvoiddoPost(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{

//由业务系统自己生成一个随机码

StringclientMark=UUID.randomUUID().toString();

//将页面重定向到SSO验证服务的认证地址

response.sendRedirect("http:

//serverIp:

port/verificationApp?

appId=app1&clientMark="+clientMark);

}

}

创建用于接收认证返回凭证的Servlet,以下为示例代码:

publicclassSSOLoginServletextendsHttpServlet{

publicvoiddoPost(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{

//获取从SSO服务端返回的凭证信息

StringappToken=request.getParameter("appToken");

//对SSO服务端返回的凭证信息进行验签操作

booleansignState=SSOClientService.verificationSign(appToken);

if(signState){

//如果验签无误则对凭证信息进行解密操作,SSOBean实体为对解密后的JSON对象进行封装而成

SSOBeanssoBean=SSOClientService.deAppToken(appToken);

//调用SSO服务端WebService服务对本次凭证是否失效进行验证

if(SSOClientService.verificationToken(ssoBean.tokenMark)){

//本次凭证可用,从凭证信息中取到业务系统加载本系统所需的用户信息

//以下代码需根据各业务系统具体情况更改

Useruser=userDao.findUserById(ssoBean.userId);

if(user!

=null){

//业务系统登录成功后的操作

}

}else{

//业务系统登录失败后的操作

}

}

}

}

-----精心整理,希望对您有所帮助!

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 文学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1