SAML国标2

2.7 名称标识符映射协议

一个实体和身份提供者分享一个主体的主体标识符,当此实体希望为同一个主体获得一个指定格式或联合命名空间的名字标识符时,它可以使用此协议发送请求到身份提供者。

例如:SP1希望与SP2通信,却没有共享一个用户的标识,一个身份提供者分别与SP1、SP2共享该用户的标识符,SP1可以利用身份提供者将用户在SP1的标识映射到用户在SP2的标识(通常是加密的),利用该标识符,SP1可以与SP2通信。

除非专门指明加密是不必要的,否则无论所包含的的标识符的类型是什么,映射后的标识符都应当被加密成encryptedID。

2.7.1 NameIDMappingRequest 元素

为了给某主体向身份提供者请求一个名称标识符,请求者发送一个消息NameIDMappingRequest,本消息为NameIDMappingRequestType复合类型,它扩展了RequestAbstractType,并加入了下列元素:

a. BaseID或NameID或EncryptedID 【必需】 标识符与相关属性(以明文或加密形式)详细说明了主体

b. NameIDPolicy 【必需】 需要返回的关于标识符格式与可选名称限定的需求。

应当使用用来发送消息的绑定协议对NameIDMappingRequest进行签名或认证,并提供完整性保护。

2.7.2 NameIDMappingResponse元素

为NameIDMappingResponseType复合类型,扩展了StatusResponseType并添加了下列元素:

saml:NameID或saml:EncryptedID 【必需】 详细说明主体的标识符与相关属性

应当使用用来发送消息的绑定协议对NameIDMappingResponse进行签名或认证,并提供完整性保护。


2.8 SAML和XML签名句法与处理

SAML断言和协议请求响应消息可以使用签名。签名可带来以下好处:经过签名的断言支持断言完整性保护,可以认证断言和消息的发布方,如果签名基于发布方的公私钥对,签名还将保证不可否认性。

SAML中,数字签名并不是必要的,在某些情况下,签名可以通过继承得到,例如无签名的断言可以受到协议响应消息上签名的保护。

如果内部对象(如断言)拥有长时间的有效性,那么通过继承得到的签名需要被小心使用,为了保证其有效性,整个上下文都需要被保留。

另一个例子是SAML依赖方或请求方可能直接通过安全信道从可信的发布方那里得到一个断言或协议消息,这种方法也不需要数字签名。许多技术可以实现这种直接认证和安全信道的建立,包括TLS/SSL、HMAC以及基于口令的机制等。

推荐在其他所有上下文中对断言和请求响应消息使用数字签名。

以下条款需要特别注意:

---依赖方从SAML发布方以外的实体获得的断言应该经过发布方签名;

---由消息起源方以外的实体发出的消息应该经过消息的起源方签名;

---如果一个概述中未明确声明使用其他的签名机制,任何XML数字签名应使用enveloped形式

所有SAML断言都可以使用XML签名

所有SAML请求响应信息都可以使用XML签名。

2.8.1 XML签名机制

是一个高适应、通用的XML签名机制。SAML配置文件只使用断言和请求响应中直接得到的<ds:Signature>元素,其他配置文件中可以使用自定义方法以获取其他地方出现的签名。

XML签名中包含三种签名和文档的关联方法:enveloping、enveloped和detached。

SAML断言和协议应使用enveloped方式的签名,SAML处理者应该支持rsa-sha1中描述的RSA签名和校验操作。

SAML签名断言和协议消息应为根元素中的ID属性指定值,该根元素可以不是包含该断言或消息的XML文档的根元素。签名应包含一个单独的<ds:Reference>,其中包含根元素中ID属性值的指针。

SAML操作应该在<ds:SignedInfo>中的<ds:CanonicalizationMethod>元素以及<ds:Transform>算法中使用Exclusive Canonicalization。 使用Exclusive Canonicalization能够确保嵌入XML上下文的SAML消息上签名可以被独立识别。

XML签名定义了<ds:KeyInfo>元素的使用,SAML不需要使用<ds:KeyInfo>,也不对其使用作任何限制,因此<ds:KeyInfo>可以忽略。

2.9 SAML和XML加密句法与处理

通常使用某些加密操作来对SAML断言进行保护。

通信机密性可以由具体的绑定和配置文件来提供:

----<subjectConfirmation>的机密性可通过使用<SubjecctConfirmationData>中的<ds:KeyInfo>元素来保护,该元素允许对密钥和其他机密信息进行加密。

