SAML2.0协议翻译

上传人:阳*** 文档编号:97924083 上传时间:2022-05-28 格式:DOC 页数:22 大小:129.50KB
返回 下载 相关 举报
SAML2.0协议翻译_第1页
第1页 / 共22页
SAML2.0协议翻译_第2页
第2页 / 共22页
SAML2.0协议翻译_第3页
第3页 / 共22页
点击查看更多>>
资源描述
SAML2.0Security Assertion Markup Language(SAML)是以XML为基础的,为在安全域间交换认证和授权数据的标准,即在身份提供者(断言的产生者)和服务提供者(断言消费者)间进行交换。SAML是OASIS Security Services Technical Committee提出并定为标准的。SAML2.0在2005年3月被批准成为OASIS的标准。SAML2.0的重要方面是他的官方文档#SAMLConform, #SAMLCore, #SAMLBind, 和 #SAMLProf覆盖了协议的详细细节。如果你初次接触SAML,你应该先阅读SAML主题的介绍,然后从OASIS中阅读#SAMLOverview 文档。 来自24个企业和组织超过30人参与了SAML2.0的创建。特别值得一提的是,自由联盟把他们的身份联盟框架(ID-FF)捐献给OASIS,ID-FF成为了SAML2.0基础规范。因此SAML2.0代表SAML1.1,自由ID-FF1.2,和Shibboleth1.3的集中。SAML 2.0断言SAML断言一个重要的类型被称为“bearer”断言,它被用于帮助Web浏览器的SSO。下面是一个很短活跃周期的bearer断言,他是由身份提供者()发布给服务提供方的.断言中包含和,假设该断言是服务提供方用来做访问控制决定的。 . 3f7b3dcf-1674-4ecd-92c8-1544f346baf8 urn:oasis:names:tc:SAML:2.0:ac:classes:PasswordProtectedTransport member staff 注意元素包含如下的子元素:l 元素,包含了身份提供者的唯一身份。l 元素,包含了在元素中完整保存的数字签名.l 元素,定义了认证过的主体,但是在该实例中,因为保密的原因,主体身份被隐藏在透明的transient标识之后。l 元素,给出了断言被认为有效的验证条件。l 元素,描述了在身份提供者的认证行为。l 元素,声明了认证主体相关的多值属性。通俗的说,断言被编码成如下信息: 在时间为2004-12-05T09:22:05Z时,身份提供者()唯一发布了关于主体(3f7b3dcf-1674-4ecd-92c8-1544f346baf8)的断言(b07b804c-7c29-ea16-7300-4f3d6f7928ac),发送给服务提供方()。特殊说明的是,认证声明说明如下信息: 包含在中的认证过的主体元素,在时间“2004-12-05T09:22:00Z”被认证,也就是说密码通过受保护的通道被发送过来。同样,属性声明陈述为: 在元素中的被验证的主体在一个机构中的工作人员。SAML2.0协议在#SAMLCore 中制定了如下协议:l 断言查询和请求协议l #Authentication Request Protocol 认证请求协议l #Artifact Resolution Protocol artifact解决协议l 命名身份管理协议l 单点退出协议l 命名身份映射协议这些协议中最重要的协议,认证请求协议,在下面讲详细讨论。认证请求协议 记得SAML 1.1 的 Web Browser SSO Profiles 是idp初始化的,也就是说,一个未经同意的元素通过浏览器从身份提供方传递到服务提供方。在SAML2.0里,流程从服务提供方开始,服务提供方发布一个详细的认证请求到身份提供方。因此,Authentication Request Protocol 是 SAML2.0的一个重要的新特性。当一个主体或者代表主体的实体,希望获得包含认证声明时,元素需要被传输到身份提供方。 上面的元素,暗中还请求了包含认证声明的断言,很显然是由服务提供方 发布,随后通过浏览器传给身份提供方。身份提供方认证主体,并且发布认证响应,通过浏览器传输回服务提供方。Artifact Resolution ProtocolSAML消息通过值 或者 值引用 从一个实体传到另一个实体。对SAML消息的引用被成为artifact。Artifact的接受者,通过直接发送请求到artifact的发布者 来处理引用,然后发布者响应由artifact引用的真实的消息。 例如,假设 身份提供方通过后台通道直接发送如下的请求到服务提供方: . AAQAAMh48/1oXIM+sDo7Dh2qMp1HM4IF5DaRNmDj6RdUmllwn9jJHyEgIi8= 作为响应,服务提供方附上artifact返回SAML元素。该协议格式就是HTTP Artifact Binding基础。 SAML2.0 绑定SAML 2.0支持的绑定有如下的绑定规范:l SAML SOAP 绑定(基于SOAP1.1)l 反SOAP绑定(PAOS);l HTTP重定向绑定(GET);l HTTP POST绑定;l SAML URI绑定。对于Web浏览器的SSO,最常用的属于HTTP POST 绑定。不管是服务提供方还是身份提供方使用HTTP POST来传输协议消息,一个实体的绑定选择是和其伙伴的绑定选择是独立的。例如,服务提供方可能使用HTTP POST绑定,然而身份提供方使用的是HTTP Artifact。HTTP POST Binding 在下属的例子中,服务提供方和身份提供方都使用HTTP POST绑定。最初,服务提供方响应 包含了一个XHTML格式文档的用户代理请求: . SAMLRequest参数的值是经过64位编码的元素,通过浏览器传输到身份提供者。身份提供方的SSO服务验证请求的有效性,并通过另一个XHTML格式的文档响应。 . SAMLResponse参数的值是经过64位编码的元素,并通过浏览器传输给服务提供方。 为了自动提交该form,下述的javascript可以出现在Xhtml页面的任意位置: window.onload = function () document.forms0.submit(); 假设页面里只有一个单个form元素。HTTP Artifact BindingHTTP Artifact Binding使用Artifact Resolution Protocol和HTTP之上的SOAP绑定根据引用来处理SAML消息。参考如下具体的例子。假设服务提供方发送消息到身份提供方。开始,服务提供方通过Http重定向传给一个artifact到身份提供者: artifact然后,身份提供方通过后台通道直接发送请求到服务提供方。最后,服务提供方返回相关消息的元素。 . 当然,该流程也可以转向其他流程,也就是说,身份提供方可能发布一个artifact。查看后面的“double artifact“profile例子。Artifact 格式化 一般来说,SAML2.0 artifact 定义如下:SAML_artifact := B64 (TypeCode EndpointIndex RemainingArtifact) TypeCode := Byte1Byte2 EndpointIndex := Byte1Byte2因此SAML2.0 artifact包含3个组件:一个双字节 TypeCode,一个双字节 EndpointIndex,和一个被称为RemainArtifact的任意序列字节。这3部分信息被结合,并且经过64位编码来生成完成的artifact。 TypeCode唯一确定了artifact格式。SAML2.0预先定义了一个如下artifact,类型为0x0004.EndpointIndex是一个特殊artifact解决终点,是由artifact issuer管理的(该发行者可能是IDP,也可是SP)。RemainArtifact,由类型定义决定,是artifact的内容。 类型为0x0004的artifact格式有如下跟如定义: TypeCode := 0x0004 RemainingArtifact := SourceId MessageHandle SourceId := 20-byte_sequence MessageHandle := 20-byte_sequence因此类型为0x0004的未编码的artifact是大小为44位的字节。SourceID是一个无序字节,但是在实际应用中,SourceID是发布者实体ID经过SHA-1算法哈希的值。messageHandle是一个随机序列,他是artifact发布者将要按照要求处理的SAML消息的引用。 例如,考虑如下类型为0x0004的artifact的哈希编码 : 00040000c878f3fd685c833eb03a3b0e1daa329d47338205e436913660e3e917549a59709fd8c91f2120222f 详细查看会发现在该artifact的前端包含了TypeCode 为0x0004和EndpointIndex 为0x0000.剩余的20个字节是发布者的实体ID()和20个随机字节的SHA-1哈希值。对该44位字节进行64位编码的例子请参照上面的参照 ArtifactResolveRequest。SAML2.0 Profiles和SAML1.1一样,在SAML2.0中最重要的用例依然是Web浏览器的单点登录,但是SAML2.0的范围比前一个版本更广,如下详细列表:l SSO Profiles# WebBrowser的SSO Profile;# Enhanced Client or Proxy (ECP) profile,增强型客户端的Profile;# Identity provider Discovery Profile,身份提供者发现 Profile;# Single Logout Profile,单点退出 Profile;# Name Identifier Management Profile,命名身份管理Profile。l Artifact Resolution Pro处理profile.l Assertion Query/Request Profile ,断言查询/请求 Profilel Name Identifier Mapping Profile ,命名身份映射Profilel SAML Attribute Profiles ,SAML 属性Profilen Basic Attribute Profile,基础的属性Profile n X.500/LDAP Attribute Profile ,X.500/LDAP属性 Profilen UUID Attribute Profile ,UUID 属性Profilen DCE PAC Attribute Profile ,DCE PAC A属性 Profilen XACML Attribute Profile ,XACML 属性Profile。尽管SAML支持的profiles很多,很大,但是因为profile的每一个绑定部分都被提取出单独的绑定规范,Profiles 规范已经被简化。Web 浏览器的单点登录Profile SAML2.0指定了包含IDP,SP和使用HTTP用户代理的主体的Web浏览器的SSO Pro有4种绑定方式可以选择,而IDP有3种绑定方式来选择,因此在每个场景中可以有12中可能的发布情形。下 面我们简述两种发布场景。 SP POST 请求;IDP POST响应 Web 浏览器中SP和IDP都是用HTTP POST 绑定方式,在SAML2.0这是一种相对简单的开发方式。 该消息流开始于SP端的对安全资源的请求。1、 SP端请求目标资源通过HTTP用户代理,主体请求在服务提供方请求一个安全资源。 服务提供方代表目标资源进行安全检查。如果SP端存在有效的安全上下文,跳过步骤2-7.2、 XHTML方式的响应服务提供方响应了一个包含XHTML格式的文档: . RelayState 标志是SP端的对状态信息保持的不透明引用。SAMLRequest参数是如下元素的64位编码值。 在元素是经过URL编码的,被插入搭配XHTML表单中之前,他首先被压缩(deflated),并且按照顺序进行64位编码。3、 请求IDP端SSO服务的请求用户代理发布POST请求给IDP端的SSO服务。POST /SAML2/SSO/POST HTTP/1.1 Host: idp.example.org Content-Type: application/x- Content-Length: nnn SAMLRequest=request&RelayState=tokenSAMLRequest 和RelayState参数值在第2步被加入到XHTML 表单中。SSO服务处理元素(按照顺序通过URL解码,64位解码拆分请求),并且进行安全检查。如果用户没有有效的安全上下文,身份提供方对用户进行验证。4、 XHTML表单响应SSO服务验证请求的有效性,并响应包含如下XHTML 表单的文档 . RelayState参数在第3步骤已经进行介绍。SAMLResponse参数是进过64位编码的如下元素: . 3f7b3dcf-1674-4ecd-92c8-1544f346baf8 urn:oasis:names:tc:SAML:2.0:ac:classes:PasswordProtectedTransport 5、 请求SP端的断言消费服务用户代理发布POST请求到SP端的断言消费服务:POST /SAML2/SSO/POST HTTP/1.1 Host: Content-Type: application/x- Content-Length: nnn SAMLResponse=response&RelayState=token其中SAMLResponse和RelayState参数在第4步已经被加载到XHTML表单。6、 重定向到目标资源断言消费服务处理响应,在SP端创建安全上下文,并通过用户代理重定向到目标资源7、 再次请求SP边的目标资源用户代理再次请求SP段的目标资源: 8、 响应请求的资源因为安全上下文已经建立,服务提供方返回资源到用户代理。SP重定向Artifact,IDP重定向Artifact在Web浏览器SSO Profile 中SP和IDP都使用HTTP Artifact绑定,是在SAML2.0中的一个复杂的实现。两者artifacts分别通过HTTP GET方式传递给各自的端点。消息流开始于SP端的安全资源请求。1、 请求SP端的目标资源通过HTTP 用户代理,主体请求服务提供方的目标资源。服务提供方代表目标资源进行安全检查。如果在SP端存在有效的安全资源上下文,跳过2-11.2、 重定向到IDP端的单点登录服务服务提供方通过用户代理转向到身份提供方的单点登录服务。RelayState参数和SAMLart参数同URL一同传给IDP;3、 请求IDP端的单点登录服务用户代理请求idp端的单点登录服务。其中token是服务提供方状态信息的不透明引用,artifact_1是一个SAML artifact,这两个信息是在第2步产生的。4、 请求SP端的Artifact Resolution Service通过发送绑定到SAML SOAP消息的元素到服务提供方的artifact resolution 服务,SSO服务会再次引用artifact。 . artifact_1 其中元素中的值是在第3步产生的SAML artifact。5、 响应SAML AuthRequest服务提供方的artifact Resolution服务返回一个包含 的元素,该元素绑定到SAML SOAP消息,然后发送到身份提供方的SSO服务。 . SSO服务处理元素,并进行安全检查。如果用户没有一个有效地安全上下文,身份提供方对用户身份进行验证。6、 重定向到断言消费服务IDP端的SSO服务通过用户代理转向到SP端的断言消费服务。先前的RelayState参数和新的SAMLart参数和URL一并转向到请求端。7、 请求SP端的断言消费服务用户代理请求在服务提供方的断言消费服务。artifact_2&RelayState=token其中Token是第3步骤产生的,artifact_2是在步骤6中产生。8、 请求IDP端的Artifact Resolution Service 通过发送绑定到SAML SOAP消息 中的元素到身份提供方的artifact resolution服务,断言消费服务会再次引用该artifact。 . artifact_2 其中元素的值是在步骤7中传递过来的。9、响应断言IDP端的 Artifact resolution服务返回包含了的元素,然后绑定到SAML SOAP消息发送到服务提供方的断言消费服务。 . . urn:oasis:names:tc:SAML:2.0:ac:classes:PasswordProtectedTransport 10、重定向到目标资源断言消费服务处理响应,并在服务提供方创建安全的上下文,并重定向到目标资源到用户代理。11、再次请求SP的安全资源 用户代理再次请求服务提供方的目标资源: 12、相应目标资源请求 因为安全资源已经存在,服务提供方返回资源到用户代理。身份提供方发现 ProfileSAML 2.0身份提供者发现 profile 介绍了如下概念: * Common Domain ,公共域* Common Domain Cookie ,公共域cookie* Common Domain Cookie Writing Service ,公共域写服务* Common Domain Cookie Reading Service ,公共域读服务 举一个例子,假设NWA()和KLM()属于虚拟组织SkyTeam Clobal Alliance()。在这个例子中,称为公共域。NWA和KLM在该公共域中拥有自己的代表域和. 公共域cookie是一个面向整个公共域的安全浏览器cookie。对于每一个浏览器用户来说,cookie存储了最近访问IdP的历史列表。Cookie的名值指定了IDP发现Profile. 在成功完成认证行为后,Idp请求公共域写服务。该服务会增加idp的唯一标识到公共域cookie中。当SP接受到一个对受保护资源的未认证的请求时,会向公共域读服务请求发现浏览器用户最近使用最多的IDP。断言 查询/请求 Profile断言查询/请求Profile是个常见的profile,它使用如下SAML2.0元素提供了大量被称为queries的类型:l 元素,被用来请求赋予唯一ID的断言。l 元素,是一个抽象的扩展点,允许定义新的面向对象的SAML查询。l 元素,用来向属性授权请求给定的主题相关属性l 元素,用来向受信任的第三方请求授权决定。 SAML SOAP绑定通常用在查询使用中。 SAML属性查询 属性可能是SAML查询中最重要的类型。通常请求方代表主体向身份提供者查询属性。如下是主题直接发布查询的例子:samlp:AttributeQuery xmlns:saml=urn:oasis:names:tc:SAML:2.0:assertion xmlns:samlp=urn:oasis:names:tc:SAML:2.0:protocol ID=aaf23196-1773-2113-474a-fe114412ab72 Version=2.0 IssueInsta
展开阅读全文
相关资源
相关搜索

最新文档


当前位置:首页 > 商业管理 > 商业合同


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!