首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

SAML2.0协议 - 维基百科版通译

2012-11-20 
SAML2.0协议 - 维基百科版翻译SAML 2.0 Specifications - http://saml.xml.orgSecurity Assertion Markup

SAML2.0协议 - 维基百科版翻译
SAML 2.0 Specifications - http://saml.xml.org

Security Assertion Markup Language(SAML)是以XML为基础的,为在安全域间交换认证和授权数据的标准,即在身份提供者(断言的产生者)和服务提供者(断言消费者)间进行交换。

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断言,他是由身份提供者(https://idp.example.org/SAML2)发布给服务提供方的https://sp.example.com/SAML2.断言中包含<saml:AuthnStatement>和<saml:AttributeStatement>,假设该断言是服务提供方用来做访问控制决定的。


SAMLRequest参数的值是经过64位编码的<samlp:AuthnRequest>元素,通过浏览器传输到身份提供者。身份提供方的SSO服务验证请求的有效性,并通过另一个XHTML格式的文档响应。

SAMLResponse参数的值是经过64位编码的<samlp:AuthnRequest>元素,并通过浏览器传输给服务提供方。
为了自动提交该form,下述的javascript可以出现在Xhtml页面的任意位置(假设页面里只有一个单个form元素。):

该消息流开始于SP端的对安全资源的请求,具体流程如下:
1、SP端请求目标资源
通过HTTP用户代理,主体请求在服务提供方请求一个安全资源。
https://sp.example.com/myresource
服务提供方代表目标资源进行安全检查。如果SP端存在有效的安全上下文,跳过步骤2-7.
2、XHTML方式的响应
服务提供方响应了一个包含XHTML格式的文档:

RelayState 标志是SP端的对状态信息保持的不透明引用。
SAMLRequest参数是如下<samlp:AuthnRequest>元素的64位编码值。

RelayState参数在第3步骤已经进行介绍。
SAMLResponse参数是进过64位编码的如下<samlp:Response>元素:

消息流开始于SP端的安全资源请求。
1、请求SP端的目标资源
通过HTTP 用户代理,主体请求服务提供方的目标资源。
https://sp.example.com/myresource
服务提供方代表目标资源进行安全检查。如果在SP端存在有效的安全资源上下文,跳过2-11.
2、重定向到IDP端的单点登录服务
服务提供方通过用户代理转向到身份提供方的单点登录服务。RelayState参数和SAMLart参数同URL一同传给IDP;
3、请求IDP端的单点登录服务
用户代理请求idp端的单点登录服务。
https://idp.example.org/SAML2/SSO/Artifact?SAMLart=artifact_1&RelayState=token
其中token是服务提供方状态信息的不透明引用,artifact_1是一个SAML artifact,这两个信息是在第2步产生的。
4、请求SP端的Artifact Resolution Service
通过发送绑定到SAML SOAP消息的<samlp: ArtifactResolve>元素到服务提供方的artifact resolution 服务,SSO服务会再次引用artifact。

先前的元数据元素在身份提供方中描述了SSO 服务。注意以下元素的细节描述:
key信息被简单概括;<md:ArtifactResolutionService>元素的绑定属性指明SAML SOAP绑定应该使用artifact处理;<md:ArtifactResolutionService>元素的Location 属性,被用在步骤8中的“double artifact” profile。<md:ArtifactResolutionService>元素的index属性的值被用做 SAML 类型为0x0004的artifact 的EndpointIndex。<md:NameIDFormat>元素表明SSO服务支持什么名称标识格式。<md:SingleSignOnService>元素的Binding属性是由SAML2.0绑定规范定的标准URIs。支持HTTP POST绑定的<md:SingleSignOnService>元素的Location属性被用在 “double POST”profile的步骤2.支持HTTP artifact绑定的<md:SingleSignOnService>元素的Location属性被用在“double artifact”Profile的步骤2.<saml:Attribute>元素描述了身份提供方要声明的属性。<saml:AttributeValue>元素列举出属性可用用到的可能值。
Service Provider metadata
服务提供方同样发布数据到<md:EntityDescriptor>元素。

注意下面详细描述了<md:SPSSODescriptor>metadata的元素:
<md:AssertionConsumerService>元素中index属性被用作<samlp:AuthnRequest>元素中AssertionConsumerServiceIndex属性的值。支持HTTP POST 绑定(index=”0”)的<md:AssertionConsumerService>元素中的Location属性被用在“double POST”Profile中的第4步;支持HTTP Artifact绑定(index=”1”)的<md:AssertionConsumerService>元素中的Location属性被用在“double artifact”Profile中的第6步;<md:AssertionConsumerService>元素是被身份提供方用来明确表述<saml:AttributeStatement>元素,<saml:AttributeStatement>是在Web浏览器SSO中被推到服务提供方的。<md:AttributeConsumerService>元素中的index属性是用作<samlp:AuthnRequest>元素中AssertionConsumerServiceIndex属性的值。

参考资料
【SAMLOverview】
【SAMLConform】
【SAMLCore】
【SAMLBind】
【SAMLProf】
【SAMLMeta】
【SAMLAuthnCtx】
【SAMLSecurity】
【SAMLGlossary】

转自:
SAML 2.0
SAML2.0协议翻译.doc

热点排行