﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>C++博客-WALL E-文章分类-网络技术</title><link>http://www.cppblog.com/wall-e/category/16691.html</link><description>Still water run deep...</description><language>zh-cn</language><lastBuildDate>Sat, 23 Apr 2011 16:19:07 GMT</lastBuildDate><pubDate>Sat, 23 Apr 2011 16:19:07 GMT</pubDate><ttl>60</ttl><item><title>OAUTH（摘自wikipedia）</title><link>http://www.cppblog.com/wall-e/articles/144881.html</link><dc:creator>-叶子-</dc:creator><author>-叶子-</author><pubDate>Sat, 23 Apr 2011 15:46:00 GMT</pubDate><guid>http://www.cppblog.com/wall-e/articles/144881.html</guid><wfw:comment>http://www.cppblog.com/wall-e/comments/144881.html</wfw:comment><comments>http://www.cppblog.com/wall-e/articles/144881.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/wall-e/comments/commentRss/144881.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/wall-e/services/trackbacks/144881.html</trackback:ping><description><![CDATA[OAuth<!-- /firstHeading --><!-- bodyContent -->
<div id=bodyContent><!-- tagline -->
<div id=siteSub><a class=image title=OAuth的标志 href="http://zh.wikipedia.org/wiki/File:Oauth_logo.svg"><font color=#0645ad><img alt=OAuth的标志 src="http://upload.wikimedia.org/wikipedia/commons/thumb/d/d2/Oauth_logo.svg/180px-Oauth_logo.svg.png" width=180 height=181></font></a></div>
<p><strong>OAuth</strong>（开放授权）是一个<a class=new title=开放标准 href="http://zh.wikipedia.org/w/index.php?title=%E5%BC%80%E6%94%BE%E6%A0%87%E5%87%86&amp;action=edit&amp;redlink=1"><font color=#ba0000>开放标准</font></a>，允许用户让第三方网站访问该用户在某一网站上存储的私密的资源（如照片，视频，联系人列表），而无需将用户名和密码提供给第三方网站。</p>
<p>OAuth允许用户提供一个令牌，而不是用户名和密码来访问他们存放在特定服务提供者的数据。每一个令牌授权一个特定的网站（例如，视频编辑网站)在特定的时段（例如，接下来的2小时内）内访问特定的资源（例如仅仅是某一相册中的视频）。这样，OAuth允许用户授权第三方网站访问他们存储在另外的服务提供者上的信息，而不需要分享他们的访问许可或他们数据的所有内容。</p>
<p>OAuth是<a href="http://zh.wikipedia.org/wiki/OpenID"><font color=#0645ad>OpenID</font></a>的一个补充，但是完全不同的服务。</p>
<table id=toc class=toc>
    <tbody>
        <tr>
            <td>
            <div id=toctitle>
            <h2>目录</h2>
            </div>
            <ul>
                <li class="toclevel-1 tocsection-1"><a href="http://zh.wikipedia.org/wiki/OAuth#.E8.AE.A4.E8.AF.81.E5.92.8C.E6.8E.88.E6.9D.83.E8.BF.87.E7.A8.8B"><font color=#0645ad><span class=tocnumber>1</span> <span class=toctext>认证和授权过程</span></font></a>
                <li class="toclevel-1 tocsection-2"><a href="http://zh.wikipedia.org/wiki/OAuth#.E5.8E.86.E5.8F.B2"><font color=#0645ad><span class=tocnumber>2</span> <span class=toctext>历史</span></font></a>
                <li class="toclevel-1 tocsection-3"><a href="http://zh.wikipedia.org/wiki/OAuth#OAuth_2.0"><font color=#0645ad><span class=tocnumber>3</span> <span class=toctext>OAuth 2.0</span></font></a>
                <li class="toclevel-1 tocsection-4"><a href="http://zh.wikipedia.org/wiki/OAuth#.E5.AE.89.E5.85.A8"><font color=#0645ad><span class=tocnumber>4</span> <span class=toctext>安全</span></font></a>
                <li class="toclevel-1 tocsection-5"><a href="http://zh.wikipedia.org/wiki/OAuth#.E5.8F.82.E8.A7.81"><font color=#0645ad><span class=tocnumber>5</span> <span class=toctext>参见</span></font></a>
                <li class="toclevel-1 tocsection-6"><a href="http://zh.wikipedia.org/wiki/OAuth#.E5.8F.82.E8.80.83.E6.96.87.E7.8C.AE"><font color=#0645ad><span class=tocnumber>6</span> <span class=toctext>参考文献</span></font></a>
                <li class="toclevel-1 tocsection-7"><a href="http://zh.wikipedia.org/wiki/OAuth#.E5.A4.96.E9.83.A8.E9.93.BE.E6.8E.A5"><font color=#0645ad><span class=tocnumber>7</span> <span class=toctext>外部链接</span></font></a> </li>
            </ul>
            </td>
        </tr>
    </tbody>