----完整的<Assertion>元素可以按照6.4.4(标准中的章节)的要求进行加密;

----<BaseID>和<NameID>元素可以按照6.3.5(标准中的章节)的要求进行加密。

<Attribute>元素可以按照6.8.3.3的要求进行加密

加密信息和密钥应替换XML实例中原有明文信息,EncryptedData的Type属性应该存在,且若存在,应为*****/xmlenc#Element。

2.9.1 签名和加密的组合

XML签名和XML加密可以进行组合,当断言同时被签名和加密时,SP应按照签名和加密操作逆序进行签名验证和解密操作:

----当签名的Assertion被加密时,应在加密之前进行签名;

----当BaseID、NameID和Attribute元素被加密时,应首先执行加密操作然后才能对包含加密元素的消息进行签名。

2.10 SAML扩展性

SAML支持多种途径的扩展,包括扩展断言和协议方案。SAML扩展可以与配置文件的定义相结合,从而发展SAML框架的新用途。

2.11 SAML定义标识符

2.11.1 属性名称标识符

包括三种:未指定、URI指针、基本。

2.11.2 名称标识符

包括:未指定、Email地址、X.509主体名称、Windows域保留名称、Kerberos主体名称、实体标识符(是一个长度不超过1024个字符的URI)、持久标识符、临时标识符。

2.11.2.1 持久标识符(persistent)

就是一个IdP对一个SP(或一个SP组合)的持久不透明的标识符。持久名称标识符由身份提供者生成,它应使用随机假名值构成,且相对主体的实际标识符(如用户名)没有任何可识别的对应性。目的是创建一个非公开的假名来防止主体的身份或活动被发现。持久名字标识符值的长度不得超过256字符。

元素的NameQualifier属性值如果存在,则应包含生成此标识符的身份提供者的唯一的标识符。它可以被省略,如果该值可以由包含元素的消息的上下文衍生出来,例如一个协议消息的发布方,或一个在其主体中包含标识符的断言。注意一个不同的系统实体可能于其后发布它自己的协议消息或包含该标识符的断言;在这种情况下NameQualifier属性不需要改变,但是应继续标识原始创建标识符时所标识的实体(并且在这种情况下不得被省略)。

元素的SPNameQualifier属性如果存在,则应包含一个SP(或一个SP组合)的唯一标识符,此持久标识符是为这个SP(或SP组合)生成的。它可以被省略,如果消息中包含的元素的目的只是为了由SP直接使用,则该值是SP的唯一标识符。

如果SP(或SP组合)最近为实体设置了其他标识符,则该标识符应包含在SPProvidedID属性中。

持久标识符的目的是作为一个隐私保护机制,所以除非提供者已经建立了共享标识符,否则他们不得以明文的形式在提供者间共享。

注意当持久标识符用来反映一对提供者间的账户连接关系时,一个服务提供者没有责任来识别或使用持久标识符的长期有效性质,或者建立这样的链接。

最后,注意NameQualifier与SPNameQUalifier属性指明了创建而不是使用的定向性。如果一个持久标识符由一个特定身份提供者创建,NameQualifier属性值在那一刻即永久性建立了。如果一个收到此标识符的服务提供者作为身份提供者发布自己的断言,其中包含了该标识符,NameQualifier属性值不会变化(也不会被省略)。它可以选择创建自身的持久标识符来代表主体并关联两个值。

2.11.2.2 临时标识符(transient)

指示元素内容是一个有临时语义的标识符,应该被SP作为一个不透明的临时值来处理。临时标识符值应依据SAML标识符的规则生成,且不得超过256字符长度。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,772评论 6 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,458评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,610评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,640评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,657评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,590评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,962评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,631评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,870评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,611评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,704评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,386评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,969评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,944评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,179评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,742评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,440评论 2 342

推荐阅读更多精彩内容

  • 1. SAML断言 断言是一个包含零个或更多个由SAML权威做出的声明的信息包。 SAML断言通常与由 元素表示的...
    WebSSO阅读 1,391评论 0 1
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,590评论 18 139
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,562评论 18 399
  • 前文OpenSAML 使用引导 II : Service Provider 的实现之AuthnRequest介绍从...
    登高且赋阅读 10,034评论 8 9
  • 文/阿屎阿屎 阳光下有一张灿烂的笑脸 叽叽喳喳嘻嘻哈哈 喜欢热闹害怕孤寂 那是我 乐观不哭爱说爱笑 不知何时起 我...
    阿屎阿屎阅读 308评论 4 5