基于SAML单点登录实现方案的分析.docx
- 文档编号:30688124
- 上传时间:2023-08-19
- 格式:DOCX
- 页数:40
- 大小:33.36KB
基于SAML单点登录实现方案的分析.docx
《基于SAML单点登录实现方案的分析.docx》由会员分享,可在线阅读,更多相关《基于SAML单点登录实现方案的分析.docx(40页珍藏版)》请在冰豆网上搜索。
基于SAML单点登录实现方案的分析
基于SAML单点登录实现方案的分析
摘要
随着信息技术和网络技术的迅猛发展,客户在信息化的过程中拥有了多套不同厂商开发的应用系统。
这些系统互相独立,用户在使用每个应用系统之前都必须按照相应的系统身份进行登录,为此用户必须记住每一个系统的用户名和密码,这给用户带来了不少麻烦。
特别是随着系统的增多,出错的可能性就会增加,受到非法截获和破坏的可能性也会增大,安全性就会相应降低。
针对于这种情况,单点登录概念应运而生,同时不断地被应用到企业应用系统中。
本文对单点登录SSO(SingleSign-On)的背景进行了分析,介绍了两种常见的单点登录技术,重点介绍了SAML技术及其实现单点登录的两种方式。
本文基于SAML技术设计了一套可行的方案,并对实现代码进行了必要的分析。
最后对安全性进行了分析,给出了相应的解决方法。
关键词
单点登录,SAML,断言
Analysisbasedonthecaseofaccomplishmentof
SAML’ssinglesign-on
WangShifeng(CollegeOfSoftwareTechnology)
DirectedbyProfessorChenDeren
Abstract
Duringtheprocessofinformationization,customersalwaysuseseveralvariouslyapplicationsystemprovidedbydifferentfirms.Socustomersmustremembereveryaccountandpasswordfordifferentsystemsiftheywanttologinorusethesesystems,asallofthemareoperatingindependentlyfromeachother.Itbringsalotoftroublestothecustormers.Especially,ifmoresystemstheyareusing,itismorelikelyforthemtomakemistakes,alsogetillegalcamptureanddestruct,thenlowerthesecurityoftheaccount.Aimedatfixthisproblem,thesinglesign-oncomeintobeingandisappliedtothecompanyapplicationsystemgrandually..
ThispaperanalysesthebackgroundofSSO(SingleSign-On)problemand introducestwocommontechniquesofSSO,emphasizesSAMLtechniqueandtwomethodsofSSO.AndhasdesignedafeasibleSSOsystemgroundedonSAMLtechnique,meanwhilemadeaanalysisofthesecurityandgivetherelevantsolution.
Keywords
SingleSign-on,SAML,Assertion
目录
第一章绪论 7
1.1本文研究的背景 7
1.2本文研究的意义 8
第二章单点登录的技术基础 12
2.1单点登录的概念 12
2.2国内外的研究概况 12
2.3SAML简介 13
2.3.1Browser/Artifact方式 15
2.3.2Browser/POST方式 16
第三章单点登录方案的设计和实现 17
3.1设计思路 17
3.1.1用户登录流程 18
3.2IDP的设计 19
3.3SP过滤器的设计 53
3.4安全性分析 66
3.5系统实现界面 66
参考文献 70
致谢 70
第一章绪论
1.1本文研究的背景
在大多数计算机连入网络之前,各个系统中像身份验证和授权这类安全服务的实现完全是独立的。
因此,执行身份验证所需的全部代码,以及密钥、口令,供授权决策所用的用户信息,以及授权策略本身均存放于使用这些信息的系统上。
最初,系统连接到网络上时情况变化不大。
每个系统都是一个孤岛,各系统都要求用户拥有一个帐户才能访问该系统。
这种方法有许多明显的缺点。
举例来说,设置多个帐户,每个帐户有一个密码、组或其他属性,这对用户和管理员来说非常不方面。
如果一个用户的职责发生变更而修改其帐户属性,或有人离开组织时删除其帐户,管理员要浪费大量时间。
如果出现更强大的认证方法,各系统还必须单独地去升级。
随着信息技术和网络技术的迅猛发展,企业的应用网站平台越来越多。
比如XX移动,常见的网站就有XX移动门户网站、网上营业厅网站、XX移动动漫门户网站、XX移动梦网网站、XX移动商城网站、12530彩铃网站等。
由于这些系统互相独立,用户在使用每个应用系统之前都必须输入手机号和服务密码进行登录,为此用户必须进入每一个系统都要重新输入,这给用户带来了不少麻烦。
特别是随着系统的增多,出错的可能性就会增加,受到非法截获和破坏的可能性也会增大,安全性就会相应降低。
针对于这种情况,单点登录(SingleSign-on,SSO)概念应运而生。
单点登录最初被视为一种提供生产力的奢侈品,而现在已成为一种必需品。
当前有越来越多的身份与访问控制管理(IAM)需求来自Web应用和WebServices,从IDC的市场预测可以看出,年复合增长率CAGR最高的两个子方向之一就是Web单点登录,达到了20.8%。
1.2本文研究的意义
在XX移动这样一个企业级的信息系统环境下,随着企业的发展,业务系统的数量在不断的增加,老的系统却不能轻易的替换,这会带来很多的开销。
其一是管理上的开销,需要维护的系统越来越多。
很多系统的数据是相互冗余和重复的,数据的不一致性会给管理工作带来很大的压力。
业务和业务之间的相关性也越来越大,例如公司的计费系统和财务系统,财务系统和人事系统之间都不可避免的有着密切的关系。
为了降低管理的消耗,最大限度的重用已有投资的系统,很多企业都在进行着企业应用集成。
企业应用集成可以在不同层面上进行:
例如在数据存储层面上的“数据大集中”,在传输层面上的“通用数据交换平台”,在应用层面上的“业务流程整合”,和用户界面上的“通用企业门户”等等。
事实上,还用一个层面上的集成变得越来越重要,那就是“身份认证”的整合,也就是“单点登录”。
通常来说,每个单独的系统都会有自己的安全体系和身份认证系统。
整合以前,进入每个系统都需要进行登录,这样的局面不仅给管理上带来了很大的困难,在安全方面也埋下了重大的隐患:
1、每个系统都是独立开发各自的身份认证系统造成资源的浪费,消耗开发成本;
2、多个身份认证系统会增加整个系统的管理工作成本;
3、用户需要记忆多个帐户和口令,使用极为不便,同时由于用户口令遗忘而导致的支持费用不断上涨;
4、无法实现统一认证和授权,多个身份认证系统使安全策略必须逐个在不同的系统内进行设置,因而造成修改策略的进度可能跟不上策略的变化;
5、无法统一分析用户的应用行为;因此,对于有多个业务系统应用需求的政府、企业或机构等,需要配置一套统一的身份认证系统,以实现集中统一的身份认证,并减少整个系统的成本。
下面是一些著名的调查公司显示的统计数据:
用户每天平均16分钟花在身份验证任务上-资料来源:
IDS
频繁的IT用户平均有21个密码-资料来源:
NTAMonitorPasswordSurvey
49%的人写下了其密码,而67%的人很少改变它们
每79秒出现一起身份被窃事件-资料来源:
NationalSmallBusinessTravelAssoc
全球欺骗损失每年约12B-资料来源:
CommFraudControlAssoc
到2007年,身份管理市场将成倍增长至$4.5B-资料来源:
IDS
使用“单点登录”整合后,只需要登录一次就可以进入多个系统,而不需要重新登录,这不仅仅带来了更好的用户体验,更重要的是降低了安全的风险和管理的消耗。
请看下面的统计数据:
提高IT效率:
对于每1000个受管用户,每用户可节省$70K
帮助台呼叫减少至少1/3,对于10K员工的公司,每年可以节省每用户$75,或者合计$648
生产力提高:
每个新员工可节省$1K,每个老员工可节省$350?
资料来源:
Giga
ROI回报:
7.5到13个月?
资料来源:
Gartner
单点登录系统的目的就是为这样的应用系统提供集中统一的身份认证,实现“一点登录、多点漫游”的目标,方便用户使用。
一个用户如何一次登录,即可使用所有他可以有权访问的应用系统。
我们希望能达到以下效果:
登录一次,可使用多个应用系统;统一的身份认证;可配置的身份认证;各个应用系统之间共享用户信息,以方便系统间数据流转。
这里就会存在以下2个关键问题:
(1)登录信息如何在多个应用之间传递;
(2)各个应用如何检查用户是否已经登录。
本文将首先从单点登录的技术基础入手,逐步说明如何解决上述2个问题。
第二章单点登录的技术基础
2.1单点登录的概念
单点登录(SSO,SingleSign-on)是一种方便用户访问多个系统的技术,用户只需在登录时进行一次注册,就可以在多个系统间自由穿梭,不必重复输入用户名和密码来确定身份。
单点登录的实质就是安全上下文(AISSOContext)或凭证(Credential)在多个应用系统之间的传递或共享。
当用户登录系统时,客户端软件根据用户的凭证(例如用户名和密码)为用户建立一个安全上下文,安全上下文包含用于验证用户的安全信息,系统用这个安全上下文和安全策略来判断用户是否具有访问系统资源的权限。
图2.1SSO原理示意图
2.2国内外的研究概况
身份认证、单点登录方面常用的技术规范或协议有Kerberos、SAML。
Kerberos协议(RFC1510)是由MIT开发的一种网络安全应用标准,提供了一种全方位的SSO解决方案。
在采用Kerberos的平台中,登录和认证是由操作系统本身维护;认证凭证也由操作系统保存,操作系统中的各个应用只需要通过配置就能加入到SSO中。
Kerberos通过安全的密钥算法,可以做到用户密码不需要直接在网络中传输,因而传输的信息十分安全。
但是搭建一个Kerberos的环境比较复杂,KDC(密钥分发中心)的建立也需要相当多的环节。
SAML为SSO提供了一个安全的协议。
SAML是允许Web站点安全地共享身份信息的一个规范,它来自ebXML和其他XML标准背后的国际性联盟OASIS。
站点使用SAML的XML词汇表和请求/应答模式,通过HTTP交换身份信息。
这种信息共享标准化能帮助Web站点与多个合作伙伴集成,避免由于为不同合作伙伴设计和维护各自私有的集成通道而引起的争论。
2005年完成的SAML2.0引入了支持身份联邦(IdentityFederation)的一些重要新功能。
认证系统设计领域内的进展之一是制定标准化的安全API,即通用安全服务API(GSS-API)。
Austin大学开发的安全网络编程(SNP),对通用接口进行了进一步的封装,把界面做到了比GSS-API更高的层次,使同网络安全性有关的编程更加方便了。
SUN和微软2005年联合开发并公布了两个技术规范草案:
WebSingleSign-OnMetadataExchange(WebSSOMEX)Protocol(Web单点登录元数据交换协议)和WebSingleSign-OnInteroperabilityProfile(WebSSOInteropProfile)(Web单点登录互操作性概览)。
这两个技术规范可使LibertyID-FF和WS-Federation两个安全的域之间实现基于浏览器的Web单点登录。
国内目前的进展主要是基于各项技术的整合开发出一些应用型的统一身份认证与权限管理系统。
2.3SAML简介
SAML(SecurityAssertionMarkupLanguage,安全性断言标记语言)是一种基于XML的框架,主要用于在各安全系统之间交换认证、授权和属性信息,它的主要目标之一就是SSO。
在SAML框架下,无论用户使用哪种信任机制,只要满足SAML的接口、信息交互定义和流程规范,相互之间都可以无缝集成。
SAML规范的完整框架及有关信息交互格式与协议使得现有的各种身份鉴别机制(PKI、Kerberos和口令)、各种授权机制(基于属性证书的PMI、ACL、Kerberos的访问控制)通过使用统一接口实现跨信任域的互操作,便于分布式应用系统的信任和授权的统一管理。
SAML并不是一项新技术。
确切地说,它是一种语言,是一种XML描述,目的是允许不同安全系统产生的信息进行交换。
SAML规范由以下部分组成:
1.断言与协议:
定义XML格式的断言的语法语义以及请求和响应协议。
2.绑定与配置文件:
从SAML请求和响应消息到底层通信协议如SOAP或SMTP的映射。
3.一致性规范:
一致性规范设置了一种基本标准,必须满足这一SAML标准的实现才能够称为一致性实现。
这样有助于提高互操作性和兼容性。
4.安全和保密的问题:
SAML体系结构中的安全风险,具体而言就是SAML如何应对这些风险以及无法解决的风险。
SAML应用的实现由三部分组成:
(1)主体(Principals),即用户。
(2)服务提供者(ServiceProviders,SP),即各种应用系统。
(3)身份提供者(IdentityProviders,IDP),即身份认证服务器。
很多应用系统服务器可以同时实现SP和IDP功能。
SAML的核心为断言(Assertion),断言可传递主体执行的认证信息、属性信息及关于是否允许主体访问其资源的授权决定。
针对以上不同目的,SAML提供以下几种不同类型的安全断言:
认证断言(AuthenticationAssertion):
认证断言用来声称消息发布者已经认证特定的主体。
属性断言(AttributeAssertion):
属性断言声称特定主体具有特定的属性。
属性可通过URI(统一资源标识)或用来定义结构化属性的一种扩展模式进行详细说明。
决定断言(DecisionAssertion):
一个决定断言报告了一个具体授权请求的结果。
授权断言(AuthorizationAssertion):
授权断言声称一个主体被给予访问一个或多个资源的特别许可。
SAML断言以XML结构描述且具有嵌套结构,由此一个断言可能包括几个关于认证、授权和属性的不同内在断言(包括认证声明的断言仅仅描述那些先前发生的认证行为)。
SAML单点登录主要有两种方式:
Browser/Artifact和Browser/POST,其实现流程分别如图2.2和图2.3所示。
2.3.1Browser/Artifact方式
图2.2Browser/Artifact方式
①用户登录IDP,或通过SP重定向到IDP的登录界面;②认证通过后,IDP生成一个认证断言,并建立对应的Artifact,然后将此Artifact作为参数返回用户;③用户被重定向到SP;④SP根据Artifact查询IDP;⑤IDP
根据对应关系将断言返回给SP,并删除断言与Artifact之间的对应关系;⑥SP检查断言,判断用户的身份,如果合法则将主页返回用户。
2.3.2Browser/POST方式
图2.3Browser/POST方式
①用户登录IDP,或通过SP重定向到IDP的登录界面;②与Browser/Artifact方式不同,IDP并不生成Artifact,而是直接将断言装入一个自动提交的Form,返回用户;③Form被自动提交到SP,其中包含断言;④SP根据此断言判断用户的身份,如果合法则将主页返回用户。
两种方式各有优点,Browser/POST方式可减少SP与IDP的交互,节省带宽,而Browser/Artifact方式安全性更高:
SP实时查询IDP,可确保断言的时效性,另外SP查询过Artifact后,IDP即删除Artifact与断言的对应关系,可防止重放攻击。
对安全性要求较高的系统而言,Browser/Artifast更适合。
在2005年底,随着监控、移动设备、宽带业务以及应用安全领域的四家主要厂商通过了最后一回合的联邦身份互操作性测试,自由联盟(LibertyAlliance)公布了SAML2.0。
2.4SAML2.0工作原理示意图
SAML2.0版在2005年3月刚刚被OASIS批准。
LibertyAlliance的目的是让尽可能多的厂商把SAML加入到他们的产品线中。
第三章单点登录方案的设计和实现
3.1设计思路
先来看第一个问题,如何在过个应用系统(SP)之间传递登录信息。
在多个应用系统(SP)之间一一建立联系是难以实现的,为此则可以考虑建立一个中心的认证服务(IDP)。
各个应用在检测到未登录之后,转去这个统一的认证服务,确认是否已经登录,并获取登录用户的身份信息。
第二个问题,各个应用系统(SP)如何检查用户是否已经登录。
各个Servlet和JSP都是通过URL来提供访问,当用户访问的时候,如果每个Servlet和JSP都去统一认证服务进行检查,开发的开销非常大。
非常幸运的是,在Servlet的规范(版本2.3以上)中提供了一种组织形式——Filter,即针对HTTP访问的过滤器。
通过Filter机制,对于每一个应用系统(SP),在一个集中的点进行身份认证的检查即可。
整个设计思路如下:
首先提供一个集中的中心认证服务器(IDP),通过这个认证服务器来进行用户的身份认证。
各个应用系统(SP)在原有实现的基础之上,增加一个Filter来进行是否登录的检测。
当访问某个应用系统(SP)时,Filter首先检查是否已经登录到了当前系统。
如果尚未登录,则将请求转向认证服务器(IDP),检查是否已经在中心认证服务器上登录;如果确认在中心认证服务器(IDP)登录了,则过滤器自动完成登录;如果确认了尚未在中心认证服务器登录,则提示用户输入相应的信息完成登录即可。
中心认证服务器(IDP)可能面对不同的实现要求。
认证服务器(IDP)实现可能采用LDAPServer,也可能是关系数据库。
这要求认证服务的接口设计提供适应各种认证服务的能力,具备可扩展的结构。
3.1.1用户登录流程
用户登录的流程图如图3.1所示:
①用户访问SP;②SP检查自身的用户Session,如果Session存在,表明用户已经登录,直接跳转到⑧,否则重定向到IDP的登录界面;③IDP提示用户登录;④如果验证成功,IDP即生成用户登录Session,身份认证断言和Artifact,并建立断言与Artifact的对应关系,然后将此Artifact作为参数向用户发送HTTP重定向指令;⑤用户被重定向到SP;⑥SP根据此Artifact向IDP发送AuthnRequest请求;⑦IDP查询Artifact与断言的对应表后,用私钥对此断言进行签名,将签名后的断言发送给SP;⑧SP收到断言,先用IDP的公钥验证断言的真实性,然后再查询系统自身的权限检查模块,如果有权访问,则生成用户登录Session,并将系统界面返回给用户,用户登录成功。
图3.1用户登录流程
3.2IDP的设计
IDP采用OpenSAML开源Java库为基础,在Linux操作系统和Weblogic环境下实现,采用用户管理、身份认证、生成断言和Artifact、签名断言、根据Artifact查询断言的功能。
①首先认证服务(IDP)提供一个UserInfo的类,封装了各个应用系统最基本的登录信息。
包括了手机号码(billId)、服务密码(passWord)、用户所在县市编号(countyCode)、当前客户名称(custName)、用户当前套餐编号(planId)、用户当前套餐名称(planName)、用户所在地市编码(regionCode)、用户当前品牌编号(tradeMark)、用户当前品牌名称(tradeMarkName)、用户当前状态(userStatus)、用户的UserID(userID)等认证信息。
//UserInfo.java
publicclassUserInfo
implementsSerializable
{
privatestaticfinallongserialVersionUID=0xf10ee76fb81afe7cL;
privatelonguserId;
privateStringcustName;
privateintplanId;
privateStringplanName;
privateshorttradeMark;
privateStringtradeMarkName;
privateStringregionCode;
privateStringcountyCode;
privateStringbillId;
privateshortuserStatus;
privatelongcreateTime;
privatelongauthId;
privateStringpassWord;
privateStringosStatus;
publicUserInfo()
{
}
publicStringgetOsStatus()
{
returnosStatus;
}
publicvoidsetOsStatus(StringosStatus)
{
this.osStatus=osStatus;
}
publicStringgetPassWord()
{
returnpassWord;
}
publicvoidsetPassWord(StringpassWord)
{
this.passWord=passWord;
}
publiclonggetAuthId()
{
returnauthId;
}
publicvoidsetAuthId(longauthId)
{
this.authId=authId;
}
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 SAML 单点 登录 实现 方案 分析