天天看點

【rfc6749】機翻 The OAuth 2.0 Authorization Framework

本文禁止轉載

原文位址  http://tools.ietf.org/html/rfc6749

下面内容全部是谷歌娘的翻譯 = = ,寫這個的目的是給自己留個備份,這樣就不用每次打開谷歌娘了。

------------------------- 機翻的分割線 ----------------------------------------

OAuth的2.0授權架構

抽象

   OAuth的2.0授權架構允許第三方

   應用程式擷取有限的通路HTTP服務,無論是在

   代表的資源所有者通過編排準許互動

   資源所有者和HTTP服務之間,或者通過使

   第三方應用程式,以獲得以自己的名義通路。此

   規範取代并淘汰了1.0協定描述的OAuth

   在RFC5849。

本備忘錄狀态

   這是一個網際網路标準跟蹤文檔。

   這份檔案是網際網路工程任務組的産物

   (IETF)。它代表了IETF社會的共識。它有

   接受公衆審查,并已準許釋出的

   網際網路工程指導小組(IESG)。更多相關資訊

   Internet标準是在RFC5741中第2節可用。

   這個文檔的目前狀态資訊,任何勘誤表,

   以及如何提供回報,它可在獲得

   http://www.rfc-editor.org/info/rfc6749。

版權聲明

   版權所有(c)2012 IETF信托認定為人員

   文檔作者。版權所有。

   這份檔案是受BCP78和IETF信托的法律

   與IETF文檔的規定

   (http://trustee.ietf.org/license-info)在之日起施行

   本檔案釋出。請檢視這些檔案

   小心,因為他們描述就您的權利和限制

   本檔案。代碼元件從這個檔案中提取一定

   包括在第4.E描述簡體BSD許可證文本

   提供信托法律規定,不保證

   在簡化的BSD許可證描述。

1.簡介

   在傳統的客戶機 - 伺服器認證模型中,用戶端

   上的請求通路被限制的資源(受保護的資源)

   伺服器通過使用與伺服器進行認證的資源主人的

   憑據。為了提供第三方應用程式通路

   有限資源,資源所有者分享其憑據

   第三方。這就造成一些問題和局限性:

   Ø第三方應用程式都需要存儲資源

      供将來使用所有者的憑證,通常在一個密碼

      明文。

   O伺服器需要支援密碼驗證,盡管

      安全弱點與生俱來的密碼。

   Ø第三方應用程式獲得過寬對資源的通路

      業主的受保護的資源,使資源擁有者沒有任何

      限制持續時間或通路的有限子集的能力

      資源。

   O資源擁有者不能撤銷通路單個第三方

      沒有撤銷通路所有的第三方,且必須這樣做了

      改變第三方的密碼。

在妥協的任何第三方應用效果Ø妥協

      最終使用者的密碼,并全部由該受保護的資料的

      密碼。

   OAuth的通過引入一個授權層解決了這些問題

   并從該資源的分離的用戶端的角色

   所有者。在OAuth的,用戶端請求通路控制的資源

   由資源所有者和托管由資源伺服器,并且是

   發出一組不同的憑證比那些資源的

   所有者。

   而不是使用資源所有者的憑證來通路受保護

   資源,用戶端獲得通路令牌 - 一個字元串表示一個

   具體範圍,壽命和其他通路屬性。通路令牌

   通過授權伺服器與發給第三方用戶端

   審批資源所有者。用戶端使用的通路令牌

   通路由資源伺服器托管的受保護的資源。

   例如,最終使用者(資源所有者)可以授予列印

   存儲在光電服務(用戶端)通路受保護她的照片

   共享服務(資源伺服器),沒有分享她的使用者名和

   密碼與列印服務。相反,她驗證

   直接與由照片共享服務信任的伺服器

   (授權伺服器),其中發出列印服務delegation-

   特定的憑證(通路令牌)。

   該規範是專為使用HTTP([RFC2616])。該

   使用OAuth的超比HTTP以外的任何協定是超出範圍。

   OAuth的1.0協定([RFC5849]),已作為一個資訊

   檔案,是一個小型特設社群努力的結果。此

   标準跟蹤規範建立的OAuth的1.0部署

   經驗,以及額外的用例和可擴充

   要求聚集在更廣泛的IETF社群。 OAuth的2.0

   協定不向下相容的OAuth1.0。兩個版本

   在網絡上可以共存,并實作可以選擇

   同時支援。然而,這是本說明書的意圖

   新的實作支援的OAuth2.0在本規定

   檔案和OAuth的1.0僅用于支援現有

   部署。 OAuth的2.0協定股份很少實施

   與1.0的OAuth協定的細節。實施者熟悉

   OAuth的1.0應該接近這個檔案沒有任何假設為

   它的結構和細節。

1.1。角色

   OAuth的定義四種角色:

   資源擁有者

      能夠準許通路受保護資源的實體。

      當該資源的所有者是一個人,它被稱作為

      最終使用者。

   資源伺服器

      伺服器托管的受保護的資源,能夠接受的

      和響應使用通路令牌保護的資源請求。

   客戶

      使受保護的資源請求代表的應用

      資源所有者和其授權。術語“客戶”呢

      并不意味着任何特定的實作的特性(例如,

      伺服器,桌面,或其它關于是否應用程式執行

      裝置)。

   授權伺服器

      伺服器發出的通路令牌給用戶端成功後

      驗證該資源的所有者,并獲得授權。

   授權伺服器和資源伺服器之間的互動

   超出了本說明書的範圍。授權伺服器

   可以是相同的伺服器資源的伺服器或單獨的實體。

   單個授權伺服器可通過發出接受通路令牌

   多個資源伺服器。

1.2。協定流

     +--------++---------------+

     | | - (A) - 授權申請 - >|資源|

     | | |業主|

     | |< - (B) - 授權格蘭特---| |

     | | +--------+

     | |

     | | - (C) - 授權格蘭特 - >|授權|

     |客戶| |伺服器|

     | |< - (D)-----通路令牌-------| |

     | | - (E)-----通路令牌------>|資源|

     | | |伺服器|

     | |< - (F) - 受保護的資源---| |

                     圖1:摘要協定流

   在圖1中示出的抽象的OAuth2.0流程描述的

   四種角色之間的互相作用,包括以下步驟:

   (A)的用戶端從資源所有者請求授權。該

        授權請求可以直接向資源所有者

        (如圖所示),或優選地通過間接的授權

        伺服器作為中介。

   (二)用戶端收到授權金,這是一種

        憑證代表了資源所有者的授權,

        表達使用在此的4批類型之一定義

        說明書或使用擴充許可類型。該

        授權許可類型取決于所使用的方法

        用戶端請求的授權和由所支援的類型

        授權伺服器。

   (C)用戶端通過與認證請求的通路令牌

        授權伺服器和提出的授權金。

   (D)中的授權伺服器的用戶端,并驗證認證

        授權撥款,如果有效,發出一個通路令牌。

(E)的用戶端請求保護的資源從資源

        伺服器進行身份驗證通過提出通路令牌。

   (F)的資源伺服器驗證的通路令牌,如果有效,

        處理請求。

   優選的方法為用戶端獲得授權許可

   從資源所有者(在工序(A描繪)和(B))是使用

   授權伺服器作為中介,其示出在

   圖3中的第4.1節。

1.3。授權授予

授權授予是代表資源憑證

所有者的授權(通路其受保護的資源)的使用

用戶端獲得一個通路令牌。該規範定義了四種

授予類型 - 授權碼,含蓄,資源所有者的密碼

憑據,和用戶端證書 - 以及一個可擴充

機制來定義其他類型。

1.3.1。授權碼

通過使用授權伺服器獲得授權碼

作為用戶端和資源的所有者之間的中介。而不是

直接從資源所有者請求授權,則用戶端

訓示資源所有者授權伺服器(通過其

如[RFC2616]中定義使用者代理),這反過來又訓示

資源所有者回到與授權碼的用戶端。

前引導資源所有者傳回給用戶端與

授權代碼,授權伺服器認證該

資源所有者成于授權。因為資源所有者

僅驗證與授權伺服器,該資源

老闆的憑據從不與客戶共享。

該授權碼提供了一些重要的安全利益,

如驗證用戶端的能力,以及在

傳輸的接入令牌直接向用戶端,而不

通過資源所有者的使用者代理和潛在的傳遞

其暴露給其他人,包括資源的所有者。

1.3.2。含蓄

隐式基金是一個簡化的授權碼流優化

對于使用腳本語言,例如在浏覽器中實作的用戶端

如JavaScript。在隐式流動,而不是發出所述客戶

授權碼,用戶端直接發出的通路令牌

(作為資源所有者授權的結果)。補助類型

   是隐含的,因為沒有中間憑證(如授權

   代碼)發行(後來用于擷取一個通路令牌)。

   當隐授予流時發出的通路令牌,該

   授權伺服器不驗證用戶端。在一些

   情況下,客戶身份可以通過重定向的URI進行驗證

   用于通路令牌傳遞給用戶端。可通路令牌

   暴露于該資源的所有者或其它的應用程式能夠通路

   資源所有者的使用者代理。

   隐性補助提高一些反應能力和效率

   用戶端(例如實施為在浏覽器應用程式中的用戶端),

   因為它減少,以獲得所需的往返行程的數目

   通路令牌。然而,這種便利性應該對稱重

   使用隐式授予的安全隐患,如

   在第10.3和10.16中描述,尤其是當

   授權碼授予類型可用。

1.3.3。資源所有者密碼憑據

   資源所有者密碼憑據(即使用者名和密碼)

   可直接使用作為授權授予,得到存取

   令牌。當有一個高的憑據,才應使用

   信任的資源所有者和用戶端之間的程度(例如,在

   用戶端裝置的作業系統或高權限的一部分

   應用程式),并且當其它授權授予類型不

   可供選擇的(如一個授權代碼)。

   盡管這筆款項類型要求的直接用戶端通路

   資源所有者憑證,資源所有者憑證使用

   對于單個請求和被交換為通路令牌。此

   授予類型可以無需在用戶端存儲

   資源所有者證書以供将來使用,通過交換

   具有長壽命的通路令牌或憑證重新整理令牌。

1.3.4。用戶端證書

   用戶端證書(或其他形式的用戶端身份驗證)可以

   作為一個授權授予當授權範圍

   在用戶端的控制下,限制在受保護的資源,

   或受保護資源的預先布置成與授權

   伺服器。用戶端憑據作為一個授權授予

   通常當用戶端代理代表自己(用戶端

   還資源所有者)或請求通路受保護的

   基于授權資源預先布置成與

1.4。通路令牌

   通路令牌是用于通路受保護的資源的憑據。一個

   通路令牌是代表發出的授權字元串

   用戶端。字元串通常是不透明的到用戶端。令牌

   代表特定範圍和通路時長,授予

   資源所有者,并強制執行資源伺服器和授權

   伺服器。

   令牌可以表示用于檢索授權的辨別符

   資訊,或可以自包含在一個授權資訊

   可核實的方式(即由一些資料和一個令牌字元串

   簽字)。附加身份驗證憑據,這是超越

   本說明書的範圍中,可能需要為使

   用戶端使用的令牌。

   通路令牌提供了一個抽象層,更換不同

   授權建構體(例如,使用者名和密碼)與單個

   由資源伺服器令牌了解。這種抽象使得

   發出通路令牌比授權授予限制性更強

   用于獲得它們,以及消除資源伺服器的需要

   了解各種各樣的認證方法。

   通路令牌可以具有不同的格式,結構和方法

   使用率(例如,加密屬性)基于所述資源

   伺服器的安全性要求。通路令牌屬性和

   用于通路受保護的資源的方法,超出的範圍

   本說明書和由同伴等規格定義

   如[RFC6750]。

1.5。重新整理令牌

   重新整理令牌來獲得通路令牌的憑據。重新整理

   令牌由授權伺服器向客戶機發出,并且

   用于獲得一個新通路令牌時目前接入令牌

   變得無效或過期,或獲得額外的通路令牌

   具有相同或更窄的範圍(接入令牌可以具有更短的

   使用壽命比授權資源較少的權限

   所有者)。發出重新整理令牌是在可選的自由裁量權

   授權伺服器。如果授權伺服器發出重新整理

   令牌,則發出一個通路令牌(即,步驟(D)中,當包含

   圖1)。

   重新整理令牌是表示要授予權限的字元串

   客戶通過該資源的所有者。該字元串通常是不透明

   用戶端。令牌表示用于檢索的辨別符

授權資訊。不同于通路令牌,令牌重新整理的

   旨在僅與授權伺服器并不會發送

   資源伺服器。

  +--------++---------------+

  | | - (A)-------授權授予--------->| |

  | | | |

  | |< - (B)-----------通路令牌-------------| |

  | |&重新整理令牌| |

  | | +----------+| |

  | | - (C)----通路令牌---->| | | |

  | | | | | |

  | |< - (D) - 受保護的資源 - |資源| |授權|

  |客戶| |伺服器| |伺服器|

  | | - (E)----通路令牌---->| | | |

  | |< - (F) - 無效的令牌錯誤 - | | | |

  | | - (G)-----------重新整理令牌----------->| |

  | |< - (H)-----------通路令牌-------------| |

  +--------+可選重新整理令牌+--------+

               圖2:重新整理過期的通路令牌

   在圖2所示的流程包括以下步驟:

   (A)用戶端通過與認證請求的通路令牌

        授權伺服器和呈現的授權授予。

   (B)中的授權伺服器的用戶端,并驗證認證

        授權授予,如果有效,發出一個通路令牌

        和重新整理令牌。

   (C)的用戶端,使受保護的資源請求到資源

        伺服器出示的通路令牌。

   (D)中的資源伺服器驗證所述接入令牌,并且如果有效,

   (E)的步驟(C)和(D)重複,直到通路令牌到期。如果

        用戶端知道通路令牌過期,它跳過步驟(G);

        否則,它使另一受保護的資源的請求。

   (F)由于通路令牌是無效的,資源伺服器傳回

        一個無效的令牌錯誤。

(G)用戶端通過驗證請求新的通路令牌

        授權伺服器和展示重新整理令牌。該

        用戶端認證要求是基于用戶端類型

        并在授權伺服器政策。

   (H),該授權伺服器的用戶端,并驗證認證

        重新整理令牌,并且如果有效,發出一個新的通路令牌(和,

        任選地,新的重新整理令牌)。

   步驟(C),(D),(E)和(F)是此範圍以外的

   說明書中,如同在第7節中所述。

1.6。 TLS版本

   每當傳輸層安全性(TLS)用于由該

   規範,相應的版本(或版本)TLS會有所不同

   随着時間的推移,基于廣泛部署和已知的安全

   漏洞。在寫這篇文章的時候,TLS1.2版

   [RFC5246]是最新的版本,但是有一個非常有限

   部署基地,可能不是現成的

   實作。 TLS版本1.0[RFC2246]是最廣泛

   部署的版本,并提供最廣泛的互操作性。

   實作也可能支援額外的傳輸層安全性

   滿足他們的安全需求的機制。

1.7。 HTTP重定向

   這說明大量使用HTTP重定向,其中

   在用戶端或授權伺服器訓示資源所有者的

   使用者代理到另一個目的地。雖然在本實施例

   說明書中示出了使用的HTTP 302狀态代碼,任何其他

   經由使用者代理可利用的方法來完成此重定向

   允許和被認為是一個實作細節。

1.8。互通性

   的OAuth2.0提供了豐富的授權架構,明确定義

   安全屬性。然而,作為一個豐富的和高度可擴充的

   架構具有許多任選組分,就其本身而言,本

   規範可能産生廣泛的非互操作

   實作。

   此外,這個規範留下了一些必需的元件

   部分或完全不确定的(如,用戶端注冊,

   授權伺服器的能力,端點發現)。沒有

該規範已經被設計圍繞以下用戶端

   簡介:

   Web應用程式

      一個Web應用程式在網絡上運作的用戶端保密

      伺服器。資源擁有者通過HTML的使用者通路用戶端

      接口中所使用的裝置上的使用者代理呈現

      資源所有者。用戶端憑證,以及任何通路

      向客戶機發出的令牌存儲在web伺服器上,并且

      不暴露于或由該資源的所有者通路。

   使用者代理的應用程式

      使用者代理為基礎的應用程式是一個公共的客戶,其中

      客戶機代碼被從網絡伺服器下載下傳的,并在一個執行

      使用者代理(例如,網絡浏覽器)的裝置上所使用的資源

      所有者。協定資料和憑證都很友善(和

      經常可見的),以在資源所有者。由于這種應用程式

      駐留在使用者代理中,它們可以使無縫使用的

      請求授權時,使用者代理能力。

   本機應用程式

      本機應用程式是一個公共的用戶端安裝和執行上

      所使用的資源的所有者裝置。協定資料和

      憑據通路資源所有者。假定

      這包括在任何用戶端身份驗證憑據

      應用程式可以被提取。另一方面,動态

      頒發證書,如通路令牌或重新整理令牌可以

      得到保護的可接受的水準。至少,這些

      憑據免受惡意伺服器與該

      應用程式可以互動。在某些平台上,這些憑據

      可能被保護駐留在相同的其他應用程式

      裝置。

2.2。用戶端辨別符

   授權伺服器發出的注冊用戶端一個用戶端

   辨別符 - 代表注冊的唯一字元串

   由客戶提供的資訊。用戶端辨別符不是

   秘密的;它暴露于資源所有者和絕不能使用

   單獨的用戶端身份驗證。用戶端辨別符是唯一的

   授權伺服器。

   客戶辨別字元串大小未定義本

   規範。客戶應避免作出有關的假設

   辨別的大小。授權伺服器應記錄尺寸

   任何辨別的IT問題。

2.3。用戶端身份驗證

   如果用戶端類型是保密的,在用戶端和授權

   伺服器建立适合于用戶端身份驗證方法

   授權伺服器的安全要求。授權

   伺服器可以接受任何形式的用戶端身份驗證的滿足其

   安全性要求。

   機密的客戶通常發出的(或建立)一套

   用于與授權認證的用戶端憑證

   伺服器(例如,密碼,公鑰/私鑰對)。

   授權伺服器可以建立一個用戶端身份驗證方法

   公衆客戶。但是,授權伺服器必須不依賴

   關于用于識别的目的,公共客戶機驗證

   用戶端。

   客戶在每個絕不能使用多個身份驗證方法

   請求。

2.3.1。用戶端密碼

   在擁有用戶端密碼,用戶端可以使用HTTP基本

   在[RFC2617]定義的認證方案與認證

   授權伺服器。用戶端辨別符是使用所述經編碼

   “應用程式/ x www的窗體-urlencoded”每個編碼算法

   附錄B,和編碼值被用作使用者名;用戶端

   密碼被使用相同的算法進行編碼,并用作

   密碼。授權伺服器必須支援HTTP基本

   為驗證發出一個用戶端身份驗證方案

   用戶端密碼。

   例如(額外換行符僅供顯示):

     授權:基本czZCaGRSa3F0Mzo3RmpmcDBaQnIxS3REUmJuZlZkbUl3

   此外,授權伺服器可以支援包括

   使用下面的請求體用戶端憑據

   參數:

   CLIENT_ID

         必需的。在發給用戶端的用戶端辨別符

         按2.2節所述的注冊過程。

   client_secret

         必需的。用戶端的秘密。用戶端可以省略

         參數如果用戶端秘密為空字元串。

包括使用兩個在請求體的用戶端憑證

   參數是不推薦的,并應限制客戶無法

   直接利用HTTP基本身份驗證方案(或其他

   基于密碼的HTTP認證方案)。參數隻能

   在請求體發送和不得列入

   請求URI。

   例如,一個請求以重新整理使用通路令牌(第6節)

   車身參數(多餘的換行符用于顯示目的

   隻):

      POST /token HTTP/1.1

     Host: server.example.com

     Content-Type: application/x-www-form-urlencoded

     grant_type=refresh_token&refresh_token=tGzv3JOkF0XG5Qx2TlKWIA

     &client_id=s6BhdRkqt3&client_secret=7Fjfp0ZBr1KtDRbnfVdmIw

   授權伺服器必須要求使用TLS作為中描述

   使用密碼認證發送請求時,第1.6節。

   自該用戶端的認證方法包括密碼,則

   授權伺服器必須保護利用它反對任何端點

   蠻力攻擊。

2.3.2。其他身份驗證方法

   授權伺服器可以支援任何适當的HTTP認證

   計劃比對的安全要求。當使用其它

   身份驗證方法,授權伺服器必須定義

   客戶辨別符(登記備案)之間的映射

   認證方案。

2.4。未登記的客戶

   本規範不排除使用未經注冊的客戶。

   然而,使用這樣的用戶端的是超出了這個範圍

   規範和要求額外的安全性分析和審查

   其互操作性的影響。

3.協定端點

   授權過程利用兩個授權伺服器端點

   (HTTP資源):

   Ø授權端點 - 使用用戶端獲得

      授權,通過使用者代理重定向資源所有者。

   Ø令牌端點 - 用戶端使用交換授權

      授予通路令牌,通常與用戶端身份驗證。

   以及一個用戶端點:

   O重定向端點 - 使用授權伺服器傳回

      通過包含授權證書給用戶端的響應

      資源所有者的user-agent。

   不是每個授權傳遞式利用兩個端點。

   根據需要延長授予的類型也可以定義更多的端點。

3.1。授權端點

   授權端點用于與資源互動

   老闆和獲得授權授予。授權伺服器

   必須先驗證資源所有者的身份。在路上

   該授權伺服器認證資源所有者

   (例如,使用者名和密碼登入,會話cookie),超出了

   本規範的範圍。

   通過該用戶端擷取的所述位置的裝置

   授權端點不屬于本規範的範圍,

   但位置通常提供的服務文檔中。

   端點URI可以包括“應用程式/ x-WWW的形式,進行了urlencoded”

   格式(每附錄B)查詢元件([RFC3986]第3.4節)

   這必須增加額外的查詢參數時被保留。該

   端點URI不能包含一個片段組成部分。

   因為請求的授權端點結果在使用者

   認證和明文憑證的發送(在

   HTTP響應),授權伺服器必須要求使用TLS

   如第1.6節所述的發送請求到時候

   授權端點。

   授權伺服器必須支援使用HTTP的“GET”

   法[RFC2616]的授權端點可以支援

   使用“POST”的方法為好。

沒有值發送參數必須被視為如果他們

   從請求被删去。授權伺服器必須忽略

   無法識别的請求參數。請求和響應參數

   絕不能包含超過一次。

3.1.1。響應類型

   授權端點使用的授權碼授予

   類型和隐式類型授予流動。用戶端通知

   授權伺服器的所需授予類型的使用下

   RESPONSE_TYPE

         必需的。該值必須是“碼”之一的請求

         授權碼所描述的第4.1.1節,“令牌”的

         請求通路令牌(隐含補助金)所描述的

         第4.2.1節,或所描述的注冊推廣價值

         第8.4節。

   擴充響應類型可能包含一個空格分隔(%×20)名單

   值,其中值的順序并不重要(例如,響應

   輸入“A B”的相同“B A”)。這種複合的含義

   響應類型是由它們各自的規格所定義。

   如果授權請求缺少“RESPONSE_TYPE”參數,

   或者,如果響應類型是不了解,授權伺服器

   如第4.1.2.1描述必須傳回一個錯誤響應。

3.1.2。重定向端點

   在完成它的互相作用與資源所有者後,将

   授權伺服器訓示資源所有者的使用者代理回

   用戶端。授權伺服器重定向使用者代理向

   此前既定的用戶端的重定向端點

   授權伺服器在用戶端注冊過程中或當

   使授權請求。

   重定向端點URI必須是絕對URI所定義

   [RFC3986]第4.3節。端點URI可以包括

   “應用程式/ x www的窗體-urlencoded”格式化(按附錄B)查詢

   元件([RFC3986]第3.4節),這必須在添加時必須保留

   額外的查詢參數。端點URI必須不包括

   片段組成部分。

3.1.2.1。端點請求保密

   重定向端點應該要求使用TLS的描述

   在第1.6節時所要求的響應類型是“代碼”或“令牌”,

   或者當重定向請求将導緻的傳輸

   敏感的憑據,在一個開放的網絡。該規範不

   不是因為在寫這篇文章的時候強制使用TLS,

   需要的用戶端部署TLS是一個顯著障礙為許多

   用戶端的開發。如果TLS是不可用,授權伺服器

   應該提醒有關不安全端點資源所有者之前

   授權期間重定向(例如,顯示消息

   要求提供)。

   缺乏傳輸層安全性的可以對造成嚴重影響

   在用戶端的安全性和它被授權的受保護的資源

   通路。使用傳輸層安全性是特别

   臨界當授權過程被用作一種形式的

   由客戶授權終端使用者的認證(例如,第三方

   簽到服務)。

3.1.2.2。注冊要求

   授權伺服器必須需要以下用戶端

   注冊他們的重定向端點:

   澳公共客戶。

   利用隐性授予O型機密的客戶。

   授權伺服器應要求所有客戶登記,

   之前使用的授權端點重定向端點。

   授權伺服器應要求客戶提供

   完整的重定向URI(用戶端可以使用“狀态”的要求

   參數來實作每個請求的定制)。如果要求

   完整的重定向URI的登記是不可能的,該

   授權伺服器應要求URI的登記

   方案,授權和路徑(允許客戶動态變化

   重定向URI的請求時,隻有查詢元件

   授權)。

   授權伺服器可以讓客戶注冊多個

   重定向端點。

   缺乏重定向URI登記要求可以啟用

   攻擊者使用的授權的端點作為一個開放重定向作為

   第10.15描述。

3.1.2.3。動态配置

   如果多個重定向的URI已經登記,如果隻有部分

   重定向的URI已經被注冊,或如果沒有重定向的URI具有

   已經注冊,用戶端必須包括與重定向URI

   使用“redirect_uri”請求參數授權請求。

   當一個重定向的URI被包括在授權請求,則

   授權伺服器必須比較并比對收到的值

   針對所述至少一個已注冊的重定向的URI(或URI

   如[RFC3986]第6定義,如果有的話重定向元件)

   URI的登記。如果用戶端注冊包括全

   重定向URI,授權伺服器必須比較兩個URI

   使用在[RFC3986]第6.2.1節中定義簡單的字元串比較。

3.1.2.4。無效的端點

   如果授權請求驗證失敗因缺少,

   無效,或者不比對的重定向的URI,授權伺服器

   應該告知錯誤的資源所有者,不能

   使用者代理自動重定向到無效的重定向URI。

3.1.2.5。端點内容

   重定向請求到客戶機的端點通常導緻

   一個HTML文檔響應,由使用者代理處理。如果HTML

   響應供應直接作為重定向請求的結果,

   包括HTML檔案将具有完全執行任意腳本

   通路重定向URI和它包含的憑據。

   用戶端應該不包括任何第三方腳本(比如,第三

   方分析,社會插件,廣告網絡)在重定向

   端點響應。相反,它應該提取憑證

   的URI和再次重定向使用者代理到另一端點,而無需

   暴露的憑據(在URI或其他地方)。如果第三方

   包括腳本,客戶必須確定其自身的腳本

   (用于提取和删除的URI的憑據)會

   首先執行。

3.2。令牌端點

   令牌端點所使用的用戶端通過,以獲得通路令牌

   展示其授權許可或重新整理令牌。令牌

   端點使用除了每個授權授予

   隐授予型(因為一個通路令牌直接發放)。

通過該用戶端獲得令牌的位置的裝置

   端點不屬于本規範的範圍,但位置

   通常所提供的服務的文檔中。

   由于在傳輸請求令牌端點結果

   明文憑證(在HTTP請求和響應),則

   1.6節将請求發送到令牌端點時。

   使通路令牌,當用戶端必須使用HTTP“POST”的方法

   沒有值發送參數必須被視為如果他們

3.2.1。用戶端身份驗證

   機密用戶端或其他用戶端發出的用戶端憑據必須

   如上述與授權伺服器認證

   2.3節送出請求到令牌端點時。客戶

   身份驗證用于:

   Ø強制重新整理令牌和授權碼到綁定

      在用戶端,他們發出。用戶端身份驗證是關鍵

      當授權代碼被發送到重定向

      端點通過不安全的通道,或當重定向URI有

      未登記在充分。

   Ø從受損的用戶端通過禁用用戶端或恢複

      改變其憑證,進而防止了攻擊者濫用

      被盜重新整理令牌。改變一組用戶端

      憑據是不是取消了一整套顯著快

      重新整理令牌。

   Ø實施認證管理最佳做法,

      需要定期憑證旋轉。一整組的轉動

      重新整理令牌可以是具有挑戰性,而一個單一的旋轉

      一套用戶端憑據是顯著容易。

客戶可以使用“CLIENT_ID”請求參數來确定自身

   将請求發送到令牌時端點。在

   “authorization_code”“grant_type”請求令牌端點,一個

   未經身份驗證的用戶端必須發送它的“CLIENT_ID”,以防止自己

   無意中接受用于與一用戶端的代碼

   不同的“CLIENT_ID”。這保護了端離的取代

   認證碼。 (它為沒有額外的安全

   受保護的資源。)

3.3。通路令牌範圍

   授權和令牌端點允許客戶指定

   使用“範圍”請求參數的通路請求的範圍。在

   轉,授權伺服器使用“範圍”的響應參數

   通知發出的通路令牌的範圍的用戶端。

   範圍參數的值表示為空間 - 清單

   分隔,區分大小寫字元串。該字元串被定義

   授權伺服器。如果值包含多個空格分隔

   字元串,它們的順序并不重要,而且每串增加了一個

   其他通路範圍所請求的範圍。

     scope       = scope-token *( SP scope-token )

     scope-token = 1*( %x21 / %x23-5B / %x5D-7E )

   授權伺服器可以完全或部分地忽略範圍

   由用戶端請求的,基于所述授權伺服器政策或

   資源所有者的說明。如果發出的通路令牌範圍

   是從所述一個由客戶機,則授權請求不同

   伺服器必須包括“适用範圍”響應參數通知

   的實際範圍的用戶端授權。

   如果請求當用戶端忽略範圍參數

   授權,授權伺服器必須要麼處理

   請求使用預先定義的預設值,或失敗的請求

   訓示無效的範圍。授權伺服器應

   記錄其範圍的要求和預設值(如果定義)。

4.獲得授權

   要請求通路令牌,用戶端從獲得授權

   資源所有者。授權中表達的形式

   授權授予,該用戶端使用請求通路

   令牌。 OAuth的定義了四種類型的授予:授權碼,含蓄,

   資源所有者密碼憑據,用戶端憑據。這也

   提供了用于定義額外授予類型的擴充機制

4.1。授權碼授予

   授權碼傳遞式被用來獲得兩個通路

   令牌和重新整理令牌,并進行了優化,保密的客戶。

   由于這是一個重定向基于流時,用戶端必須能夠

   與資源所有者的使用者代理進行互動(典型的web

   浏覽器)和能夠接收傳入的請求(通過重定向)

   從授權伺服器。

     +----------+

     |資源|

     |業主|

          ^

          |

         (B)

     +----|-----+用戶端辨別符+--------+

     | - +----(A) - 重定向URI---->| |

     |使用者 - | |授權|

     |代理 - +----(B) - 使用者認證--->|伺服器|

     | | | |

     | - +----(C) - 授權碼---<| |

     + - |----| ---++---------------+

       | |^ V

      (A)(C)| |

       | | | |

       ^ V| |

     +---------+| |

     | |>---(D) - 授權碼---------“|

     |客戶|&重定向URI|

     | | |

     | |<---(E)-----通路令牌-------------------“

     +---------+(W /可選重新整理令牌)

   注意:線示出步驟(A),(B)和(C)被分解成

   兩部分,因為他們通過使用者代理。

                     圖3:授權碼流

在圖3中所示的流程包括以下步驟:

   (A)用戶端通過引導資源所有者的啟動流程

        使用者代理到授權端點。該用戶端包括

        它的用戶端辨別符,要求的範圍,地方國有和

        重定向URI到授權伺服器将發送

        使用者代理回來一次授予通路權限(或拒絕)。

   (B)中的授權伺服器經由驗證該資源的所有者(

        使用者代理)并建立是否資源所有者

        授予或拒絕用戶端的通路請求。

   (C)假設資源所有者授予通路權限,授權

        伺服器使用重定向使用者代理傳回給用戶端

        重定向URI前面提供(請求或在

        用戶端注冊)。重定向URI包括

        授權代碼和用戶端提供的任何地方國有

        更早。

   (D)的用戶端請求的通路令牌從授權

        通過包括授權碼伺服器的令牌端點

        在上一步驟接收。送出請求時,所述

        用戶端與授權伺服器進行身份驗證。用戶端

        包括重定向的URI用于獲得授權

        為驗證碼。

   (E)的授權伺服器驗證用戶端,驗證

        授權碼,并且確定了重定向的URI

        收到比對的URI用來重定向用戶端

        步驟(C)。如果有效,授權伺服器傳回響應以

        接入令牌和任選的重新整理令牌。

4.1.1。授權請求

   用戶端通過添加以下構造請求URI

   參數到授權端點URI的查詢元件

   使用“應用程式/ x www的窗體-urlencoded”的格式,按附錄B:

         必需的。值必須設定為“代碼”。

         必需的。如2.2節所述的用戶端辨別符。

   redirect_uri

         可選。由于第3.1.2節。

範圍

         可選。接入請求的範圍所描述的

         第3.3節。

   狀态

         推薦使用。用戶端使用一個不透明的值維持

         請求和回調的狀态。授權

         重定向回使用者代理伺服器時,包括此值

         到用戶端。參數應該用于預防

         跨站點請求僞造在第10.12節描述。

   資源所有者的構造URI使用用戶端訓示

   HTTP重定向的響應,或者通過經由提供給它的其他裝置

   使用者代理。

   例如,用戶端會訓示使用者代理進行以下

   使用TLS(帶額外的行HTTP請求,打破了顯示器用途

    GET /authorize?response_type=code&client_id=s6BhdRkqt3&state=xyz

        &redirect_uri=https%3A%2F%2Fclient%2Eexample%2Ecom%2Fcb HTTP/1.1

    Host: server.example.com

   授權伺服器驗證請求,以確定所有

   必需的參數是存在并有效。如果該請求是有效的,

   授權伺服器認證資源所有者成于

   授權決定(通過詢問資源所有者或

   建立通過其它方式準許)。

   當判定成立時,授權伺服器訓示

   使用HTTP使用者代理所提供的用戶端重定向URI

   重定向響應,或者通過經由提供給它的其他裝置

4.1.2。授權響應

   如果資源所有者授予的通路請求時,授權

   伺服器發出一個授權代碼和它由傳送到用戶端

   加入以下參數的查詢部件

   重定向URI使用“應用程式/ x www的窗體-urlencoded”的格式,

   按附錄B:

   代碼

         必需的。由生成的授權碼

         授權伺服器。授權代碼必須到期

         它發出後不久,以減輕洩漏的風險。一

         10分鐘最大的授權碼壽命

         推薦使用。客戶不得使用授權碼

不止一次。如果授權碼用于多

         一次,授權伺服器必須拒絕該請求,并應

         撤銷(如果可能)的所有令牌以前釋出的基礎上

         該授權碼。該授權碼勢必

         用戶端辨別符和重定向URI。

         必選如果“狀态”參數存在于用戶端

         授權請求。從接收到的精确值

         用戶端。

   例如,授權伺服器重定向使用者代理通過

   發送以下HTTP響應:

      HTTP/1.1 302 Found

     Location: https://client.example.com/cb?code=SplxlOBeZQQYbYS6WxSbIA

               &state=xyz

   用戶端必須忽略無法識别的響應參數。該

   授權碼字元串大小是左未定義本

   規範。客戶應避免對代碼的假設

   值的大小。授權伺服器應記錄的大小

   任何值IT問題。

4.1.2.1。錯誤響應

   如果請求失敗,原因是缺少的,無效的,或者不比對

   重定向的URI,或者如果用戶端辨別符丢失或無效,

   授權伺服器應該通知的資源所有者

   錯誤,必須不自動重定向使用者代理到

   無效的重定向URI。

   如果資源所有者拒絕通路請求,或者如果請求

   失敗的原因不是丢失或無效的重定向URI等,

   授權伺服器通過将下面的通知用戶端

   使用參數來重定向URI的查詢元件

   “應用程式/ x www的窗體-urlencoded”的格式,按附錄B:

   錯誤

         必需的。從一個單一的ASCII[USASCII]錯誤代碼

         如下:

         INVALID_REQUEST

               該請求缺少必需的參數,包括

               無效的參數值,包括參數超過

               一次,或者說是不正常的。

unauthorized_client

               用戶端未被授權以請求授權

               代碼中使用這種方法。

         拒絕通路

               資源所有者或授權伺服器拒絕

               請求。

         unsupported_response_type

               授權伺服器不支援獲得

               使用這種方法的授權碼。

         invalid_scope

               所請求的範圍是無效的,未知的,或畸形。

         SERVER_ERROR

               授權伺服器時遇到意外

               條件是履行請求阻止它。

               (此錯誤代碼是需要的,因為一個500内部伺服器

               錯誤HTTP狀态代碼不能被傳回給用戶端

               通過HTTP重定向。)

         temporarily_unavailable

               授權伺服器目前無法處理

               由于暫時超載或維護請求

               伺服器。 (此錯誤代碼是需要的,因為一個503

               服務不可用HTTP狀态代碼不能退換

               通過一個HTTP重定向用戶端。)

         值的“錯誤”參數不能包含的字元

         外集%x20-21/%x23-5B/%X5D-7E。

   error_description

         可選。人類可讀的ASCII[USASCII]文本提供

         附加資訊,用于協助客戶,顯影劑中

         了解所發生的錯誤。

         值的“error_description”參數不能包含

         設定%x20-21/%x23-5B/%X5D-7E以外的字元。

   error_uri

         可選。一個URI識别與人類可讀的網頁

         有關錯誤,用于提供客戶機的資訊

         開發商與有關錯誤的附加資訊。

         值的“error_uri”參數必須符合

         URI引用的文法,因而不能包含的字元

         外集%X21/%x23-5B/%X5D-7E。

狀态

         必需如果“狀态”參數存在于用戶端

   HTTP/1.1302發現

   地點:https://client.example.com/cb?error=access_denied&state=xyz

4.1.3。通路令牌請求

   用戶端通過發送送出請求令牌端點

   以下使用的參數“應用程式/ x-WWW的形式,進行了urlencoded”

   按附錄B格式UTF-8在HTTP字元編碼

   請求的實體:

   grant_type

         必需的。值必須設定為“authorization_code”。

         必需的。從接收到的授權碼

         授權伺服器。

         REQUIRED,如果“redirect_uri”參數被列入

         授權請求4.1.1節描述的那樣,他們

         值必須是相同的。

         REQUIRED,如果用戶端不與認證

         授權伺服器在第3.2.1節中所述。

   如果用戶端類型為機密或用戶端發出用戶端

   憑據(或交辦的其他認證要求),該

   所描述的用戶端必須與授權伺服器進行身份驗證

   在第3.2.1節。

例如,用戶端使用TLS以下HTTP請求

   (額外換行符僅供顯示):

     POST /token HTTP/1.1

     Authorization: Basic czZCaGRSa3F0MzpnWDFmQmF0M2JW

     grant_type=authorization_code&code=SplxlOBeZQQYbYS6WxSbIA

     &redirect_uri=https%3A%2F%2Fclient%2Eexample%2Ecom%2Fcb

   授權伺服器必須:

   Ø要求對客戶的機密或任何用戶端身份驗證

      釋出客戶證書(或與其他客戶機

      認證要求),

   Ø驗證用戶端,如果用戶端驗證包括,

   o確定授權代碼發給認證

      機密的客戶,或者如果用戶端是公共的,確定了

      代碼請求發出“CLIENT_ID”

   o确認該授權碼是有效的,并

   Ø確定“redirect_uri”參數存在,如果

      “redirect_uri”參數被列入初始授權

      要求在第4.1.1節中所述,如果包括確定

      它們的值是相同的。

4.1.4。通路令牌響應

   如果通路令牌請求是有效的和授權,則

   授權伺服器發出一個通路令牌和可選重新整理

   令牌在第5.1節所描述的。如果請求用戶端

   驗證失敗或無效,則授權伺服器傳回

   錯誤響應,在5.2節所述。

一個例子成功的響應:

     HTTP/1.1 200 OK

     Content-Type: application/json;charset=UTF-8

     Cache-Control: no-store

     Pragma: no-cache

     {

       "access_token":"2YotnFZFEjr1zCsicMWpAA",

       "token_type":"example",

       "expires_in":3600,

       "refresh_token":"tGzv3JOkF0XG5Qx2TlKWIA",

       "example_parameter":"example_value"

     }

4.2。隐授予

   隐式授予類型用于獲得通路令牌(它不

   支援發行重新整理令牌),并公開了優化

   用戶端已知操作一個特定的重定向的URI。這些用戶端

   通常使用腳本語言來實作在浏覽器

   如JavaScript。

   不像授權碼傳遞式,其中,用戶端發出

   授權和通路令牌獨立的要求,

   用戶端接收通路令牌作為授權的結果

   隐式類型授予不包括用戶端身份驗證,并

   依賴于資源所有者的存在和登記

   重定向URI。因為該通路令牌被編碼成

   重定向的URI,它可暴露于該資源的所有者和其他

   駐留在相同的裝置上的應用程式。

+----------+

     | - +----(A) - 重定向URI--->| |

     |代理 - |----(B) - 使用者驗證 - >|伺服器|

     | |<---(C)---重定向URI----<| |

     | |與通路令牌+--------+

     |在片段|

     | |----(D)---重定向URI---->|網站托管|

     |無片段|客戶| |

     | | |資源|

     |(F)|<---(E)-------腳本---------<| |

     + - |--------+

       | |

      (A)(G)通路令牌

       ^ V

     +---------+

     |客戶|

   注意:示出步驟(A)和(B)的線被分成兩個

   部分因為他們通過使用者代理。

                       圖4:隐授予流量

在圖4中所示的流程包括以下步驟:

        重定向URI早些時候提供的。重定向URI包括

        在URI片段的通路令牌。

   (D)中的使用者代理如下通過使重定向指令

        請求發送到Web托管的客戶資源(不

        包括每[RFC2616]的片段)。使用者代理保留

        片段資訊在本地。

   (E)的Web托管用戶端的資源傳回一個網頁(通常是

        帶有嵌入式腳本的HTML檔案)能夠通路的

        滿重定向的URI包含由保留片段

        使用者代理,并提取通路令牌(和其他

        中所含的片段的參數)。

   (F)的使用者代理執行由Web托管提供的腳本

        用戶端在本地的資源,提取通路令牌。

   (G)的使用者代理傳遞所述通路令牌給用戶端。

   請參見1.3.2節和9背景上使用隐授予。

   參見第10.3和10.16的重要的安全注意事項

   使用隐授予的時候。

4.2.1。授權請求

         必需的。值必須設定為“令牌”。

redirect_uri

   範圍

    GET /authorize?response_type=token&client_id=s6BhdRkqt3&state=xyz

   必需的參數是存在并有效。授權伺服器

   必須驗證重定向URI,并向它重定向

   通路令牌相比對的用戶端作為注冊的重定向URI

   第3.1.2節。

   如果該請求是有效的,授權伺服器認證該

   資源所有者和獲得授權決定(通過詢問

   資源所有者,或通過建立通過其他方式準許)。

4.2.2。通路令牌響應

   伺服器發出一個通路令牌,它通過增加提供給用戶端

   以下參數來重定向的片段組成部分

   使用“應用程式/ x www的窗體-urlencoded”的格式,每個URI

   附錄B:

   access_token

         必需的。通過授權伺服器發出的通路令牌。

   token_type

         必需的。作為标記的描述中發出的類型

         第7.1節。值不區分大小寫。

   expires_in

         推薦使用。在通路令牌秒的壽命。為

         例如,值“3600”表示該通路令牌将

         在一小時内從生成該響應時間期滿。

         如果省略,授權伺服器應當提供

         通過其他手段或文檔的預設值的期滿時間。

         可選的,如果與由用戶端請求的範圍;

         否則,必需的。通路令牌的範圍

         按3.3節所述。

   授權伺服器不能發出重新整理令牌。

   發送以下HTTP響應(額外換行符的

   隻作展示用途):

     HTTP/1.1302發現

     地點:http://example.com/cb#access_token=2YotnFZFEjr1zCsicMWpAA

               與狀态= XYZ&token_type=例如:expires_in=3600

   開發人員應該注意,有些使用者代理不支援

   包含一個片段組成部分中的HTTP“位置”的反應

   頭字段。這樣的客戶将需要使用其他方法

   重定向用戶端比3XX重定向響應 - 

   例如,傳回一個HTML頁面,其中包括一個“繼續”按鈕

   與連結到重定向URI的動作。

用戶端必須忽略無法識别的響應參數。通路

   令牌字元串大小由本規範未定義。該

   客戶應避免作出假設值的大小。該

   授權伺服器應記錄它發出的任何值的大小。

4.2.2.1。錯誤響應

   使用參數來重定向URI的片段組成部分

         unauthorized_client

               客戶無權請求通路令牌

               采用這種方法。

               使用這種方法通路令牌。

SERVER_ERROR

   地點:https://client.example.com/cb#error=access_denied&state=xyz

4.3。資源所有者密碼憑據授予

   資源所有者密碼憑證傳遞式适用于

   情況下,資源的所有者與該信任關系

   用戶端,如裝置作業系統或高權限

應用程式。授權伺服器應特别注意,當

   啟用此授予類型,隻允許它在其他流不

   可行的。

   這筆贈款類型是适合于能夠獲得的客戶

   資源所有者的憑據(使用者名和密碼,通常使用

   互動式表格)。它也可以用來遷移現有客戶

   采用直接認證計劃,如HTTP Basic或摘要

   身份驗證的OAuth通過将存儲的憑據到

   通路令牌。

          V

          |資源所有者

         (A)密碼憑據

     +---------++---------------+

     | |> - (B)----資源所有者------->| |

     | |密碼憑據|授權|

     | |< - (C)----通路令牌---------<| |

     | |(W /可選重新整理令牌)| |

            圖5:資源所有者密碼憑據流

   在圖5中所示的流程包括以下步驟:

   (A)資源所有者向用戶端提供的使用者名和

        密碼。

   (二)用戶端請求的通路令牌從授權

        通過包括收到的證書伺服器的令牌端點

        從資源所有者。送出請求時,用戶端

        驗證與授權伺服器。

   (C)的授權伺服器的用戶端,并驗證認證

        資源所有者憑據,如果有效,發出一個通路

        令牌。

4.3.1。授權請求和響應

   通過該用戶端擷取資源所有者的方法

   憑據超出了本規範的範圍。用戶端

   必須丢棄的憑據,一旦一個通路令牌已經獲得。

4.3.2。通路令牌請求

   用戶端通過将送出請求令牌端點

         必需的。值必須設定為“密碼”。

   使用者名

         必需的。資源所有者的使用者名。

   密碼

         必需的。資源所有者的密碼。

   例如,用戶端使用下列HTTP請求

   傳輸層安全(額外換行符用于顯示目的

   POST /token HTTP/1.1

     grant_type=password&username=johndoe&password=A3ddj3w

授權伺服器必須:

   Ø驗證用戶端,如果客戶機認證包括在内,

   o使用驗證資源所有者密碼憑據其

      現有的密碼驗證算法。

   由于該通路令牌請求利用資源所有者的

   密碼,授權伺服器必須防止端點

   蠻力攻擊(例如,使用速率限制或發電

   警報)。

4.3.3。通路令牌響應

   令牌在第5.1節所描述的。如果請求用戶端失敗

   認證或無效,授權伺服器傳回一個

   一個例子成功的響應:

4.4。用戶端證書授予

   用戶端可以隻使用它的用戶端請求通路令牌

   證書(或認證的其他支援方式),當

   用戶端請求下通路受保護的資源,其

   控制,或者那些其他資源所有者以前一直是

   布置成與授權伺服器(的方法,其中超出

   本規範的範圍内)。

用戶端證書傳遞式隻能用于保密

     | |> - (A) - 用戶端認證--->|授權|

     | |< - (B)----通路令牌---------<| |

                     圖6:用戶端憑證流

   在圖6中所示的流程包括以下步驟:

   (A)與授權伺服器的用戶端進行身份驗證和

        要求從令牌端點通路令牌。

   (B)中的授權伺服器驗證用戶端,并且如果有效,

        發出一個通路令牌。

4.4.1。授權請求和響應

   由于用戶端的認證用作認證授予,

   無需額外的授權請求。

4.4.2。通路令牌請求

         必需的。值必須設定為“client_credentials”。

   客戶必須與授權伺服器進行身份驗證

   在第3.2.1節中描述。

例如,用戶端使用下列HTTP請求

     POST/令牌HTTP/1.1

     主持人:server.example.com

     授權:基本czZCaGRSa3F0MzpnWDFmQmF0M2JW

     内容類型:應用程式/ x www的窗體-urlencoded

     grant_type= client_credentials

   授權伺服器必須驗證用戶端。

4.4.3。通路令牌響應

   中所述授權伺服器發出一個通路令牌

   5.1節。重新整理令牌不應被列入。如果請求

   失敗的用戶端認證或無效,授權伺服器

   傳回一個錯誤響應,在5.2節所述。

4.5。擴充資助

   用戶端通過指定傳遞式使用的擴充傳遞式

   使用絕對URI(由授權伺服器定義)作為

   值令牌端點的“grant_type”參數,并通過

   添加任何必要的附加參數。

例如,以請求使用安全斷言接入令牌

   标記語言(SAML)所界定2.0斷言傳遞式

   [OAuth的SAML2],用戶端可以使用做出以下HTTP請求

   TLS(額外換行符僅供顯示):

     grant_type=urn%3Aietf%3Aparams%3Aoauth%3Agrant-type%3Asaml2-

     bearer&assertion=PEFzc2VydGlvbiBJc3N1ZUluc3RhbnQ9IjIwMTEtMDU

     [...omitted for brevity...]aG5TdGF0ZW1lbnQ-PC9Bc3NlcnRpb24-

5.發出一個通路令牌

5.1。成功的響應

   令牌,并構造通過添加以下參數的響應

   于實體主體具有一個200(OK)狀态碼的HTTP響應的:

refresh_token

         可選。重新整理令牌,它可以被用來獲得新的

         使用相同的授權授予通路令牌描述

         第6節。

   參數被包括在實體主體的HTTP響應

   使用“應用/ JSON的”媒體按[RFC4627]定義的類型。該

   參數序列化為一個JavaScript對象符号(JSON)

   結構由最高結構層次添加每個參數。

   參數名稱和字元串值包括為JSON字元串。

   數值列為JSON号碼。的順序

   參數并不重要,可以有所不同。

   授權伺服器必須包含HTTP“的Cache-Control”

   響應報頭字段[RFC2616]“無店鋪”在任何一個值

   含響應令牌,憑證或其他敏感

   資訊,以及在“語用”響應報頭字段[RFC2616]

   用“無緩存”的值。

   例如:

   用戶端必須忽略在響應中無法識别的值的名稱。該

   令牌和其它值的大小從授權接收

   伺服器沒有定義。客戶應避免

   約值大小的假設。授權伺服器應

   記錄它發出的任何值的大小。

5.2。錯誤響應

   授權伺服器的HTTP400(錯誤請求)響應

   狀态代碼(除非另有規定),其包含下列

   參數的回應:

               不支援的參數值(除授予除外),

               重複參數,包括多個憑證,

               利用多于一個的機制用于認證

               用戶端,或者說是不正常的。

         invalid_client

               用戶端身份驗證失敗(例如,未知用戶端,沒有

               用戶端驗證包括,或不支援

               身份驗證方法)。授權伺服器可能

               傳回一個HTTP401狀态碼來表示

               身份驗證方案支援哪些HTTP。如果

               用戶端嘗試通過“授權”認證

               請求頭領域,授權伺服器MUST

               與HTTP401狀态碼和

               包括“WWW身份驗證”響應頭字段

               比對所使用的客戶機的驗證方案。

         invalid_grant

               所提供的授權許可(例如,授權

               碼,資源所有者憑證)或重新整理令牌就是

               無效的,過期的,撤銷,不重定向比對

               的URI用在授權請求,或者發出至

               另一個用戶端。

               經過身份驗證的用戶端不被授權使用該

               授權授予類型。

         unsupported_grant_type

               授權授予類型不支援的

               授權伺服器。

invalid_scope

               所請求的範圍是無效的,未知的,畸形,或

               超過授予的資源所有者的範圍。

   參數是通過将每個序列化為一個JSON結構

   參數最高結構層次。參數名稱和字元串

   值包括為JSON字元串。數字值被包括在内

   作為JSON數字。參數的順序并不重要,可以

   有所不同。

6.重新整理通路令牌

   如果授權伺服器發出一個重新整理令牌給用戶端,該

   客戶通過将使得重新整理請求令牌端點

         必需的。值必須設定為“refresh_token”。

   refresh_token

         必需的。向客戶機發出重新整理令牌。

         第3.3節。所請求的範圍必須不包括任何适用範圍

         原本不授予資源所有者,如果省略則

         視為等于最初授予的範圍

         資源所有者。

   由于重新整理令牌用于一般恒久的憑據

   請求額外通路令牌,重新整理令牌被綁定到

   它所發出的用戶端。如果用戶端類型是保密的,或

   用戶端發出的客戶證書(或交辦的其他

   認證要求),用戶端必須與認證

   授權伺服器在第3.2.1節中所述。

   Ø驗證用戶端,如果用戶端驗證包括在内,

      確定重新整理令牌發給認證

      用戶端,和

   Ø驗證重新整理令牌。

   如果有效授權,授權伺服器發出的通路

   令牌在第5.1節所描述的。如果請求失敗

   驗證或無效,授權伺服器傳回一個錯誤

   響應,在5.2節所述。

   授權伺服器可以發出新的重新整理令牌,在這種情況

   用戶端必須丢棄舊的重新整理令牌,并将其與替換

   新的重新整理令牌。授權伺服器可以撤銷老

   釋出一個新的重新整理令牌給用戶端後重新整理令牌。如果

   發出新的重新整理令牌,重新整理令牌範圍必須是

   相同的,包括在所述用戶端的重新整理令牌

7.通路受保護的資源

   用戶端通過提供接入通路受保護的資源

   令牌到資源伺服器。資源伺服器必須驗證

   通路令牌,并確定它沒有過期,并且其範圍

   涵蓋所請求的資源。所使用的資源的方法

   伺服器來驗證所述接入令牌(以及任何錯誤響應)

   不屬于本規範的範圍,但通常涉及的

   資源伺服器和之間的互相作用或配位

   在其中用戶端利用所述接入令牌的方法

   與資源伺服器驗證依賴于通路的類型

   令牌由授權伺服器發出的。典型地,它涉及

   使用HTTP“授權”請求頭場[RFC2617]與

   由接入規範中定義的認證方案

   令牌類型使用,如[RFC6750]。

7.1。通路令牌類型

   通路令牌類型為用戶端提供的資訊,

   成功利用通路令牌,使受保護的需要

   資源請求(連同類型特定屬性)。用戶端

   不得使用一個通路令牌,如果它不明白令牌

   類型。

   例如,在[RFC6750]中定義的“載體”記号類型被利用

   通過簡單地包括在請求通路令牌字元串:

   而在[OAuth的-HTTP-MAC]中定義的“陸委會”令牌類型由使用

   與發出消息認證碼(MAC)鍵一起

   被用于簽署的HTTP的某些元件的通路令牌

   要求:

  GET /resource/1 HTTP/1.1

     Host: example.com

     Authorization: MAC id="h480djs93hd8",

                        nonce="274312:dj83hs9s",

                        mac="kDZvddkndxvhGRXZhvuDjEWhGeE="

   所提供的上述執行個體僅用于說明目的。

   建議開發人員參考[RFC6750]和[OAuth的-HTTP-MAC]

   使用前規範。

   每一個通路令牌類型定義指定的附加屬性

   (如有的話)發送到用戶端連同“access_token”響應

   參數。它還定義了用于HTTP的身份驗證方法

   包括通路令牌使受保護的資源請求時。

7.2。錯誤響應

   如果資源通路請求失敗,資源伺服器應該通知

   錯誤的用戶端。而這樣的錯誤響應的細節

   不屬于本規範的範圍,該檔案規定

   在第11.4節共同系統資料庫錯誤值進行共享

   OAuth的令牌認證方案。

   主要用于令牌的OAuth認證的新方案

   認證應該定義一個機制來提供錯誤

   狀态代碼給客戶機,其中,所述誤內插補點是允許的

   在本規範制定的錯誤登記注冊。

這樣的方案可以限制該組有效的錯誤碼的一個子集

   注冊值。如果使用将傳回錯誤代碼命名

   參數,參數名稱應為“錯誤”。

   能夠被用于OAuth的令牌認證其他方案,

   但主要不是為了這個目的,可以結合自己的錯誤

   值到系統資料庫中相同的方式。

   新的認證計劃,可能也選擇了指定使用的

   “error_description”和“error_uri”參數傳回錯誤

   以平行的方式對他們的在此使用情況的資訊

   規範。

8.可擴充性

8.1。定義通路令牌類型

   通路令牌類型可在以下兩種方式之一來定義:在注冊

   通路令牌類型的系統資料庫(下面的程式

   部分11.1),或通過使用一個唯一的絕對URI作為其名稱。

   利用URI名稱類型應僅限于特定供應商

   實作,它們不常用适用,并且是特定于

   資源伺服器的實作細節,他們是

   使用。

   所有其他類型都必須登記。類型名稱必須符合

   類型名ABNF。如果類型定義包括一個新的HTTP

   認證方案,類型名稱應該是相同的HTTP

   認證方案名稱(由[RFC2617]定義)。标記類型

   “榜樣”是在執行個體保留。

     類型名=1*名稱字元

     名稱 - 炭=“ - ”/“”。 /“_”/ DIGIT/ ALPHA

8.2。定義新的端點參數

   新的請求或響應參數與授權使用

   端點或令牌端點被定義,并在注冊

   OAuth的Parameters系統資料庫按照11.2節的程式。

   參數名稱必須符合參數名ABNF和參數

   值文法必須明确定義(例如,使用ABNF,或參考

   到現有參數的文法)。

     參數名稱=1*名稱字元

未登記的供應商特定的參數的擴充,不

   通常适用的,并且是特定于實施

   授權伺服器的在那裡它們被用于應詳細說明

   利用供應商特定的字首是不太可能與相沖突

   其他已注冊的值(例如,以'companyname_')。

8.3。定義新的授權授予類型

   新的授權授予類型可以通過配置設定來定義他們

   獨特的絕對URI以便與“grant_type”參數的使用。如果

   擴充授予類型需要額外的令牌端點的參數,

   描述他們必須注冊在OAuth的Parameters系統資料庫

   由第11.2節。

8.4。定義新的授權端點響應類型

   與授權端點使用新的響應類型

   定義并在授權端點響應類型注冊

   系統資料庫按照11.3節的程式。響應類型

   名稱必須符合響應式ABNF。

     response-type  = response-name *( SP response-name )

     response-name  = 1*response-char

     response-char  = "_" / DIGIT / ALPHA

   如果一個響應類型包含一個或多個空格字元(%X20)時,它

   是作為比較值的空格分隔清單中的順序

   值無所謂。隻值一個訂單可以注冊,

   覆寫同一組值的所有其他安排。

   例如,響應式“令牌代碼”未定義本

   規範。然而,一個擴充可以定義和注冊

   “令牌代碼”響應類型。一旦注冊成功,同樣的組合

   不能被注冊為“代碼令牌”,而這兩個值可以用于

   表示相同的響應類型。

8.5。定義其他錯誤代碼

   在情況下,協定擴充(即通路令牌類型,

   擴充參數,或延長授予類型)需要額外的

   錯誤代碼将與授權碼授予錯誤使用

   響應(第4.1.2.1),隐含的授予錯誤響應

   (第4.2.2.1),令牌錯誤響應(第5.2節),或者

   資源通路錯誤響應(第7.2節),這樣的錯誤代碼可能是

   定義。

擴充錯誤代碼必須注冊(下面的程式

   部分11.4),如果它們被一起使用的擴充是一個

   注冊的通路令牌類型,注冊端點參數,或

   擴充傳遞式。與未注冊的擴充使用錯誤代碼

   可登記。

   錯誤代碼必須符合錯誤ABNF,應該由字首

   辨別名稱時可能。例如,一個錯誤識别

   設定擴充參數無效值“榜樣”應該是

   名為“example_invalid”。

     錯誤=1*錯誤字元

     錯誤的char=%x20-21/%x23-5B/%X5D-7E

9.本機應用程式

   本機應用程式安裝并在裝置上執行的用戶端

   所使用的資源所有者(即桌面應用,本地移動

   應用程式)。本機應用程式需要特殊考慮

   涉及到安全性,平台功能,和整體的最終使用者

   的經驗。

   授權端點需要在用戶端之間的互動

   而資源所有者的使用者代理。本機應用程式可以調用

   外部使用者代理或嵌入在應用程式中的使用者代理。

   Ø外部使用者代理 - 本機應用程式可以捕獲

      使用重定向URI從授權伺服器的響應

      與作業系統調用注冊的方案

      用戶端的處理程式,憑證的手動複制和粘貼,

      運作本地Web伺服器,安裝使用者代理擴充,或

      通過提供重定向的URI識别伺服器托管

      在用戶端的控制下的資源,而這又使得

      響應提供給本機應用程式。

   Ø嵌入式使用者代理 - 本機應用程式獲得響應

      通過與嵌入式使用者代理通過直接連通

      資源負荷期間監測狀态變化發出,或

      通路使用者代理的cookie存儲。

   當外部或嵌入使用者代理之間進行選擇,開發人員

   應考慮以下幾點:

   Ø外部使用者代理可以提高完成率,作為

      資源所有者可能已經有一個活躍的會話與

      授權伺服器,無需重新進行身份驗證。它

      提供了一種熟悉的最終使用者體驗和功能。該

資源所有者也可能依賴于使用者代理的功能或擴充

      協助認證(例如,密碼管理器,雙因素

      裝置閱讀器)。

   Ø嵌入式使用者代理可以提供更高的可用性,因為它消除

      需要切換上下文,并打開新的視窗。

   Ø嵌入式使用者代理帶來了安全挑戰,因為資源

      業主證在一名身份不明的視窗而不通路

      在大多數外部使用者代理發現視覺保護。一個

      嵌入式使用者代理灌輸最終使用者信任不明

      認證請求(使釣魚攻擊更容易

      執行)。

   當隐式授予類型和授權之間進行選擇

   代碼授予類型,應考慮以下因素:

   Ø使用該授權碼傳遞式原生應用

      應該這樣做,而無需使用用戶端憑據,由于本土

      應用程式無法保持用戶端憑據保密。

   o如果使用隐授予式流量,重新整理令牌不

      回來了,這需要重複授權過程中一旦

      通路令牌到期。

10.安全注意事項

   作為一種靈活的和可擴充的架構,OAuth的安全

   考慮取決于許多因素。以下各節

   提供實施者與集中在三個安全指引

   2.1節中描述的用戶端配置檔案:Web應用程式,

   使用者代理的應用程式,和本機應用程式。

   綜合OAuth安全模型和分析,以及

   背景用于協定設計,由設定

   [OAuth的THREATMODEL。

10.1。用戶端身份驗證

   授權伺服器建立與Web用戶端憑據

   應用程式用戶端的用戶端身份驗證的目的。該

   授權伺服器鼓勵考慮更強的用戶端

   認證是指比用戶端密碼。 Web應用程式用戶端

   必須確定客戶的密碼和其他客戶的保密

   憑據。

授權伺服器不能發出用戶端密碼或其他

   用戶端憑據本地應用程式或使用者的基于代理

   授權伺服器可以發出用戶端密碼或其它憑證

   對于本地應用程式用戶端上的一個特定的安裝

   特定裝置。

   當用戶端認證是不可能的,授權伺服器

   應采用其他方法來驗證客戶的身份 - 為

   例如,要求用戶端重定向URI的登記

   或争取資源所有者,以确認身份。有效

   重定向URI不足以驗證客戶的身份

   請求資源所有者授權但可用于當

   防止後傳遞憑證僞造用戶端

   擷取資源所有者授權。

   授權伺服器必須考慮的安全問題

   與未認證的用戶端互動,并采取措施限制

   其他憑證的潛在風險(如,重新整理令牌)

   發出這樣的客戶。

10.2。用戶端模拟

   惡意的用戶端可以僞裝成其他的用戶端,并獲得通路

   受保護的資源,如果被模拟的用戶端無法,或者說是

   無法,保持其用戶端憑據保密。

   授權伺服器必須驗證用戶端,隻要

   可能的。如果授權伺服器無法驗證用戶端

   由于客戶機的性質,授權伺服器必須要求

   任何重定向的登記的URI用于接收授權

   響應和應利用其他手段來保護資源擁有者

   從這些潛在的惡意的用戶端。例如,該

   授權伺服器可以接合該資源的所有者,以協助

   識别用戶端和它的起源。

   授權伺服器應該執行顯式的資源擁有者

   認證和提供有關的資訊資源所有者

   在用戶端和請求授權範圍和壽命。這是

   達資源所有者審查的上下文中的資訊

   目前的用戶端,并授權或拒絕該請求。

   授權伺服器不應該重複處理授權

   自動請求(不活躍的資源擁有者的互動)

   沒有認證的用戶端或依賴等措施,

   確定該重複請求來自原始客戶機和

   不是冒領。

10.3。通路令牌

   通路令牌憑據(以及任何機密通路令牌

   屬性)必須保密傳輸和存儲,并

   隻有授權伺服器之間共享的資源的伺服器的

   通路令牌是有效的,并在用戶端向誰通路令牌是

   發行。隻允許使用TLS傳輸通路令牌憑據

   如在第1.6節描述的伺服器認證通過定義

   [RFC2818]。

   當使用隐式授予類型,接入令牌發送

   在URI片段,它可以将其暴露在未經授權的第三方。

   授權伺服器必須確定通路令牌不能

   生成,修改或猜到出示有效的通路令牌

   未經授權的第三方。

   客戶應該要求通路令牌的最小範圍

   必要的。授權伺服器應以客戶的身份

   考慮到選擇如何兌現要求的範圍,并可能在

   發出一個通路令牌少權比要求。

   本說明書中沒有提供任何方法對資源

   伺服器,以確定通路令牌由給定提供給它

   用戶端是由授權伺服器頒發給用戶端。

10.4。重新整理令牌

   授權伺服器可能會發出重新整理令牌的Web應用程式

   客戶和本地應用程式用戶端。

   重新整理令牌必須保密傳輸和存儲,并

   隻在授權伺服器和用戶端向誰共享

   重新整理令牌發出。授權伺服器必須保持

   重新整理令牌和用戶端的人有之間的結合

   發行。隻允許使用TLS作為傳輸重新整理令牌

   通過定義在第1.6節描述的伺服器認證

   授權伺服器必須驗證重新整理之間的結合

   每當客戶機身份可以是令牌和客戶機辨別

   驗證。當用戶端認證是不可能的,該

   授權伺服器應部署等手段來檢測重新整理

   令牌濫用。

   例如,授權伺服器可以采用重新整理令牌

   在一個新的重新整理令牌與每個接入轉動發出

   令牌重新整理響應。以前的重新整理令牌無效

而是由授權伺服器保留。如果重新整理令牌

   損害并随後使用由兩個攻擊者和

   合法的用戶端,其中一人将提出一個無效的重新整理

   令牌,這将通知授權伺服器的違反。

   授權伺服器必須確定重新整理令牌不能

   生成,修改或猜測通過,以産生有效的重新整理令牌

10.5。授權碼

   授權碼的傳輸應通過安全

   信道,并在用戶端應該要求使用TLS與其

   redirection(重定向)的URI如果URI辨別的網絡資源。因為

   授權碼是通過使用者代理重定向傳播,他們

   可能會通過使用者代理的曆史和HTTP披露

   引薦頭。

   授權碼操作明文承載憑據,用于

   驗證誰在授予授權資源所有者

   授權伺服器是相同的資源所有者傳回到

   用戶端來完成這個過程。是以,如果客戶機依賴于

   為它自己的資源所有者認證授權碼,則

   用戶端重定向端點必須要求使用TLS。

   授權代碼必須是短暫和一次性使用。如果

   授權伺服器觀察多次嘗試交換的

   一個通路令牌授權碼,授權伺服器

   應該嘗試取消已給予基于所有的通路令牌

   被感染的授權碼。

   如果用戶端進行身份驗證,授權伺服器必須

   認證客戶機,并確定該授權碼是

   頒發給相同的用戶端。

10.6。授權碼重定向URI操作

   當請求授權使用授權碼授予

   類型,用戶端可以通過“redirect_uri”指定一個重定向的URI

   參數。如果攻擊者可以操縱的價值

   重定向的URI,它可能會導緻授權伺服器重定向

   資源所有者使用者代理向一個URI的控制下

   攻擊者的授權碼。

   攻擊者可以在一個合法的用戶端建立一個帳戶,并啟動

   授權流程。當攻擊者的使用者代理被發送到

   授權伺服器授予通路權限,攻擊者劫掠

   授權的URI提供的合法的用戶端,并取代

10.8。要求保密

   通路令牌,令牌重新整理,資源所有者的密碼,和用戶端

   證書必須不被明文傳輸。授權

   代碼不應該在明确的傳輸。

   “國家”和“範圍”參數不應該包含敏感

   以純文字的用戶端或資源擁有者的資訊,因為他們可以

   通過不安全的通道發送或存儲不安全。

10.9。確定端點真實性

   為了防止人在這方面的中間人攻擊,授權

   伺服器必須要求使用TLS與伺服器的身份驗證

   由[RFC2818]為發送給授權的任何請求中定義和

   令牌端點。用戶端必須驗證授權伺服器的

   由[RFC6125]定義TLS證書,并按照其

   要求伺服器身份認證。

10.10。憑據猜測攻擊

   授權伺服器必須阻止猜測攻擊者通路

   令牌,授權碼,重新整理标記,資源所有者

   密碼和用戶端證書。

   攻擊者的機率猜測生成令牌(和其他

   憑證不用于處理最終使用者)必須小于

   或等于2^( - 128),并應小于或等于2^( - 160)。

   授權伺服器必須利用其他手段來保護

   憑證供終端使用者使用。

10.11。網絡釣魚攻擊

   廣泛部署這種和類似的協定可能導緻最終使用者

   成為習以為常面臨被重定向到網站的做法

   他們被要求輸入密碼。如果最終使用者不

   小心進入之前核實這些網站的真僞

   他們的憑據,将有可能對攻擊者利用此

   實踐竊取資源所有者的密碼。

   服務提供者應嘗試教育最終使用者有關的風險

   釣魚式攻擊姿勢,并應提供可以很容易的機制

   對于最終使用者,以确認他們的網站的真實性。客戶

   開發人員應該考慮的是如何安全的影響,他們

   與使用者代理(例如,外部,嵌入式)互相作用,并且

   最終使用者的驗證的真僞能力

用戶端的重定向URI與URI的控制之下

   攻擊者。然後,攻擊者誘騙受害人到下面的

   操縱連杆授權通路合法的用戶端。

   一旦在授權伺服器,受害人出現一個提示

   代表一個合法的和值得信賴的用戶端的正常,有效的請求,

   并授權該請求。受害人随後被重定向到一個

   攻擊者的,與授權的控制下端點

   代碼。攻擊者通過發送完成授權流程

   使用原始重定向的URI授權碼給用戶端

   由客戶提供。客戶交流的授權碼

   有一個通路令牌,并将其連結到攻擊者的客戶帳戶,

   現在可以通路授權的受保護的資源

   受害者(經由客戶機)。

   為了防止這樣的攻擊,授權伺服器MUST

   確定該重定向的URI用于獲得授權碼

   相同的URI交換時提供的重定向

   授權代碼的通路令牌。授權伺服器

   必須要求公共機構提供服務,并應要求保密的客戶

   登記他們的重定向的URI。如果重定向URI提供

   在請求,授權伺服器必須驗證它靠在

   注冊的值。

10.7。資源所有者密碼憑據

   資源所有者密碼憑證傳遞式通常用于

   傳統的或遷移的原因。它降低存儲的總體風險

   使用者名和密碼由用戶端,但不消除需要

   暴露較高權限的憑證給用戶端。

   此批類型攜帶比其他類型的授予,因為風險較高

   它保持了密碼的反模式該協定旨在避免。

   用戶端可以濫用密碼,或者密碼

   無意間可以通過日志檔案或披露給攻擊者(例如,

   保持用戶端等記錄)。

   此外,由于資源所有者不具有控制權

   授權過程(資源所有者的參與結束時

   它移交其憑據到用戶端),用戶端可以擷取

   具有較寬範圍的通路令牌比所期望的資源

   所有者。授權伺服器應考慮的範圍和

   通過這種傳遞式發出的通路令牌的使用壽命。

   授權伺服器和用戶端應盡量減少使用這種補助

   鍵入并盡可能利用其他授予類型。

為了減少網絡釣魚攻擊,授權伺服器的風險

   必須要求對用于最終使用者的每個端點使用TLS

   互動。

10.12。跨站請求僞造

   跨站請求僞造(CSRF)是一種攻擊中,攻擊者

   導緻受害者終端使用者的使用者代理遵循一個惡意的URI

   (例如,提供給使用者代理作為一個誤導連結,圖像,或

   重定向)到信任的伺服器(通常是通過建立

   存在一個有效的會話cookie)。

   針對用戶端的重定向URI CSRF攻擊允許攻擊者

   注入自己的授權碼或通路令牌,該令牌可

   使用與相關聯的接入令牌導緻用戶端

   攻擊者的受保護的資源,而不是受害者的(例如,儲存

   受害人的銀行賬戶資訊,以保護資源

   被攻擊者控制)。

   用戶端必須實作其重定向URI CSRF保護。

   這通常是通過要求發送到任何請求

   redirection(重定向)的URI端點包括一個值,綁定請求

   使用者代理的認證狀态(會話例如,散列

   餅幹用于驗證使用者代理)。用戶端應該

   利用“國家”的請求參數來實作這一價值的

   授權伺服器進行授權請求時。

   一旦授權已被從最終使用者獲得的

   授權伺服器重定向最終使用者的使用者代理回

   用戶端包含在“狀态”所需的綁定值

   參數。綁定值使用戶端驗證

   請求通過比對的結合值的有效性

   使用者代理的認證狀态。使用CSRF綁定值

   保護必須包含一個非猜測的值(如上述

   第10.10節),和使用者代理的認證狀态(例如,

   會話cookie,HTML5本地存儲)必須保持在一個位置

   隻可通路的用戶端和使用者代理(即,由保護

   同源政策)。

   對授權伺服器的授權CSRF攻擊

   端點可導緻攻擊者獲得最終使用者授權

   對于不涉及或提醒終端使用者惡意用戶端。

   授權伺服器必須實作對CSRF保護它

   授權端點,并確定一個惡意的用戶端不能

   獲得授權沒有意識,明确同意

   該資源的所有者。

在用戶端建立一個重定向URI,将通過

   授權伺服器驗證,但将發送授權碼

   或者接入令牌到攻擊者的控制下的端點。

10.16。通路令牌誤用假冒資源所有者的隐

        流程

   對于使用隐式流動的公共客戶,這個規範不

   為客戶機提供的任何方法,以确定哪些用戶端的接入

   令牌發出。

   一個資源所有者可以通過自願委托對資源的通路

   授予通路令牌到攻擊者的惡意的用戶端。這可能

   因網絡釣魚或其他借口。攻擊者還可以盜取

   通過其他機制的令牌。然後,攻擊者可能試圖

   通過提供通路令牌一個冒充資源所有者

   合法的公共用戶端。

   在隐式流量(RESPONSE_TYPE=令牌),攻擊者可以很容易地

   切換令牌從授權伺服器的響應,

   與先前發出的一個替代真正的通路令牌

   攻擊者。

   伺服器與依靠的是原生應用程式通信

   通過接入令牌在背溝道識别的使用者

   用戶端可能被攻擊者建立一個被類似地損害

   受損的應用程式,可以注入任意被盜通路

   标記。

   任何公共客戶,使得假設隻有資源

   車主可以憑有效的通路令牌目前它的資源

   容易受到這種類型的攻擊。

   這種類型的攻擊可能會使有關資源所有者資訊

   在合法的用戶端攻擊(惡意的用戶端)。此

   也将允許攻擊者在合法執行操作

   用戶端使用相同的權限作為資源所有者原本誰

   授予的通路令牌或授權的代碼。

   驗證資源所有者給客戶超出範圍,這

   規範。使用授權過程的任何規格

   作為委托終端使用者認證到客戶的一種形式(例如,

   第三方登入服務)不能使用隐而不流

   額外的安全機制,這将使用戶端

   确定供其使用(例如,特定閱聽人發出的通路令牌

   限制通路令牌)。

11. IANA注意事項

11.1。 OAuth通路令牌類型的系統資料庫

   本規範建立的OAuth通路令牌類型的系統資料庫。

   通路令牌類型注冊了規範所要求的

   在為期兩周的審查期後([RFC5226])

   [email protected]郵件清單,在一個或更多的意見

   指定的專家。然而,為了允許值的配置設定

   出版之前,指定專家(S)可能會準許

   注冊一旦被滿足,這樣的規範将

   發表。

   登記請求必須被發送到[email protected]

   郵件清單進行審查和評論,用适當的主題

   (例如,“請求通路令牌類型:例如”)。

   在審查期間,在指定的專家(S),要麼

   準許或拒絕注冊請求,通信這一決定

   在審查清單和IANA。否認應該包括一個解釋

   并且,如果适用,建議,如何使請求

   成功的。

   IANA隻能接受指定專家系統資料庫更新(S)

   并應直接登記的審查郵寄的所有要求

   清單。

11.1.1。登記模闆

   鍵入名稱:

      請求的名稱(例如,“例如”)。

   額外的令牌端點的響應參數:

      額外的響應參數一起傳回的

      “access_token”參數。新的參數必須單獨

      所描述的注冊在OAuth的Parameters系統資料庫

      第11.2節。

   HTTP認證方案(S):

      在HTTP認證方案名稱(S),如果有的話,用

      驗證使用的通路令牌保護的資源請求

      此類型。

   更改控制器:

      對于标準跟蹤RFC中,國家“IETF”。對于其他人,給的名字

      的責任方。其他細節(例如,郵政位址,

      電子郵件位址,首頁的URI)也可以被包括在内。

規範文檔(S):

      參考檔案(多個)指定的參數,

      優選包括可用于檢索的副本的URI

      該檔案(多個)。相關部分也可能的訓示

      被包括在内,但不是必需的。

11.2。 OAuth的Parameters系統資料庫

   本規範規定了OAuth的Parameters系統資料庫。

   列入授權端點的其他參數

   請求,授權端點響應時,令牌端點

   請求,或令牌端點響應中注冊的一

   規範所要求的([RFC5226])在為期兩周的審查期後,

   在[email protected]郵件清單,在其中一個建議或

   更指定的專家。然而,為了允許的配置設定

   值出版之前,指定的專家(S)可能會準許

   (例如,“請求參數:例如”)。

11.2.1。登記模闆

   參數名:

   參數的用法的位置:

      的位置(S),其中參數可以使用。可能

      地點是授權請求,授權響應,令牌

      請求,或令牌響應。

11.2.2。初始登記内容

   OAuth的Parameters系統資料庫的初始内容是:

   O參數名:CLIENT_ID

   O參數的使用位置:授權請求,令牌請求

   O更改控制器:IETF

   O規格檔案(S):RFC6749

   O參數名:client_secret

   O參數的使用位置:令牌請求

   O參數名:RESPONSE_TYPE

   O參數的使用位置:授權請求

   O參數名:redirect_uri

   O參數名:範圍

   O參數的使用位置:授權請求,授權

      對此,令牌請求,響應令牌

   O參數名:狀态

      響應

   O參數名:密碼

   O參數的使用位置:授權響應,令牌請求

O參數名:error_description

   O參數的使用位置:授權響應,響應令牌

   O參數名:error_uri

   O參數名:grant_type

   O參數名:access_token

   O參數名:token_type

   O參數名:expires_in

   O參數名:使用者名

   O參數名:refresh_token

   O參數的使用位置:令牌請求,響應令牌

11.3。 OAuth的授權端點響應類型的系統資料庫

   本規範規定了OAuth的授權端點

   響應類型的系統資料庫。

   與授權端點使用額外的響應類型

   兩個星期後,注冊了規範所要求的([RFC5226])

   檢視[email protected]郵件清單上期,上

   一個咨詢或多個指定的專家。然而,以允許

   在出版之前值的配置設定,在指定的專家(S)

   可以準許注冊一旦被滿足,這樣的

   規範将予以公布。

   (例如,“請求響應類型:例如”)。

11.3.1。登記模闆

   響應類型的名字:

   規範文檔(S):

      參考檔案(多個)指定的類型,優選

      包括可用于檢索的副本的URI

      檔案(S)。有關章節的訓示也可

      包括在内,但不是必需的。

11.3.2。初始登記内容

   OAuth的授權端點響應類型的系統資料庫的初始

   内容是:

   O響應類型名稱:代碼

   O響應類型名稱:令牌

11.4。 OAuth的擴充錯誤登記

   本規範規定了OAuth的擴充錯誤的系統資料庫。

   與其他協定擴充一起使用額外的錯誤代碼

   (即延長授予的類型,通路令牌類型,或延長

   參數)被注冊了規範所要求的([RFC5226])

   在[email protected]為期兩周的審查期後,

   郵件清單,在其中一個建議或多個指定的專家。

   然而,為了允許在出版之前的值的配置設定,

   指定的專家(S)可能會準許登記,一旦他們

   認為這樣的規範将予以公布。

   (例如,“請求錯誤代碼:例如”)。

11.4.1。登記模闆

   錯誤名稱:

      請求的名稱(例如,“例如”)。值的誤差名

      不能包含集%x20-21/%x23-5B/以外的字元

      %X5D-7E。

   錯誤的使用位置:

      的位置(S),其中可以使用該錯誤。可能

      地點是授權碼授予錯誤響應

      (第4.1.2.1),隐含的授予錯誤響應

      (第4.2.2.1),令牌錯誤響應(第5.2節),或資源

      通路錯誤的響應(第7.2節)。

   相關協定擴充:

      擴充授予類型的名稱,通路令牌類型,或

      該錯誤代碼一起使用的擴充參數

      用。

      參考檔案(多個)指定錯誤代碼,

12.參考

12.1。規範性引用檔案

   [RFC2119] Bradner,S.,“在RFC中使用的關鍵詞來訓示

              要求等級“,BCP14,RFC2119,1997年3月。

   [RFC2246]的Dierks,T和C·艾倫,“該TLS協定版本1.0”

              RFC 2246,1999年1月。

   [RFC2616]菲爾丁,R.,Gettys的,J.,輝門,J.,Frystyk,H.,

              Masinter,L.,利奇,P.,和T.伯納斯 - 李,“超文本

              傳輸協定 - HTTP/1.1“,RFC2616,1999年6月。

   [RFC2617]弗蘭克斯,J.,哈勒姆 - 貝克,P.,霍斯泰特勒,J.,勞倫斯,S.,

              利奇,P.,Luotonen,A.,和L.斯圖爾特,“HTTP

              驗證:基本和摘要通路認證“,

              RFC 2617,1999年6月。

[RFC2818] Rescorla,E.,“HTTP在TLS”,RFC2818,2000年5月。

   [RFC3629] Yergeau,F。,“UTF-8中的一個轉換格式

              ISO10646“,STD63,RFC3629,2003年11月。

   [RFC3986]伯納斯 - 李,T.,菲爾丁,R.和L. Masinter,“制服

              資源辨別符(URI):通用文法“,STD66,

              RFC3986,2005年1月。

   [RFC4627]克羅克福德,D.,“應用/ JSON紙張類型

              JavaScript對象符号(JSON)“,RFC4627,2006年7月。

   [RFC4949] Shirey,R.,“網際網路安全術語表,第2版”

              RFC4949,2007年8月。

   [RFC5226] Narten,T.和H. Alvestrand,“指南編寫一個

              IANA考慮在RFC中節“,BCP26,RFC5226,

              2008年5月。

   [RFC5234]克羅克,D和P. Overell,“增強BNF的文法

              産品規格:ABNF“,STD68,RFC5234,2008年1月。

   [RFC5246]的Dierks,T和E. Rescorla,“傳輸層安全

              (TLS)協定1.2版“,RFC5246,2008年8月。

   [RFC6125]聖安德烈,P.和J·霍奇斯,“代表和

              基于域的應用服務身份驗證

              在使用X.509網際網路公鑰基礎設施

              (PKIX)在傳輸層的語境證書

              安全(TLS)“,RFC6125,2011年3月。

   [USASCII]美國國家标準協會,“編碼字元

              集 - 7位ASCII碼資訊

              交換“,ANSI X3.4,1986。

   [W3C.REC-html401-19991224]

              Raggett,D.,樂餐前,A.,和一雅各布,“HTML 4.01

              規範“,網際網路聯盟

              建議REC-html401-19991224,1999年12月,

              <http://www.w3.org/TR/1999/REC-html401-19991224>。

   [W3C.REC-XML-20081126]

              布雷,T.,保利,J.,Sperberg - 麥奎因,C.,MALER,E.,

              和F Yergeau,“可擴充标記語言(XML)1.0

              (第五版)“,網際網路聯盟

               建議REC-XML-20081126,2008年11月,

              <http://www.w3.org/TR/2008/REC-xml-20081126>。

12.2。參考資訊

   [OAuth的-HTTP-MAC]

              錘Lahav,E.,愛德,“HTTP驗證:MAC通路

              身份驗證“,在進步,2012年2月工作。

   [OAuth的SAML2]

              坎貝爾B.和C. Mortimore,“SAML2.0斷言承載

              對于OAuth的2.0“配置檔案,在進步,2012年9月的工作。

   [OAuth的THREATMODEL]

              Lodderstedt,T。編,McGloin,M。,和P.亨特“的OAuth2.0

              威脅模型和安全注意事項“,工作

              進展,2012年10月。

   [OAuth的WRAP]

              哈特,D.,版,湯姆,A.,伊頓,B.,和Y的Goland“的OAuth

              網絡資源授權配置檔案“,在工作中奮進,

              2010年1月。

   [RFC5849]錘Lahav,E.,“的的OAuth1.0協定”,RFC5849,

              2010年4月。

   [RFC6750]瓊斯,M和D哈特“的的OAuth2.0授權

              架構:承載令牌的使用“,RFC6750,2012年10月。

繼續閱讀