1、SSO与反向代理技术介绍清华大学计算中心刘乃嘉2019-05SSO简介nSSO(Single Sign-On)n直译为一次登录n在用户访问网站时作一次身份认证,随后就可以对所有被授权的网络资源进行无缝的访问n单点登录、全网漫游SSO样例清华信息门户登录前SSO样例清华信息门户登录后SSO样例清华信息门户访问财务系统SSO样例清华信息门户访问教务系统SSO样例清华信息门户访问个人桌面SSO的来源n应用系统越来越多n信息技术和网络技术迅猛发展n财务系统、办公自动化系统、决策支持系统、客户关系管理系统和网站发布系统等n身份认证和用户管理上出现了问题n用户必须记住每一个系统的用户名和密码n随着系统的增
2、多,出错的可能性就会增加n安全性就会相应降低n受到非法截获和破坏的可能性也会增大n统一用户认证、单点登录概念出现n不断地被应用到企业应用系统中。SSO的好处n减少登录耗费的时间n减少登录出错的可能性n避免了处理和保存多套系统用户的认证信息n减少了系统管理员增加、删除用户和修改用户权限的时间n增加了安全性n系统管理员有了更好的方法管理用户,包括可以通过直接禁止和删除用户来取消该用户对所有系统资源的访问权限SSO实现的基础统一用户管理n原因n如果用户信息不统一,系统就无法很好的做到身份的正确识别n传统应用系统运行模式n每个应用系统都拥有独立的用户信息管理功能n用户信息的格式、命名与存储方式也多种多
3、样n当用户需要使用多个应用系统时就会带来用户信息同步问题n用户信息同步会增加系统的复杂性,增加管理的成本。SSO实现的基础统一用户管理n例子n用户X需要同时使用A系统与B系统,就必须在A系统与B系统中都创建用户Xn这样在A、B任一系统中用户X的信息更改后就必须同步至另一系统n如果用户X需要同时使用10个应用系统,用户信息在任何一个系统中做出更改后就必须同步至其他9个系统。用户同步时如果系统出现意外,还要保证数据的完整性,因而同步用户的程序可能会非常复杂用户管理系统(UUMS)n解决用户同步问题的根本办法nUUMS统一存储所有应用系统的用户信息,应用系统对用户的相关操作全部通过UUMS完成,而授
4、权等操作则由各应用系统完成,即统一存储、分布授权。用户管理系统(UUMS)nUUMS基本功能n用户信息规范命名、统一存储,用户ID全局惟一。用户ID犹如身份证,区分和标识了不同的个体。nUUMS向各应用系统提供用户属性列表,如姓名、电话、地址、邮件等属性,各应用系统可以选择本系统所需要的部分或全部属性。n应用系统对用户基本信息的增加、修改、删除和查询等请求由UUMS处理。用户管理系统(UUMS)n应用系统保留用户管理功能,如用户分组、用户授权等功能。nUUMS应具有完善的日志功能,详细记录各应用系统对UUMS的操作统一用户认证系统n统一用户认证是以UUMS为基础,对所有应用系统提供统一的认证方
5、式和认证策略,以识别用户身份的合法性n应支持以下几种认证方式n匿名认证方式:用户不需要任何认证,可以匿名的方式登录系统n用户名/密码认证:这是最基本的认证方式nPKI/CA数字证书认证:通过数字证书的方式认证用户的身份统一用户认证系统nIP地址认证:用户只能从指定的IP地址或者IP地址段访问系统n时间段认证:用户只能在某个指定的时间段访问系统n访问次数认证:累计用户的访问次数,使用户的访问次数在一定的数值范围之内认证策略n认证策略n指认证方式通过与、或、非等逻辑关系组合后的认证方式n管理员可以根据认证策略对认证方式进行增、删或组合,以满足各种认证的要求。n比如,某集团用户多人共用一个账户,用户
6、通过用户名密码访问系统,访问必须限制在某个IP地址段上。该认证策略可表示为:用户名/密码“与”IP地址认证。数字证书认证n通常应用在安全级别要求较高的环境中nPKI(Public Key Infrastructure)即公钥基础设施是利用公钥理论和数字证书来确保系统信息安全的一种体系。n非对称密钥密码体制n密钥n成对生成n一个公钥和一个私钥n公钥公布于众,私钥为所用者私有数字证书认证n加解密过程n发送者利用接收者的公钥发送信息n解密:接收者利用自己的私钥解密n数字签名n确保数据完整性和原始性n从数据被签名以来数据尚未发生更改n确认对数据签名的人或实体的身份n安全电子商务的基本要求n使用方法n签
7、名者使用私钥签名n接受者使用公钥确认签名数字证书n数字证书n互联网通讯中标志通讯各方身份信息的一系列数据n由一个由权威机构-CA机构,又称为证书授权(Certificate Authorit y)中心发行的n人们可以在网上用它来识别对方的身份n数字证书是一个经证书授权中心数字签名的包含公开密钥拥有者信息以及公开密钥的文件。n最简单的证书包含一个公开密钥、名称以及证书授权中心的数字签名。n一般情况下证书中还包括密钥的有效时间,发证机关(证书授权中心)的名称,该证书的序列号等信息,证书的格式遵循 ITUT X.509国际标准。授权管理(PMI)nPMInPrivilege Management I
8、nfrastructuren授权管理基础设施n向用户和应用程序提供授权管理服务n提供用户身份到应用授权的映射功能n提供与实际应用处理模式相对应的、与具体应用系统开发和管理无关的授权和访问控制机制PMI与PKInPMI以资源管理为核心,对资源的访问控制权统一交由授权机构统一处理nPMI和PKI主要区别:nPKI证明用户是谁,nPMI证明这个用户有什么权限,能干什么n而且PMI可以利用PKI为其提供身份认证SSO的基本原理n单点登录的实质n安全上下文(Security Context)或凭证(Credential)在多个应用系统之间的传递或共享n当用户登录系统时,客户端软件根据用户的凭证(例如用户
9、名和密码)为用户建立一个安全上下文,安全上下文包含用于验证用户的安全信息,系统用这个安全上下文和安全策略来判断用户是否具有访问系统资源的权限。SSO的基本原理统一用户认证与单点登录模型统一用户认证与单点登录模型nAA管理服务器:n即认证(Authentication)和授权(Authorization)服务器,它为系统管理员提供用户信息、认证和授权的管理nSSO:包括SSO代理和SSO服务器。SSO代理部署在各应用系统的服务器端,负责截获客户端的SSO请求,并转发给SSO服务器,如果转发的是OCSP请求,则SSO服务器将其转发给OCSP服务器。在C/S方式中,SSO代理通常部署在客户端。统一用
10、户认证与单点登录模型nSSOnSSO服务器需要存储一张用户会话(Session)表,以记录用户登录和登出的时间nSSO服务器通过检索会话表就能够知道用户的登录情况,该表通常存储在数据库中nAA系统提供了对会话的记录、监控和撤消等管理功能。n为保证稳定与高效,SSO、PMI和OCSP可部署两套或多套应用,同时提供服务。清华大学统一认证和漫游系统n数字校园的重要组成部分,是网络基础服务之一n校园网络应用系统提供一个统一的口令认证接口,实现用户在不同应用系统中口令的统一化n实现网络应用的“单点登录”(SSO,Single Sign On)n稳定、可靠、安全、高效系统结构图用户认证过程认证客户端()门
11、户 认证服务器用户()1.登录请求 用户名/密码 HTTPS()2.认证请求 安全认证 3.认证结果4.登录结果、图二 用户认证过程用户漫游过程认证客户端()门户 认证服务器用户1.请求漫游到某网络应用系统2.提供会话凭据申请漫游票据5.申请漫游票据结果6.请求漫游的结果、图四 用户漫游过程票据服务器3.申请新票据4.申请新票据的结果网络应用系统7.提交漫游票据8.验证漫游票据9.验证漫游票据的结果10.漫游的结果3.会话凭据无效申请漫游票据失败认证和漫游接口nJava接口nC接口nPHP接口nASP接口nNotes接口SSO的其他实现方式n安全上下文nWindows域n使用同域内cookie
12、方式n安全性不好n其他简易做法n使用对称密钥反向代理系统n目的n解决基于IP地址认证资源的访问背景n图书馆论文保护n教育用商用是侵权的行为,很难区分用户的真正用途n不完全禁止下载n只防范大批量的恶意下载n分析用户的行为n要求可以追查到人而不是某个IPn自动分析用户行为,并做出统计n用户不必对客户机做额外的配置n论文服务器图书馆没有权限管理,因而不能把访问控制系统做在服务器端,必须外挂。n清华门户系统代理n门户系统很多内容限制在校外访问n门户系统可以识别校内外背景n解决方案n使用正常的Web代理n使用VPN技术n使用SSL VPN技术n解决方案存在的问题n用户设置不方便n可能需要安装控件n控制粒
13、度不细致n不能很好的区分用户的行为反向代理(1)n原理n从外观看来,也就是从普通用户看来,反向代理就像普通的WEB服务器一样。而反向代理所代理的每一个WEB服务器都好像是反向代理服务器中的一个目录。n反向代理也可以说是一个目录映射代理服务器,而不是端口映射代理服务器反向代理(2)n举例nwebserver/index.htmlnlstd.cic.tsinghua.edu/WACS/webserver/index.htmlnhttps:/webserver/index.htmlnlstd.cic.tsinghua.edu/WACSS/webserver/index.html反向代理(3)反向代理
14、(4)n优点n客户端不必配置n用户可以使用正向代理访问n用户对其它网站的访问速度不受影响n缺点n要全文扫描并改写链接,对反向代理服务器要求较高n尚不能解决部分script的问题Servlet接收层认证层Cache层HTTP发送层HTTP接收层回复改写层Servlet发送层内容过滤层WEB服务器客户机浏览器请求改写层反向代理反向代理结构反向代理的关键技术(1)n地址改写n按照html和cookie的规范,用正则表达式解决,有比较成熟的技术n绝对地址(以或“/”打头),则把它改写成通过反向代理的格式。n绝对地址的改写经常会出现一些问题,例如js中的地址改写(“/”开头的地址),采用了filter技
15、术解决n原理:我们可以大致认为:某一次访问的网站应该和上一次的基本一致,如果我们不能知道这次访问的地址,就认为和上次的一样n相对地址不用改动反向代理关键技术(2)nCookie改写nJSESSIONID=aHOYGWGME6f8会被改写成 _WA_0000JSESSIONID=aHOYGWGME6f8其中_WA_是开头部分,固定0000是网站标识,具体对应的哪个网站是由服务器端存储在用户的会话过程中的nLocation改写nReferer改写使用指南n可被代理地址:n服务器地址限制n可代理地址:n用户地址限制n黑名单、不受限用户、不受限IP、规则n图书馆使用,限制用户行为,防止过量下载n规则填写说明n使用正则表达式,常用的是.*,代表所有字符。可以使用括号、NOT、OR、AND等n纯Java实现,实施简单谢谢!谢谢大家!