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