</table>
<h2><span id=.E8.AE.A4.E8.AF.81.E5.92.8C.E6.8E.88.E6.9D.83.E8.BF.87.E7.A8.8B class=mw-headline>认证和授权过程</span></h2>
<p>在认证和授权的过程中涉及的三方包括：</p>
<ul>
    <li><strong>服务提供方</strong>，用户使用服务提供方来存储受保护的资源，如照片，视频，联系人列表。
    <li><strong>用户</strong>，存放在服务提供方的受保护的资源的拥有者。
    <li><strong>客户端</strong>，要访问服务提供方资源的第三方应用，通常是网站，如提供照片打印服务的网站。在认证过程之前，客户端要向服务提供者申请客户端标识。 </li>
</ul>
<p>使用OAuth进行认证和授权的过程如下所示:</p>
<ol>
    <li><strong>用户</strong>访问<strong>客户端</strong>的网站，想操作用户存放在<strong>服务提供方</strong>的资源。
    <li><strong>客户端</strong>向<strong>服务提供方</strong>请求一个临时令牌。
    <li><strong>服务提供方</strong>验证<strong>客户端</strong>的身份后，授予一个临时令牌。
    <li><strong>客户端</strong>获得临时令牌后，将用户引导至<strong>服务提供方</strong>的授权页面请求用户授权。在这个过程中将临时令牌和客户端的回调连接发送给<strong>服务提供方</strong>。
    <li><strong>用户</strong>在<strong>服务提供方</strong>的网页上输入用户名和密码，然后授权该<strong>客户端</strong>访问所请求的资源。
    <li>授权成功后，<strong>服务提供方</strong>引导<strong>用户</strong>返回<strong>客户端</strong>的网页。
    <li><strong>客户端</strong>根据临时令牌从<strong>服务提供方</strong>那里获取访问令牌。
    <li><strong>服务提供方</strong>根据临时令牌和<strong>用户</strong>的授权情况授予<strong>客户端</strong>访问令牌。
    <li><strong>客户端</strong>使用获取的访问令牌访问存放在<strong>服务提供方</strong>上的受保护的资源。 </li>
