OpenID认证协议20中文版教案资料.doc
《OpenID认证协议20中文版教案资料.doc》由会员分享,可在线阅读,更多相关《OpenID认证协议20中文版教案资料.doc(91页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、Good is good, but better carries it.精益求精,善益求善。OpenID认证协议20中文版-OpenIDAuthentication2.0ImplementorsDraft12OpenID认证协议2.0草案12TableofContents1.符号惯例42.术语53.协议概要64.数据格式64.1协议消息64.1.1键-值表单编码64.1.2HTTP编码74.1.3例子74.2整数的表示85.通信类型85.1直接通信85.1.1直接通信请求85.1.2直接通信响应85.1.2.1成功响应95.1.2.1失败响应95.2间接通信95.2.1HTTP重定向95.2.
2、2HTML表单重定向95.2.3间接通信失败响应106.产生签名106.1步骤106.2签名算法107.初始化及自动发现117.1初始化117.2规格化117.3自动发现117.3.1自动发现的信息117.3.2基于XRDS的自动发现127.3.2.1OpenID服务条目127.3.3基于HTML的自动发现138.创建Association138.1Association会话请求148.1.1通用请求参数148.1.2Diffie-Hellman请求参数148.2Association会话响应148.2.1通用响应参数158.2.2非加密响应参数158.2.3Diffie-Hellman响应参
3、数158.2.4不成功响应参数158.3Association类型168.3.1HMAC-SHA1168.3.2HMAC-SHA256168.4Association会话类型168.4.1No-EncryptionAssociation会话168.4.2Diffie-HellmanAssociation会话169.请求认证179.1请求参数179.2Realms189.2.1域189.2.2使用域对返回URL确认199.3即时请求(ImmediateRequests)1910.响应认证请求2010.1肯定断言2010.2否定断言2210.2.1响应即时请求2210.2.2响应非即时请求2211
4、.验证断言2311.1验证返回URL2311.2验证发现的信息2311.3检查随机序列2411.4验证签名2511.4.1利用Association验证2511.4.2同OP直接验证2511.5标识用户2611.5.1标识回收2611.5.2HTTP和HTTPSURL标识2612.扩展2713.RP发现2814.与OpenID认证协议1.1版本兼容性2914.1自1.1版变更2914.1.1初始化与发现过程的更新2914.1.2安全改进2914.1.3扩展3014.2实现与1.1版兼容3014.2.1依赖方(RelyingParty)3014.2.2OpenID提供方(OpenIDProvid
5、ers)3115.安全考虑3215.1预防攻击3215.1.1窃听攻击(EavesdroppingAttacks)3215.1.2中间人攻击(Man-in-the-MiddleAttacks)3215.2用户代理3315.3用户界面考虑3315.4HTTP和HTTPSURL标识3415.5拒绝服务攻击3415.6协议变量34附录A.示例35附录A.1规范化35附录A.2OP-Local标识36附录A.3XRDS36附录A.4HTML标识记号36附录A.5XRICanonicalID37附录B.Diffie-Hellman密匙交换默认值37AppendixC.Acknowledgements37
6、16.NormativeReferences38对照词汇表英文中文MUST必须MUSTNOT必须不REQUIRED需要的SHALL应该SHALLNOT不应该SHOULD应该SHOULDNOT不应该RECOMMENDED推荐MAY可以OPTIONAL可选的Identifier标识User-AgentUARelyingPartyRPOpenIDProviderOPOPEndpointURLOP终点URL地址OPIdentifierOP标识User-SuppliedIdentifierUser-Supplied标识ClaimedIdentifierClaimed标识OP-LocalIdentifie
7、rOP-Local标识element条目tag标签Non-normative非正式example示例section节parameter参数assertiion断言user,enduesr用户associationassociationassociationsessionassociation会话associationsessiontypeassociation会话类型nonce随机序列realm域form表单request请求response响应Key-Value键-值Name-Value名-值message消息information信息MessageAuthenticationCodeMAC
8、context上下文normalization规格化sharedsecret共享密匙note注意stateless无状态initiation初始化discovery自动发现field字段文档历史版本日期撰写人备注0.12007-09-18XuxiChenxchenttg.ccZheZhangzzhangttg.ccSichuanLislittg.ccDennyWangdwangttg.cc内容合并,初步校对0.22007-09-19DennyWangdwangttg.cc复查至第8章0.32007-09-20ZheZhangzzhangttg.cc复查9-16章,并调整格式0.42007-09
9、-21DennyWangdwangttg.cc复查全文0.52007-9-22ZheZhangzzhangttg.cc修改9-12章部分翻译1.符号惯例本文档中的下面这些关键字在RFC2119(Bradner,B.,“KeywordsforuseinRFCstoIndicateRequirementLevels,”.)标准中都有描述。MUST必须MUSTNOT必须不REQUIRED需要的SHALL应该SHALLNOT不应该SHOULD应该SHOULDNOT不应该RECOMMENDED推荐MAY可以OPTIONAL可选的在文档中,有些值是用引号引起来的,用来精确表示,在实际的协议消息中必须不用引
10、号。2.术语Identifier标识标识为HTTP或HTTPS形式的URI(本文中一般地指URL)或XRI(eXtensibleResourceIdentifier)(可扩展的资源标识符,是一套与URI兼容的抽象标识符体系)。本文有不同类型的标识,是考虑不同的环境情景设计。User-Agent用户代理(简写为UA)一般为用户的浏览器,要实现HTTP/1.1RFC2616协议。RelyingParty依赖方(简写为RP)是一个WEB应用程序,它需要证实某用户确拥有一个标识。OpenIDProviderOpenId提供方(简写为OP)是一个提供验证OpenID标识的服务器,它能为RP提供断言,证实
11、用户拥有某个标识。OPEndpointURLOpenId提供方(OP)终点URL是一个用来接收OpenID认证请求的URL,它是通过用户提供的标识而找到的,这个URL必须是绝对地址。OPIdentifierOpenId提供方标识是一个OpenIDProvider的标识。User-SuppliedIdentifierUser-Supplied标识是用户出示给RP的标识,或者是用户在OP那里选择的标识,用户可以敲入自己的标识也可以敲入OP标识,如果是OP标识,那OP要让用户选择一个标识给RP。ClaimedIdentifierClaimed标识是一个标识,用户声明自己拥有,本协议的目标就是查证他真
12、的拥有该标识。这个标识可以是:如果是一个URL,是一个规格化后的User-Supplied标识。如果是一个XRI,则是一个CanonicalID。OP-LocalIdentifierOP-Local标识为用户提供的替代标识,定位到某一个OP,并不是由用户控制的。3.协议概要1. 用户通过UA(用户代理,通常为浏览器)向RP(依赖方)提供一个User-Supplied标识,初始化认证过程。2. 在规格化User-Supplied标识之后,RP执行自动发现来获取认证所需的OP终点URL地址。需要注意的是用户提供的标识也可以是OP标识(将在7.3.1节中讨论),这允许用户在OP上选择一个Claime
13、d标识,或者如果通过其它的一些扩展将容许没有Claimed标识。3. (可选的)在RP和OP之间建立一个association通过Diffie-HellmanRFC2631密钥交换协议协商共享密钥。OP用association对消息签名,同时RP验证这些消息。这就可省略在每次请求/响应后续验证签名的直接请求。4. RP让用户的浏览器重定向到OP,并带上认证请求参数。5. OP确定这个用户是否有权并且愿意接受OpenID认证。至于用户如何鉴别OP和其它的鉴别策略不是这个文档讲的范围。6. OP让用户的浏览器重定向返回RP,参数中指明Authentication是认证通过还是认证失败。7. RP校
14、验从OP收到的信息。检查ReturnURL,验证自动发现信息,检查nonce(随机序列),并用asscociation验证签名或发一个直接请求来验证。4.数据格式4.1协议消息OpenIDAuthentication(OpenID认证)协议消息全部是映射为文本的键值形式,这些键值允许是Unicode字符集(UCS),当它们转换成字节的时候,必须按照UTF-8形式编码RFC3629。消息必须不能有同名的参数。在这篇文档中,所有的OpenID消息都是必须的,除非特别申明为可选的。4.1.1键-值表单编码键-值表单组成的消息是由一系列的行组成,每行开始是一个键名,后跟一个冒号,然后是该参数的值,结束
15、于一个换行符(”n”,UCS代码是10)。参数名和值都必须不包含换行符,参数名也必须不包含冒号。额外的字符,包括空白符,必须不出现在冒号前后或换行符的前后。消息必须编码成UTF-8形式的字节串。键-值表单编码会用于签名计算和给RP的直接响应中。4.1.2HTTP编码发送给HTTP服务器的消息,必须用规范HTML401中第17.13.4节的规格编码。如果“Content-Type”包含在请求头(RequestHeader)中,那么的报文体也必须这样编码。所有的请求消息的名都必须以“openid.”作前缀。这样可防止与认证消息中的其它参数冲突。当消息以“POST”方式发送时,OpenID参数必须只
16、在Post报文体中。所有的消息请求(Get或Post)都必须包含下面的这些字段:l openid.ns值:”对于一个OpenID认证2.0版的请求,该值必须在请求中存在。将来的版本可能会定义其它的值来标识它的请求。如果这个值被省略或是l opened.mode值:参照消息类型的不同而不同。参数openid.mode让消息接受者知道被处理的是什么类型的消息。如果没有openid.mode参数,我们应该假设这不是一个OpenID消息。该参数用于通过用户浏览器发送给依赖方RP和供应方OP,也用于从RP发给OP的消息。4.1.3例子非正式下面是要编码的消息:Key|值-+-mode|errorerro
17、r|Thisisanexamplemessage用键值表单的编码:mode:errorerror:Thisisanexamplemessage用x-www-urlencoded形式,也就是在HTTPPOST体中或URL地址的查询串中(RFC3986第3节):openid.mode=error&openid.error=This%20is%20an%20example%20message4.2整数的表示任意精度的整数必须被表示为big-endian的补码(btwoc),Base64编码。换句话说,btwoc是一个函数,输入bigint并返回shortestbig-endian补码。所有用于Dif
18、fie-Hellman密钥交换的整数皆为正数。这意味着双字节的最左边位必须为零,如果不是,程序必须在这个串的前面加零。非正式例子:10进制数|btwoc字符串表示-+-0|x00127|x7F128|x00x80255|x00xFF32768|x00x80x005.通信类型5.1直接通信直接通信由RP初始化,用于向OP终点URL提出申请,主要用于创建Association和验证认证断言。5.1.1直接通信请求请求消息必须按照POST方式编码,参见4.1.2节。所有直接通信请求都是HTTPPOST,并且含有4.1.2节列出的所需字段。5.1.2直接通信响应响应的主体由HTTP响应主体,即键-值组
19、成。响应中的content-type应该设为text/plain。所有键-值应该包含如下字段:l ns值:一个有效的OpenID2.0响应必须包含这个特值。因为以后的标准可能为请求定义不同的值,这样设定才能使消息接受方恰当地解释请求消息。如不指定该值或指定为以下两者之一,5.1.2.1成功响应当服务器接收到有效请求时,必须返回HTTP状态码为200的成功响应。5.1.2.1失败响应如果请求消息格式不正确,或者包含无效参数,服务器必须返回HTTP状态码为400的失败响应。响应主体必须包含下列键-值信息:l ns参见5.1.2节。l error值:人可理解的消息,指出错误原因。l contact值
20、:(可选)服务管理员的联系地址。该地址可以以任何形式表达。l reference值:(可选)参考标记,如支持代号或新闻blog的URL链接等。OP可以给响应添加额外字段。5.2间接通信在间接通信中,消息通过UA来传递。RP和OP都可以初始化间接通信。它可用于认证请求和认证响应。该通信方式有两种方法:HTTP重定向和HTML表单提交。两者都要求发送方指定接收方的URL,并且接收方URL可接受间接消息到来,如4.1.2。通信的初始化选择哪种方法接受视能力而定,比如消息大小或者其他外在因素。所有间接消息以HTTP请求形式传送,并且包含4.1.2列出的需要的字段。5.2.1HTTP重定向可以通过对用户
21、UA发出302,303,307HTTP重定向请求,进行数据传输。重定向URL是接收方的URL,并携带OpenID认证信息作为请求参数,如4.1.2指定。5.2.2HTML表单重定向通过返回包含了HTML表单条目的HTML页面给UA,可以传输键-值表。表单提交可以是自动完成的,比如使用JavaScript。条目的action属性值必须是接收方的URL。每个键-值必须包含在表单的条目中。键必须按照name属性编码,值必须以value属性编码,当提交表单时UA会生成如4.1.2指定的信息。表单必须包含提交按钮。5.2.3间接通信失败响应如果请求信息格式不正确或包含无效参数,OP必须重定向UA到ope
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- OpenID 认证 协议 20 中文版 教案 资料
限制150内