</ol>
<h2><span id=.E5.8E.86.E5.8F.B2 class=mw-headline>历史</span></h2>
<p>OAuth开始于<a href="http://zh.wikipedia.org/wiki/2006%E5%B9%B4"><font color=#0645ad>2006年</font></a>11月,当时<a class=new title=布莱恩&#183;库克 href="http://zh.wikipedia.org/w/index.php?title=%E5%B8%83%E8%8E%B1%E6%81%A9%C2%B7%E5%BA%93%E5%85%8B&amp;action=edit&amp;redlink=1"><font color=#ba0000>布莱恩&#183;库克</font></a>（<a class=extiw title="en:Blaine Cook (programmer)" href="http://en.wikipedia.org/wiki/Blaine_Cook_(programmer)"><font color=#3366bb>Blaine Cook</font></a>）正在开发<a href="http://zh.wikipedia.org/wiki/Twitter"><font color=#0645ad>Twitter</font></a>的<a href="http://zh.wikipedia.org/wiki/OpenID"><font color=#0645ad>OpenID</font></a>实现。与此同时，<a class=new title=Ma.gnolia href="http://zh.wikipedia.org/w/index.php?title=Ma.gnolia&amp;action=edit&amp;redlink=1"><font color=#ba0000>Ma.gnolia</font></a>需要一个解决方案允许使用OpenID的成员授权<a href="http://zh.wikipedia.org/wiki/Dashboard"><font color=#0645ad>Dashboard</font></a>访问他们的服务。这样库克、<a class=new title=克里斯&#183;梅西纳 href="http://zh.wikipedia.org/w/index.php?title=%E5%85%8B%E9%87%8C%E6%96%AF%C2%B7%E6%A2%85%E8%A5%BF%E7%BA%B3&amp;action=edit&amp;redlink=1"><font color=#ba0000>克里斯&#183;梅西纳</font></a>（<a class=extiw title="en:Chris Messina (open source advocate)" href="http://en.wikipedia.org/wiki/Chris_Messina_(open_source_advocate)"><font color=#3366bb>Chris Messina</font></a>）和来自Ma.gnolia的<a class=new title=拉里&#183;哈尔夫 href="http://zh.wikipedia.org/w/index.php?title=%E6%8B%89%E9%87%8C%C2%B7%E5%93%88%E5%B0%94%E5%A4%AB&amp;action=edit&amp;redlink=1"><font color=#ba0000>拉里&#183;哈尔夫</font></a>（Larry Halff）与<a class=new title=戴维&#183;雷科尔顿 href="http://zh.wikipedia.org/w/index.php?title=%E6%88%B4%E7%BB%B4%C2%B7%E9%9B%B7%E7%A7%91%E5%B0%94%E9%A1%BF&amp;action=edit&amp;redlink=1"><font color=#ba0000>戴维&#183;雷科尔顿</font></a>（David Recordon）会面讨论在Twitter和Ma.gnolia API上使用OpenID进行委托授权。 他们讨论得出没有<a class=new title=开发标准 href="http://zh.wikipedia.org/w/index.php?title=%E5%BC%80%E5%8F%91%E6%A0%87%E5%87%86&amp;action=edit&amp;redlink=1"><font color=#ba0000>开发标准</font></a>完成API访问的委托。</p>
<p><a href="http://zh.wikipedia.org/wiki/2007%E5%B9%B4"><font color=#0645ad>2007年</font></a>4月，成立了OAuth<a class=mw-redirect title=讨论组 href="http://zh.wikipedia.org/wiki/%E8%AE%A8%E8%AE%BA%E7%BB%84"><font color=#0645ad>讨论组</font></a>，这个由实现者组成的小组撰写了一个开放协议的提议草案。来自<a href="http://zh.wikipedia.org/wiki/Google"><font color=#0645ad>Google</font></a>的<a class=new title=德维特&#183;克林顿 href="http://zh.wikipedia.org/w/index.php?title=%E5%BE%B7%E7%BB%B4%E7%89%B9%C2%B7%E5%85%8B%E6%9E%97%E9%A1%BF&amp;action=edit&amp;redlink=1"><font color=#ba0000>德维特&#183;克林顿</font></a>（DeWitt Clinton）获悉OAuth项目后，表示他有兴趣支持这个工作。<a href="http://zh.wikipedia.org/wiki/2007%E5%B9%B4"><font color=#0645ad>2007年</font></a>7月，团队起草了最初的规范。随后，<a class=new title="Eran Hammer-Lahav" href="http://zh.wikipedia.org/w/index.php?title=Eran_Hammer-Lahav&amp;action=edit&amp;redlink=1"><font color=#ba0000>Eran Hammer-Lahav</font></a>加入团队并协调了许多OAuth的稿件，创建了更为正式的规范。<a href="http://zh.wikipedia.org/wiki/2007%E5%B9%B4"><font color=#0645ad>2007年</font></a><a href="http://zh.wikipedia.org/wiki/10%E6%9C%883%E6%97%A5"><font color=#0645ad>10月3日</font></a>, OAuth核心 1.0最后的草案发布了。</p>
<p><a href="http://zh.wikipedia.org/wiki/2008%E5%B9%B4"><font color=#0645ad>2008年</font></a>11月，在<a href="http://zh.wikipedia.org/wiki/%E6%98%8E%E5%B0%BC%E9%98%BF%E6%B3%A2%E5%88%A9%E6%96%AF"><font color=#0645ad>明尼阿波利斯</font></a>举行的<a href="http://zh.wikipedia.org/wiki/%E4%BA%92%E8%81%94%E7%BD%91%E5%B7%A5%E7%A8%8B%E4%BB%BB%E5%8A%A1%E7%BB%84"><font color=#0645ad>互联网工程任务组</font></a>第73次会议上， 举行了OAuth的BoF<sup id=cite_ref-0 class=reference><a href="http://zh.wikipedia.org/wiki/OAuth#cite_note-0"><font color=#0645ad size=2>[1]</font></a></sup>讨论将该协议纳入IETF做进一步的规范化工作。 这个会议参加的人很多，关于正式地授权在IETF设立一个OAuth工作组这一议题得到了广泛的支持。</p>
<p><a href="http://zh.wikipedia.org/wiki/2010%E5%B9%B4"><font color=#0645ad>2010年</font></a>4月，OAuth 1.0协议发表为<a class="external mw-magiclink-rfc" href="http://tools.ietf.org/html/rfc5849"><font color=#3366bb>RFC 5849</font></a>，一个非正式<a href="http://zh.wikipedia.org/wiki/RFC"><font color=#0645ad>RFC</font></a>。</p>
<h2><span id=OAuth_2.0 class=mw-headline>OAuth 2.0</span></h2>
<p>OAuth 2.0是OAuth协议的下一版本，但不向后兼容OAuth 1.0。 OAuth 2.0关注客户端开发者的简易性，同时为Web应用，桌面应用和手机，和起居室设备提供专门的认证流程。规范还在IETF OAuth工作组的开发中<sup id=cite_ref-1 class=reference><a href="http://zh.wikipedia.org/wiki/OAuth#cite_note-1"><font color=#0645ad size=2>[2]</font></a></sup> ，按照<a class=new title="Eran Hammer-Lahav" href="http://zh.wikipedia.org/w/index.php?title=Eran_Hammer-Lahav&amp;action=edit&amp;redlink=1"><font color=#ba0000>Eran Hammer-Lahav</font></a>的说法，OAuth将于2010年末完成<sup id=cite_ref-2 class=reference><a href="http://zh.wikipedia.org/wiki/OAuth#cite_note-2"><font color=#0645ad size=2>[3]</font></a></sup>。</p>
<p><a href="http://zh.wikipedia.org/wiki/Facebook"><font color=#0645ad>Facebook</font></a>的新的Graph API只支持OAuth 2.0<sup id=cite_ref-3 class=reference><a href="http://zh.wikipedia.org/wiki/OAuth#cite_note-3"><font color=#0645ad size=2>[4]</font></a></sup>，Google在<a href="http://zh.wikipedia.org/wiki/2011%E5%B9%B43%E6%9C%88"><font color=#0645ad>2011年3月</font></a>亦宣布Google API对OAuth 2.0的支援<sup id=cite_ref-4 class=reference><a href="http://zh.wikipedia.org/wiki/OAuth#cite_note-4"><font color=#0645ad size=2>[5]</font></a></sup>。</p>
<h2><span id=.E5.AE.89.E5.85.A8 class=mw-headline>安全</span></h2>
<p>2009年4月23日，OAuth宣告了一个1.0协议的安全漏洞。该漏洞影响了OAuth 1.0核心规范第6节的OAuth的认证流程（也称作3阶段OAuth） <sup id=cite_ref-5 class=reference><a href="http://zh.wikipedia.org/wiki/OAuth#cite_note-5"><font color=#0645ad size=2>[6]</font></a></sup> 于是，发布了OAuth Core协议1.0a版本来解决这一问题。<sup id=cite_ref-6 class=reference><a href="http://zh.wikipedia.org/wiki/OAuth#cite_note-6"><font color=#0645ad size=2>[7]</font></a></sup></p>
<h2><span id=.E5.8F.82.E8.A7.81 class=mw-headline>参见</span></h2>
<ul>
    <li><a href="http://zh.wikipedia.org/wiki/OpenID"><font color=#0645ad>OpenID</font></a>
    <li><a class=new title=DataPortability href="http://zh.wikipedia.org/w/index.php?title=DataPortability&amp;action=edit&amp;redlink=1"><font color=#ba0000>DataPortability</font></a> </li>
</ul>
<h2><span id=.E5.8F.82.E8.80.83.E6.96.87.E7.8C.AE class=mw-headline>参考文献</span></h2>
<div style="-moz-column-count: 2; column-count: 2; -webkit-column-count: 2" class="references-small references-column-count references-column-count-2">
<ol class=references>
    <li id=cite_note-0><strong><a href="http://zh.wikipedia.org/wiki/OAuth#cite_ref-0"><font color=#0645ad>^</font></a></strong> Birds of a Feather，意味起始会议
    <li id=cite_note-1><strong><a href="http://zh.wikipedia.org/wiki/OAuth#cite_ref-1"><font color=#0645ad>^</font></a></strong> <a class="external free" href="http://tools.ietf.org/html/draft-ietf-oauth-v2" rel=nofollow><font color=#3366bb>http://tools.ietf.org/html/draft-ietf-oauth-v2</font></a>
    <li id=cite_note-2><strong><a href="http://zh.wikipedia.org/wiki/OAuth#cite_ref-2"><font color=#0645ad>^</font></a></strong> <a class="external free" href="http://hueniverse.com/2010/05/introducing-oauth-2-0/" rel=nofollow><font color=#3366bb>http://hueniverse.com/2010/05/introducing-oauth-2-0/</font></a>
    <li id=cite_note-3><strong><a href="http://zh.wikipedia.org/wiki/OAuth#cite_ref-3"><font color=#0645ad>^</font></a></strong> <a class="external free" href="http://developers.facebook.com/docs/authentication/" rel=nofollow><font color=#3366bb>http://developers.facebook.com/docs/authentication/</font></a>
    <li id=cite_note-4><strong><a href="http://zh.wikipedia.org/wiki/OAuth#cite_ref-4"><font color=#0645ad>^</font></a></strong> <a class="external text" href="http://googlecode.blogspot.com/2011/03/making-auth-easier-oauth-20-for-google.html" rel=nofollow><font color=#3366bb>Making auth easier: OAuth 2.0 for Google APIs</font></a>
    <li id=cite_note-5><strong><a href="http://zh.wikipedia.org/wiki/OAuth#cite_ref-5"><font color=#0645ad>^</font></a></strong> <span class="citation web"><a class="external text" href="http://oauth.net/advisories/2009-1" rel=nofollow><font color=#3366bb>OAuth Security Advisory: 2009.1</font></a>. 2009-04-23 <span class=reference-accessdate>[2009-04-23]</span>.</span><span class=Z3988 title=ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&amp;rft.genre=bookitem&amp;rft.btitle=OAuth+Security+Advisory%3A+2009.1&amp;rft.atitle=&amp;rft.date=2009-04-23&amp;rft_id=http%3A%2F%2Foauth.net%2Fadvisories%2F2009-1&amp;rfr_id=info:sid/zh.wikipedia.org:OAuth><span style="DISPLAY: none"> </span></span>
    <li id=cite_note-6><strong><a href="http://zh.wikipedia.org/wiki/OAuth#cite_ref-6"><font color=#0645ad>^</font></a></strong> <a class="external free" href="http://oauth.net/core/1.0a" rel=nofollow><font color=#3366bb>http://oauth.net/core/1.0a</font></a> </li>
</ol>
</div>
<h2><span id=.E5.A4.96.E9.83.A8.E9.93.BE.E6.8E.A5 class=mw-headline>外部链接</span></h2>
<ul>
    <li><a class="external text" href="http://oauth.net/" rel=nofollow><font color=#3366bb>OAuth.net</font></a>
    <li><a class="external text" href="https://www.ietf.org/mailman/listinfo/oauth" rel=nofollow><font color=#3366bb>OAuth WG</font></a> at the <a class=mw-redirect title=IETF href="http://zh.wikipedia.org/wiki/IETF"><font color=#0645ad>IETF</font></a>
    <li><a class="external text" href="http://groups.google.com/group/oauth" rel=nofollow><font color=#3366bb>OAuth Code Library Support</font></a> on <a class=mw-redirect title="Google Groups" href="http://zh.wikipedia.org/wiki/Google_Groups"><font color=#0645ad>Google Groups</font></a>
    <li><a class="external text" href="http://hueniverse.com/oauth" rel=nofollow><font color=#3366bb>OAuth Beginner's Guide and Resource Center</font></a> on Hueniverse
    <li><a class="external text" href="http://sites.google.com/site/oauthgoog/" rel=nofollow><font color=#3366bb>Google OAuth &amp; Federated Login Research</font></a>
    <li><a class="external text" href="http://developer.yahoo.com/oauth/guide" rel=nofollow><font color=#3366bb>Yahoo! OAuth Quick Start Guide</font></a>
    <li><a class="external text" href="http://article.yeeyan.org/view/sakinijino/38693" rel=nofollow><font color=#3366bb>OAuth安全忠告</font></a>
    <li><a class="external text" href="http://www.ibm.com/developerworks/cn/java/j-lo-oauth/index.html" rel=nofollow><font color=#3366bb>基于 OAuth 安全协议的 Java 应用编程</font></a>
    <li><a class="external text" href="http://www.rollingcode.org/blog/f/oauth-core-1.0-final-cn.html" rel=nofollow><font color=#3366bb>OAuth Core规范的译文</font></a> </li>
</ul>
</div>
<img src ="http://www.cppblog.com/wall-e/aggbug/144881.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/wall-e/" target="_blank">-叶子-</a> 2011-04-23 23:46 <a href="http://www.cppblog.com/wall-e/articles/144881.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>