日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 人文社科 > 生活经验 >内容正文

生活经验

从协议入手,剖析OAuth2.0(译 RFC 6749)

發(fā)布時(shí)間:2023/11/27 生活经验 51 豆豆
生活随笔 收集整理的這篇文章主要介紹了 从协议入手,剖析OAuth2.0(译 RFC 6749) 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

1、介紹

? ? ??https://tools.ietf.org/html/rfc6749??

? ? ? 傳統(tǒng)的client-server授權(quán)模型,客戶端通過(guò)使用憑證(通常的用戶名和明文密碼)訪問(wèn)服務(wù)端受保護(hù)的資源,為了能夠讓第三方應(yīng)用程序訪問(wèn)受保護(hù)的資源,需要將憑證共享給第三方。

這就產(chǎn)生了一些問(wèn)題和限制:

  • 為了以后能夠持續(xù)訪問(wèn),第三方應(yīng)用程序可能會(huì)存儲(chǔ)憑證(用戶名、密碼)。
  • 盡管密碼本身存在安全弱點(diǎn),但服務(wù)器必須支持密碼驗(yàn)證。
  • 由于無(wú)法限制受保護(hù)資源的訪問(wèn)粒度和期限,第三方應(yīng)用程序獲得了對(duì)受保護(hù)資源的廣泛訪問(wèn)。
  • 除了修改密碼外,無(wú)法對(duì)單個(gè)第三方或者所有第三方吊銷憑證。

? ? OAuth通過(guò)引入一個(gè)授權(quán)層,并分離客戶端和資源擁有者成不同的角色來(lái)解決這個(gè)問(wèn)題。在OAuth中,通過(guò)發(fā)行不同的訪問(wèn)令牌(包括資源訪問(wèn)范圍、生命周期、其他訪問(wèn)屬性),而不是資源本身,來(lái)限制第三方應(yīng)用程序訪問(wèn)受保護(hù)資源(資源擁有者保護(hù)并宿主在資源服務(wù)器)的粒度和期限,而不是直接把憑證(用戶名和密碼)提供給客戶端。

? ? 例如:一個(gè)終端用戶(資源擁有者)可以授權(quán)一個(gè)打印服務(wù)(客戶端)來(lái)訪問(wèn)宿主在圖片共享服務(wù)器(資源服務(wù)器)上的受保護(hù)的圖片(資源),而不用共享憑證(用戶名和密碼)給打印服務(wù)(客戶端)。

1.1 角色

在OAuth中定義了4中角色:

資源所有者(resource owner)

能夠?qū)κ鼙Wo(hù)資源授予訪問(wèn)權(quán)的實(shí)體,當(dāng)資源的所有者是人時(shí),指的就是我們的終端用戶。?

? ? ? ??資源服務(wù)(resource server)

? ? ? ?宿主受保護(hù)的資源。能夠接受和響應(yīng)使用訪問(wèn)令牌(access tokens)對(duì)受保護(hù)資源的請(qǐng)求。

? ? ? ? 客戶端(client)

? ? ? ?對(duì)受保護(hù)資源發(fā)起請(qǐng)求的應(yīng)用程序。可能是一個(gè)服務(wù)、桌面應(yīng)用程序、或者其他設(shè)備。

? ? ? ??授權(quán)服務(wù)(authorization server)

? ? ? ?成功認(rèn)證資源所有者和獲得授權(quán)后,發(fā)行訪問(wèn)令牌給客戶端。

授權(quán)服務(wù)和資源服務(wù)之間的交互不在超過(guò)該規(guī)范,授權(quán)服務(wù)和資源服務(wù)可能是同一個(gè)服務(wù),也可能是不同的服務(wù)。單個(gè)授權(quán)服務(wù)器應(yīng)該可以發(fā)行由多個(gè)資源服務(wù)器接受的訪問(wèn)令牌。

1.2 協(xié)議流程

     +--------+                               +---------------+|        |--(A)- Authorization Request ->|   Resource    ||        |                               |     Owner     ||        |<-(B)-- Authorization Grant ---|               ||        |                               +---------------+|        ||        |                               +---------------+|        |--(C)-- Authorization Grant -->| Authorization || Client |                               |     Server    ||        |<-(D)----- Access Token -------|               ||        |                               +---------------+|        ||        |                               +---------------+|        |--(E)----- Access Token ------>|    Resource   ||        |                               |     Server    ||        |<-(F)--- Protected Resource ---|               |+--------+                               +---------------+
    (A) 客戶端向資源所有者請(qǐng)求授權(quán),這時(shí)授權(quán)請(qǐng)求可能直接提交給資源所有者,也可能提交給授權(quán)服務(wù)(扮演一個(gè)授權(quán)終端)。
    (B) 客戶端獲得一個(gè)資源所有者授權(quán)許可的憑證。授權(quán)許可類型可以使用規(guī)范中定義的4中類型,也可以自定類型(注意:授權(quán)服務(wù)需要支持自定義授權(quán)許可類型)。
    (C) 客戶端通過(guò)提交授權(quán)許可憑證給授權(quán)服務(wù),請(qǐng)求訪問(wèn)令牌。
    (d) 授權(quán)服務(wù)認(rèn)證客戶端并驗(yàn)證授權(quán)許可憑證,頒發(fā)訪問(wèn)令牌。
    (E) 客戶端通過(guò)提交已認(rèn)證的訪問(wèn)令牌,請(qǐng)求受保護(hù)的資源。
    (F) 資源服務(wù)驗(yàn)證訪問(wèn)令牌,如果有效,響應(yīng)請(qǐng)求。
注意:客戶端獲取獲取授權(quán)許可憑證的首選方法,就是使用授權(quán)服務(wù)作為一個(gè)中介。

1.3 授權(quán)許可

代表資源所有者授權(quán)的一個(gè)憑據(jù),可以用獲取訪問(wèn)令牌;OAuth2.0 協(xié)議定義了4中授權(quán)許可類型:授權(quán)碼模式、隱性模式、資源所有者密碼憑證、客戶端憑證。也可以自定義擴(kuò)展的授權(quán)許可類型。

1.3.1?授權(quán)碼模式(Authorization Code)

? ? ? ? 授權(quán)碼通過(guò)一個(gè)授權(quán)服務(wù)器獲得,授權(quán)服務(wù)在客戶端和資源所有者之間扮演一個(gè)中介。客戶端不是直接從資源所有者請(qǐng)求授權(quán),而是將資源所有者指向授權(quán)服務(wù)器,然后授權(quán)服務(wù)器在將資源所有者引導(dǎo)到客戶端,并攜帶授權(quán)碼。在重定向資源服務(wù)器到客戶端之前,授權(quán)服務(wù)器認(rèn)證資源所有者并獲得授權(quán)。注意授權(quán)服務(wù)器僅僅認(rèn)證資源所有者,并不會(huì)共享憑證給客戶端。

? ? ? ?授權(quán)碼提供了一些重要的安全好處,例如認(rèn)證客戶端,也可以用于直接獲取令牌,而不再需要經(jīng)過(guò)資源所有者,也可以暴露給其他人,包括資源所有者。

1.3.2?隱性模式(Implicit)

? ? ? ?隱性模式是授權(quán)碼模式的簡(jiǎn)化版,使用一個(gè)腳本語(yǔ)言(例如:JavaScript)優(yōu)化了客戶端的實(shí)現(xiàn)。在隱性模式中,資源所有者授權(quán)后,并不會(huì)為客戶端頒發(fā)授權(quán)碼,而是直接頒發(fā)一個(gè)訪問(wèn)令牌。因?yàn)椴](méi)有頒發(fā)中間憑證(例如:授權(quán)碼),授權(quán)許可類型是隱性的,故稱之為隱性模式。

? ? ? ?在隱式授權(quán)流中發(fā)布訪問(wèn)令牌時(shí),授權(quán)服務(wù)器不驗(yàn)證客戶端。在某些情況下,客戶端標(biāo)識(shí)可以通過(guò)傳遞訪問(wèn)令牌給客戶端的重定向URI來(lái)識(shí)別,訪問(wèn)令牌能夠暴露給資源所有者和其他資源所有者訪問(wèn)的應(yīng)用程序。隱性模式提高了某些客戶端的響應(yīng)速度和效率(例如:作為瀏覽器應(yīng)用程序?qū)崿F(xiàn)的客戶端),因?yàn)樗鼫p少了獲取訪問(wèn)令牌所需的往返次數(shù)。但是當(dāng)安全性要求很高的場(chǎng)景下,這種模式需要權(quán)衡,特別是當(dāng)授權(quán)碼模式可用的情況下。

1.3.3?客戶端的驗(yàn)證授權(quán)模式(Resource Owner Password Credentials)

? ? ? ?客戶端的驗(yàn)證授權(quán)(即用戶名和密碼)可以直接作為授權(quán)許可,來(lái)獲得訪問(wèn)令牌。只有當(dāng)資源所有者充分信任(例如:客戶端是整個(gè)系統(tǒng)的一部分,或者是特權(quán)應(yīng)用程序,或者其他授權(quán)許可不可用時(shí))客戶端的情況下,才使用該模式。盡管這種授權(quán)許可類型要求客戶端直接訪問(wèn)資源所有者的憑據(jù),但資源所有者憑證只能用于單個(gè)請(qǐng)求,來(lái)交換訪問(wèn)令牌。通過(guò)使用長(zhǎng)壽命的訪問(wèn)令牌或者刷新令牌,該模式消除了客戶端存儲(chǔ)資源所有者憑證(以備將來(lái)使用)的需求。

1.3.4?客戶端憑證模式(Client Credentials)

? ? ? ?當(dāng)授權(quán)范圍僅限于受客戶端控制的受保護(hù)資源時(shí),客戶端憑據(jù)可以用作授權(quán)許可。通常當(dāng)客戶以自己的名義行事時(shí)(此時(shí),客戶端也是一個(gè)資源所有者),客戶端許可會(huì)被使用。

1.4?訪問(wèn)令牌(Access Token)

? ? ? ?訪問(wèn)令牌是用于訪問(wèn)受保護(hù)資源的憑證。訪問(wèn)令牌是表示向客戶機(jī)頒發(fā)的授權(quán)的字符串,該字符串通常對(duì)客戶端不透明。該令牌帶有特定的范圍(控制資源訪問(wèn)粒度)和持續(xù)時(shí)間,由資源所有者授權(quán)許可,資源服務(wù)器和授權(quán)服務(wù)器強(qiáng)行執(zhí)行。令牌可能表示用于檢索授權(quán)信息的標(biāo)識(shí)符,也可能以可驗(yàn)證方式自包含授權(quán)信息(一個(gè)訪問(wèn)令牌字符串由一些數(shù)據(jù)和一個(gè)簽名信息組成)。

? ? ? ?訪問(wèn)令牌是一個(gè)抽象的層,里面放置著各種各樣資源服務(wù)器能夠理解的構(gòu)造信息(例如:資源的訪問(wèn)范圍、持續(xù)時(shí)間等等)。通過(guò)抽象,也使訪問(wèn)令牌的頒發(fā)不獲得授權(quán)許可更受限制,同時(shí)也消除了資源服務(wù)器需要理解多種認(rèn)證方法的需要。

? ? ? ?基于資源服務(wù)器安全(例如:加密屬性)的需求,訪問(wèn)令牌可能有不同的格式、結(jié)構(gòu)、使用方法。

1.5 刷新令牌(Refresh Token)

? ? ? ??刷新令牌是一個(gè)用于獲取訪問(wèn)令牌的憑證。刷新令牌由授權(quán)服務(wù)器頒發(fā)給客戶端,如果當(dāng)前的訪問(wèn)令牌無(wú)效或者過(guò)期時(shí),獲取一個(gè)新的訪問(wèn)令牌;或者強(qiáng)制再請(qǐng)求一個(gè)訪問(wèn)令牌(可能相同或更窄范圍的訪問(wèn)令牌)。與資源所有者相比,訪問(wèn)令牌有更短的生命周期和更少的權(quán)限。對(duì)于授權(quán)服務(wù)器而言,頒發(fā)一個(gè)刷新令牌是可選的,但是當(dāng)要頒發(fā)刷新令牌時(shí),一般情況下,刷新令牌是伴隨著訪問(wèn)令牌一起頒發(fā)的。

? ? ? ? 刷新令牌代表資源所有者對(duì)客戶端給予授權(quán)許可的字符串,通過(guò)對(duì)客戶端不透明。令牌表示用于檢索授權(quán)信息的標(biāo)識(shí)符。與訪問(wèn)令牌不同,刷新令牌僅用于授權(quán)服務(wù)器,且從不發(fā)送到資源服務(wù)器。

  +--------+                                           +---------------+|        |--(A)------- Authorization Grant --------->|               ||        |                                           |               ||        |<-(B)----------- Access Token -------------|               ||        |               & Refresh Token             |               ||        |                                           |               ||        |                            +----------+   |               ||        |--(C)---- Access Token ---->|          |   |               ||        |                            |          |   |               ||        |<-(D)- Protected Resource --| Resource |   | Authorization || Client |                            |  Server  |   |     Server    ||        |--(E)---- Access Token ---->|          |   |               ||        |                            |          |   |               ||        |<-(F)- Invalid Token Error -|          |   |               ||        |                            +----------+   |               ||        |                                           |               ||        |--(G)----------- Refresh Token ----------->|               ||        |                                           |               ||        |<-(H)----------- Access Token -------------|               |+--------+           & Optional Refresh Token        +---------------+圖 2: 刷新一個(gè)過(guò)期的訪問(wèn)令牌
 (A) 客戶端請(qǐng)求授權(quán)服務(wù)器的認(rèn)證,并提交授權(quán)許可。
 (B) 授權(quán)服務(wù)器認(rèn)證客戶端并驗(yàn)證授權(quán)許可后,頒發(fā)訪問(wèn)令牌和刷新令牌。
 (C) 客戶端向資源服務(wù)器發(fā)出受保護(hù)的資源請(qǐng)求,并提交訪問(wèn)令牌。
 (D) 資源服務(wù)器驗(yàn)證訪問(wèn)令牌后,把受保護(hù)的資源響應(yīng)給客戶端。
 (E) 步驟(C)和(D)重復(fù),直到訪問(wèn)令牌過(guò)期。如果客戶端知道訪問(wèn)令牌過(guò)期,就會(huì)跳到步驟(G)。否則,它將創(chuàng)建另一個(gè)受保護(hù)的資源請(qǐng)求。
 (F) 由于訪問(wèn)令牌無(wú)效,資源服務(wù)器返回一個(gè)無(wú)效的令牌錯(cuò)誤。
 (G) 客戶端請(qǐng)求一個(gè)新的訪問(wèn)令牌,并提交刷新令牌。客戶端身份驗(yàn)證需求基于客戶機(jī)類型和授權(quán)服務(wù)器策略。 
 (H) 授權(quán)服務(wù)器認(rèn)證客戶端并驗(yàn)證刷新令牌后,如果有效,頒發(fā)一個(gè)新的訪問(wèn)令牌(此時(shí),是否頒發(fā)一個(gè)新的刷新令牌是可選的)。

1.6 TLS版本(TLS Version)

? ? ? ?基于廣泛部署和已知的安全漏洞,TLS版本都是隨著時(shí)間變化而變化的。TLS版本1是最廣泛部署的版本,將提供最廣泛的互操作性。具體實(shí)現(xiàn)還可以支持滿足其安全要求的附加傳輸層安全機(jī)制。

1.7 HTTP重定向(HTTP Redirections)

? ? ? ?該規(guī)范充分利用了Http重定向,客戶端和授權(quán)服務(wù)器將資源所有者用戶代理重定向到另外的目的地。雖然規(guī)范中的示例顯示了HTTP 302狀態(tài)代碼的使用,但是允許用戶代理運(yùn)用任何其他方法來(lái)完成此重定向,并被認(rèn)為是實(shí)現(xiàn)細(xì)節(jié)。

1.8?互操作性(Interoperability)

? ? ? ?OAuth 2提供了一個(gè)明確的安全特性豐富的授權(quán)框架。然而,作為一個(gè)豐富且高度可擴(kuò)展的框架,有許多可選組件,這一規(guī)范本身可能會(huì)產(chǎn)生廣泛的非互操作性實(shí)現(xiàn)。此外,該規(guī)范還提供部分必需的部分或完全未定義的組件(例如,客戶端注冊(cè)、授權(quán)服務(wù)器功能、端點(diǎn)發(fā)現(xiàn))。沒(méi)有這些組件,針對(duì)一個(gè)特定的授權(quán)服務(wù)器,資源服務(wù)器的互操作,客戶端必須手動(dòng)配置。這個(gè)框架的設(shè)計(jì)帶有明確的期望,未來(lái)的工作將定義實(shí)現(xiàn)完整Web規(guī)模互操作性所必需的規(guī)范配置文件和擴(kuò)展。

1.9?符號(hào)約定(Notational Conventions)

? ? ? ?該協(xié)議中的關(guān)鍵詞?"MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT","SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL"在?[RFC2119] 中被詳細(xì)的描述。該規(guī)范使用[RFC5234]中的?the Augmented Backus-Naur Form (ABNF)符號(hào)規(guī)范。此外,規(guī)則的URI引用被包含在“統(tǒng)一資源標(biāo)識(shí)符(URI):通用語(yǔ)法”[ rfc3986 ]中。某些安全相關(guān)的術(shù)語(yǔ)被定義在[RFC4949]中,這些術(shù)語(yǔ)包括但不限于?"attack", "authentication", "authorization", "certificate","confidentiality", "credential", "encryption", "identity", "sign","signature", "trust", "validate", and "verify"。除非另有說(shuō)明,所有協(xié)議參數(shù)名稱和值都是區(qū)分大小寫(xiě)的。

2、客戶端注冊(cè)(Client Registration)

? ? ? ?在啟動(dòng)協(xié)議之前,客戶端使用授權(quán)服務(wù)器進(jìn)行注冊(cè)。客戶端通過(guò)授權(quán)服務(wù)器注冊(cè)的方式超過(guò)了該協(xié)議的范圍,但是一般都是終端用戶通過(guò)一個(gè)HTML表單提交注冊(cè)。客戶端注冊(cè)并不需要客戶端和授權(quán)服務(wù)器的直接交互,只要授權(quán)服務(wù)器支持,可以使用各種各樣的放肆進(jìn)行注冊(cè)并獲取已注冊(cè)客戶端的屬性。例如:可以使用一個(gè)自發(fā)布或者第三方發(fā)布的聲明(assertion)或者授權(quán)服務(wù)器通過(guò)一個(gè)信任的通道來(lái)進(jìn)行客戶端的發(fā)現(xiàn)。

? ? ? ?當(dāng)注冊(cè)一個(gè)客戶端時(shí),客戶端開(kāi)發(fā)人員應(yīng)該:

  • 指定客戶端類型
  • 提供客戶端重定向的URI
  • 包括授權(quán)服務(wù)器所要求的任何其他信息(例如,應(yīng)用程序名稱,網(wǎng)站,描述,Logo圖像,服務(wù)條款等等)。

2.1 客戶端類型(Client Types)

? ? ? ? ? ? ? 基于客戶端和授權(quán)服務(wù)器,安全認(rèn)證的能力(例如:客戶憑證的保密性),OAuth定義了兩種類型的客戶端。

? ? ? ? ? ? ?保密類型(confidential

? ? ? ? ? ? ?能夠維護(hù)其憑證的保密性的客戶端(例如:客戶端在一個(gè)安全的服務(wù)器上,客戶端的訪問(wèn)受到限制),能夠通過(guò)其他方式來(lái)保證客戶端認(rèn)證的安全性。

? ? ? ? ? ? ?公開(kāi)類型pulic

? ? ? ? ? ???不能夠維護(hù)其憑證的保密性的客戶端(例如:在資源所有者的設(shè)備上執(zhí)行客戶端,如已安裝的本機(jī)應(yīng)用程序或基于Web瀏覽器的應(yīng)用程序),不能夠通過(guò)其他方式來(lái)保證客戶端認(rèn)證的安全性。

? ? ? ? ? ? ?客戶機(jī)類型指定是基于授權(quán)服務(wù)器對(duì)安全認(rèn)證的定義及其可接受的客戶端證書(shū)的暴露級(jí)別。授權(quán)服務(wù)器不應(yīng)該對(duì)客戶端類型做出假設(shè)。客戶機(jī)可以實(shí)現(xiàn)為一組分布式組件,每個(gè)組件具有不同的客戶機(jī)類型和安全上下文(例如,一個(gè)分布式客戶端既有基于服務(wù)器的機(jī)密組件,又有基于公共瀏覽器的組件);如果傳統(tǒng)授權(quán)服務(wù)器不能夠?qū)@樣的客戶端提供支持或者注冊(cè)引導(dǎo),客戶應(yīng)將每個(gè)組件注冊(cè)為單獨(dú)的客戶機(jī)。

? ? ? ? ? ? ?本規(guī)范是圍繞以下客戶端配置文件設(shè)計(jì)的:

? ? ? ? ? ? ?web 應(yīng)用程序web application

? ? ? ? ? ? ?Web應(yīng)用程序是在Web服務(wù)器上運(yùn)行的機(jī)密客戶端資源所有者通過(guò)在其使用的設(shè)備上的通過(guò)用戶代理(瀏覽器)中呈現(xiàn)的HTML用戶界面訪問(wèn)客戶端。客戶端憑據(jù)以及向客戶機(jī)發(fā)出的任何訪問(wèn)令牌都存儲(chǔ)在Web服務(wù)器上,不會(huì)被資源所有者暴露或訪問(wèn)??

? ? ? ? ? ? ?基于用戶代理的應(yīng)用程序user-agent-based application

? ? ? ? ? ? ?基于用戶代理的應(yīng)用程序是一個(gè)公共客戶端,其中客戶端代碼從Web服務(wù)器下載并在由資源所有者所使用的設(shè)備的用戶代理內(nèi)執(zhí)行。?所以,對(duì)于資源所有者,協(xié)議數(shù)據(jù)和憑證可以很容易獲得。由于這些應(yīng)用程序駐留在用戶代理中,所以在請(qǐng)求授權(quán)時(shí)可以無(wú)縫地使用用戶代理功能。

? ? ? ? ? ? ?本地應(yīng)用程序native application

? ? ? ? ? ? ?本機(jī)應(yīng)用程序是安裝在資源所有者使用的設(shè)備上并執(zhí)行的公共客戶機(jī)。對(duì)于資源所有者,協(xié)議數(shù)據(jù)和證書(shū)是可得到的。假設(shè)可以提取應(yīng)用程序中包含的任何客戶端身份驗(yàn)證憑據(jù)。另一方面,動(dòng)態(tài)發(fā)布的憑據(jù)(如訪問(wèn)令牌或刷新令牌)可以收到可接受的保護(hù)級(jí)別。至少,這些憑據(jù)被保護(hù)免受應(yīng)用程序可能交互的惡意服務(wù)器的保護(hù)。某些情況下,這些應(yīng)用程序也會(huì)受到保護(hù)免受駐留在同一設(shè)備的其他應(yīng)用程序的干擾。

? ? ?2.2 客戶端標(biāo)識(shí)(Client?Identifier)

? ? ? ? ? ?授權(quán)服務(wù)器向注冊(cè)客戶端頒發(fā)客戶端標(biāo)識(shí)符------表示客戶端提供的注冊(cè)信息的唯一字符串。客戶機(jī)標(biāo)識(shí)符不是秘密,它暴露給資源所有者,不能單獨(dú)用于客戶端身份驗(yàn)證。

客戶端標(biāo)識(shí)符對(duì)授權(quán)服務(wù)器是唯一的。

? ? ? ? ? ?客戶標(biāo)識(shí)符字符串大小該規(guī)范未定義。客戶機(jī)應(yīng)該避免對(duì)標(biāo)識(shí)符大小做出假設(shè)。授權(quán)服務(wù)器應(yīng)該記錄它所頒發(fā)的任何標(biāo)識(shí)符的大小。

? ? ?2.3 客戶端認(rèn)證(Client Authentication)

? ? ? ? ? ?如果客戶機(jī)類型是機(jī)密的,客戶機(jī)和授權(quán)服務(wù)器建立適合于授權(quán)服務(wù)器的安全需求的客戶端身份驗(yàn)證方法。授權(quán)服務(wù)器可以接受滿足其安全要求的任何形式的客戶端身份驗(yàn)證。機(jī)密客戶機(jī)通常發(fā)布(或建立)一組客戶端證書(shū),用于與授權(quán)服務(wù)器進(jìn)行身份驗(yàn)證(例如,密碼、公鑰/私鑰對(duì))。授權(quán)服務(wù)器可以和公共客戶端建立客戶端認(rèn)證方法。但是,授權(quán)服務(wù)器不能依賴公共客戶端身份驗(yàn)證,以識(shí)別客戶機(jī)。在每個(gè)請(qǐng)求中,客戶端不能使用多個(gè)身份驗(yàn)證方法。

? ? ? ? ? ? ?2.3.1?客戶端密碼(Client Password)

? ? ? ? ? ? ? ? ? ? ?擁有客戶端密碼的客戶機(jī)可以使用HTTP基本身份驗(yàn)證方案和授權(quán)服務(wù)器進(jìn)行身份驗(yàn)證。客戶端標(biāo)識(shí)使用"application/x-www-form-urlencoded"編碼算法進(jìn)行編碼,編碼值用作用戶名。客戶端密碼使用相同的算法進(jìn)行編碼,并用作密碼。授權(quán)服務(wù)器必須支持HTTP基本身份驗(yàn)證方案,以驗(yàn)證客戶端密碼并頒發(fā)密碼。

? ? ? ? ? ? ? ? ? ? ?例如:授權(quán) Basic?czZCaGRSa3F0Mzo3RmpmcDBaQnIxS3REUmJuZlZkbUl3,還有一種可選的方案就是,在請(qǐng)求頭中包含兩個(gè)參數(shù)(client_id和client_secret),這種方案一般不推薦,除非客戶端不能夠使用?HTTP Basic authentication scheme (或者其他的基于密碼的HTTP authentication scheme)。參數(shù)只能在請(qǐng)求體中傳輸,不能包含在請(qǐng)求URI中。

? ? ? ? ? ? ?2.3.1?其他認(rèn)證方法(Other Authentication Methods)

? ? ? ? ? ? ? ? ? ? ?授權(quán)服務(wù)器可以支持符合其安全要求的任何合適的HTTP認(rèn)證方案。在使用其他身份驗(yàn)證方法時(shí),授權(quán)服務(wù)器必須定義客戶端標(biāo)識(shí)符(注冊(cè)記錄)和身份驗(yàn)證方案之間的映射。

? ? ?2.4?未注冊(cè)的客戶端(Unregistered Clients)

? ? ? ? ? ? ? 該規(guī)范沒(méi)有包含未注冊(cè)的客戶端的使用。這種客戶機(jī)的使用超出了本規(guī)范的范圍,需要對(duì)其互操作性影響進(jìn)行額外的安全性分析和審查。

3、協(xié)議的端點(diǎn)(Protocol Endpoints)

? ? ??授權(quán)處理利用兩個(gè)授權(quán)服務(wù)器終結(jié)點(diǎn):

  • 授權(quán)端點(diǎn)

? ? ? ? ??客戶端通過(guò)用戶代理重定向到該端點(diǎn)獲得資源所有者的授權(quán)。

  • 令牌端點(diǎn)

? ? ? ? ? 客戶機(jī)用來(lái)交換訪問(wèn)令牌的授權(quán)許可,通常具有客戶端身份驗(yàn)證。

  • 重定向端點(diǎn)

? ? ? ? ? 授權(quán)服務(wù)器用于通過(guò)資源所有者用戶代理將包含授權(quán)憑證的響應(yīng)返回給客戶端。

? ? ? 并不是每一個(gè)授權(quán)許可類型都會(huì)使用這些終結(jié)點(diǎn);當(dāng)然擴(kuò)展的授權(quán)許可類型可以定義自己的終結(jié)點(diǎn)。

? ? 3.1 授權(quán)端點(diǎn)(Authorization Endpoint)

? ? ? ? ? ? ? 授權(quán)終結(jié)點(diǎn)與資源所有者交互獲取一個(gè)授權(quán)許可。首先授權(quán)服務(wù)器必須審核資源所有者的身份信息(授權(quán)服務(wù)器采用什么方式認(rèn)證資源所有者的身份(例如:用戶名、密碼、會(huì)話Cookie),超出了本規(guī)范的訪問(wèn))。

? ? ? ? ? ? ? 授權(quán)URI可能包含?"application/x-www-form-urlencoded"? 格式的必須的查詢組件(query parameters)。端點(diǎn)URI不能包含碎片組件(fragment component)。

? ? ? ? ? ? ??由于對(duì)授權(quán)端點(diǎn)的請(qǐng)求,導(dǎo)致用戶身份驗(yàn)證和明文證書(shū)的傳輸。當(dāng)發(fā)送請(qǐng)求到授權(quán)端點(diǎn)時(shí),授權(quán)服務(wù)器必須要求使用TLS。授權(quán)服務(wù)器必須支持“Get”方法,也可以支持“Post”方法。

? ? ? ? ? ? ? 發(fā)送請(qǐng)求時(shí),沒(méi)有值的參數(shù)會(huì)被省略。授權(quán)服務(wù)器必須忽略無(wú)法識(shí)別的請(qǐng)求參數(shù)。請(qǐng)求和響應(yīng)參數(shù)不應(yīng)包含超過(guò)一次。

? ? 3.1.1?響應(yīng)類型(Response Type)

? ? ? ? ? ? ? 授權(quán)終結(jié)點(diǎn)被授權(quán)碼模式和隱式模式使用。

? ? ? ? ? ? ? 客戶端通過(guò)下列參數(shù)來(lái)通知授權(quán)服務(wù)器期望建立的授權(quán)許可類型流:

? ? ? ? ? ? ??response_type:必須。授權(quán)碼模式時(shí),該值必須為“code”。隱性模式時(shí),該值必須為“token”。還可以為我們自己注冊(cè)的擴(kuò)展值。如果一個(gè)授權(quán)請(qǐng)求確實(shí)該參數(shù),或者授權(quán)服務(wù)器無(wú)法理解該參數(shù),將返回一個(gè)錯(cuò)誤的響應(yīng)。

? ? 3.1.2?重定向終結(jié)點(diǎn)(Redirection Endpoint)

? ? ? ? ? ? ??在完成與資源所有者的交互之后,授權(quán)服務(wù)器將資源所有者的用戶代理引導(dǎo)回客戶端。重定向終結(jié)點(diǎn)URI必須為完整的URI,端點(diǎn)的URI可能包括一個(gè)“application/x-www-form-urlencoded”格式的查詢組件,但不能包含“fragment?”組件。

? ? ?3.1.2.1 終結(jié)點(diǎn)請(qǐng)求機(jī)密性(Endpoint Request Confidentiality)

? ? ? ? ? ? ??當(dāng)請(qǐng)求的響應(yīng)類型為“code”或“token”時(shí),或者當(dāng)我們要傳送機(jī)密的憑證信息時(shí),這個(gè)時(shí)候需要使用TLS。該規(guī)范并不強(qiáng)制使用TLS,因?yàn)樵诰帉?xiě)此規(guī)范時(shí),要求客戶機(jī)部署TLS是許多客戶機(jī)開(kāi)發(fā)人員的一個(gè)重要障礙。如果TLS不可用,在重定向到授權(quán)服務(wù)器之前,應(yīng)該警告資源所有者不安全端點(diǎn)的情況。

? ? ? ? ? ? ??傳輸層安全性的缺乏會(huì)嚴(yán)重影響客戶端和授權(quán)訪問(wèn)的受保護(hù)資源的安全性。當(dāng)授權(quán)過(guò)程作為客戶端委托的終端用戶身份驗(yàn)證的一種形式時(shí)(例如:第三方登錄服務(wù)),傳輸層安全性的使用尤為重要。

? ? ?3.1.2.1?注冊(cè)要求(Registration Requirements)

? ? ? ? ? ? ? 授權(quán)服務(wù)器只接受下面的客戶端的注冊(cè):

  • 公共客戶端
  • 使用隱式授權(quán)類型的機(jī)密客戶端

? ? ? ? ? ? ? 在使用授權(quán)服務(wù)器之前,應(yīng)該要求所有的客戶端來(lái)注冊(cè)他們的完成授權(quán)后的重定向端點(diǎn)。客戶機(jī)可以使用“state”請(qǐng)求參數(shù)來(lái)實(shí)現(xiàn)每個(gè)請(qǐng)求定制。如果要求完全重定向URI的注冊(cè)是不可能的,授權(quán)服務(wù)器應(yīng)該要求URI scheme, authority, and path的注冊(cè)(允許客戶端動(dòng)態(tài)的改變重定向URI的查詢組)。授權(quán)服務(wù)器也允許客戶端注冊(cè)多個(gè)重定向端點(diǎn)。缺少重定向URI注冊(cè)要求,增加攻擊者利用授權(quán)端點(diǎn)的風(fēng)險(xiǎn)。

? ? ??3.1.2.1?動(dòng)態(tài)配置(Dynamic Configuration)

? ? ? ? ? ? ??如果多個(gè)重定向URI已注冊(cè),或者只有重定向URI的一部分已被注冊(cè),或者重定向URL沒(méi)有被注冊(cè),則在客戶端的授權(quán)請(qǐng)求的查詢組件中,必須包含"redirect_uri"參數(shù)。當(dāng)一個(gè)重定向的URI被包含在授權(quán)請(qǐng)求中時(shí),授權(quán)服務(wù)器必須跟以注冊(cè)的客戶端重定向URI作比較和匹配,如果沒(méi)有就跟客戶端本身的URL作比較。

? ? ?3.1.2.2?無(wú)效端點(diǎn)(Invalid Endpoint)

? ? ? ? ? ? ??如果由于授權(quán)請(qǐng)求參數(shù)缺失,無(wú)效,或者不能匹配無(wú)效的URI,授權(quán)服務(wù)器應(yīng)該告知一個(gè)錯(cuò)誤給資源所有者。

? ? ?3.1.2.2?端點(diǎn)內(nèi)容(Endpoint Content)

? ? ? ? ? ? ? 返回給客戶端的請(qǐng)求通常是一個(gè)HTML文檔。如果HTML響應(yīng)作為重定向請(qǐng)求的結(jié)果直接送達(dá),則HTML文檔中包含的任何腳本都將執(zhí)行對(duì)重定向URI及其所包含的憑據(jù)的完全訪問(wèn)。在重定向端點(diǎn)的響應(yīng)中,客戶端不應(yīng)該包含任何第三方的腳本,相反它應(yīng)該提取出憑證,然后重定向用戶代理到另外的不會(huì)暴露憑證信息的端點(diǎn)。如果,包含第三方腳本,客戶端必須保證首先執(zhí)行自己的腳本。

? ? 3.2 令牌端點(diǎn)(Token Endpoint)

? ? ? ? ? ? ? 令牌端點(diǎn)被客戶端用來(lái)獲取訪問(wèn)令牌(通過(guò)呈現(xiàn)一個(gè)包含授權(quán)信息的授權(quán)許可)或者刷新令牌。除了隱式授權(quán)類型(訪問(wèn)令牌是直接頒發(fā)的。)外,其他的三種授權(quán)許可類型都會(huì)使用令牌端點(diǎn)。? ? ??

? ? ? ? ? ? ? 客戶端獲取令牌端點(diǎn)地址的方法超過(guò)了本規(guī)范的范疇,但是通常都是在一個(gè)服務(wù)文檔中提供。

? ? ? ? ? ? ? 因?yàn)閷?duì)令牌端點(diǎn)的請(qǐng)求會(huì)涉及到憑證的明文傳輸,所有要求必須使用TLS,并且必須使用Post方法。

? ? ? 3.2.1?客戶端授權(quán)(Client Authentication)

? ? ? ? ? ? ? 當(dāng)向令牌端點(diǎn)發(fā)起請(qǐng)求時(shí),為機(jī)密客戶端和其他的客戶端頒發(fā)的客戶端憑證必須和授權(quán)服務(wù)器進(jìn)行授權(quán)。

  • 強(qiáng)制頒發(fā)刷新令牌和授權(quán)碼給客戶端。當(dāng)授權(quán)碼被以一種非安全的方式傳輸?shù)街囟ㄏ蚨它c(diǎn),或者重定向URI沒(méi)有被完全的注冊(cè)。
  • 通過(guò)禁用客戶端或更改其憑據(jù)來(lái),從受損客戶機(jī)中恢復(fù),從而防止攻擊者濫用被盜的刷新令牌。畢竟改變單一的一組客戶端憑證比注銷整個(gè)刷新令牌要快的多。
  • 實(shí)現(xiàn)認(rèn)證管理最佳實(shí)踐,需要定期證書(shū)輪換。實(shí)現(xiàn)整套刷新令牌的輪換是具有挑戰(zhàn)性的,而實(shí)現(xiàn)單一的客戶端證書(shū)輪換非常的簡(jiǎn)單。

? ? ? ? ? ? ?當(dāng)發(fā)送請(qǐng)求的令牌端點(diǎn)時(shí),客戶可以使用“client_id”請(qǐng)求參數(shù)標(biāo)識(shí)本身。在通過(guò)“authorization_code”和“grant_type”對(duì)令牌端點(diǎn)發(fā)起請(qǐng)求時(shí),未經(jīng)身份驗(yàn)證的客戶端必須發(fā)送“client_id”以防止自己無(wú)意間接受一個(gè)來(lái)自于其他客戶端“client_id”的代碼。這樣也防止客戶端的授權(quán)碼被替換,但是這并不對(duì)受保護(hù)的資源提供額外的安全性保障。

? ? 3.2 訪問(wèn)令牌范圍(Access Token Scope)

? ? ? ? ? ? ?通過(guò)在請(qǐng)求中添加參數(shù)"scope",授權(quán)端點(diǎn)和令牌端點(diǎn)允許客戶端指定請(qǐng)求所訪問(wèn)的范圍。同樣的,授權(quán)服務(wù)器也是用“scope”響應(yīng)參數(shù)來(lái)表示頒發(fā)給客戶端的訪問(wèn)令牌的范圍。“scope”參數(shù)的值表示為空格分隔的、區(qū)分大小寫(xiě)的字符串的列表。該字符串由授權(quán)服務(wù)器定義。

? ? ? ? ? ? 基于授權(quán)服務(wù)器的策略和資源所有者的指示,授權(quán)服務(wù)器可能會(huì)完全或者部分忽略客戶端請(qǐng)求的“scope”參數(shù)。如果已發(fā)布的訪問(wèn)令牌范圍與客戶端請(qǐng)求的范圍不同,授權(quán)服務(wù)器必須包含“scope”響應(yīng)參數(shù),告知客戶端實(shí)際范圍授予。

? ? ? ? ? ??如果客戶端在請(qǐng)求授權(quán)時(shí)省略了范圍參數(shù),則授權(quán)服務(wù)器必須使用預(yù)先定義的范圍默認(rèn)值處理請(qǐng)求,或者失敗指示無(wú)效范圍的請(qǐng)求。授權(quán)服務(wù)器應(yīng)該記錄它的范圍要求和默認(rèn)值。

4、獲取授權(quán)(Obtaining Authorization)

? ? ??為了獲得一個(gè)訪問(wèn)令牌,客戶端需要向資源所有者獲得授權(quán),授權(quán)以許可(authorization grant)的形式被呈現(xiàn)。OAuth定義了4中許可類型:authorization code(授權(quán)碼), implicit(隱性),resource owner password credentials(資源所有者密碼憑證), and client credentials(客戶端憑證)。它也提供了擴(kuò)展的機(jī)制來(lái)定義額外的授權(quán)許可類型。

? ? 4.1 授權(quán)碼許可類型(Authorization Code Grant)

? ? ? ? ? ? ? 授權(quán)碼許可類型可以用于獲取訪問(wèn)令牌和刷新令牌,它是為機(jī)密客戶端憑證優(yōu)化的。由于這是一個(gè)基于重定向的流程,客戶端必須能夠與資源所有者的用戶代理(通常是一個(gè)webbrowser)進(jìn)行交互,并能夠接收來(lái)自于授權(quán)服務(wù)器的傳入請(qǐng)求(重定向)。

     +----------+| Resource ||   Owner  ||          |+----------+^|(B)+----|-----+          Client Identifier      +---------------+|         -+----(A)-- & Redirection URI ---->|               ||  User-   |                                 | Authorization ||  Agent  -+----(B)-- User authenticates --->|     Server    ||          |                                 |               ||         -+----(C)-- Authorization Code ---<|               |+-|----|---+                                 +---------------+|    |                                         ^      v(A)  (C)                                        |      ||    |                                         |      |^    v                                         |      |+---------+                                      |      ||         |>---(D)-- Authorization Code ---------'      ||  Client |          & Redirection URI                  ||         |                                             ||         |<---(E)----- Access Token -------------------'+---------+       (w/ Optional Refresh Token)
注意:通過(guò)上圖可以看到,到客戶端經(jīng)過(guò)用戶代理時(shí),(A)、(B)、(C)被分成了兩步。
圖3:授權(quán)碼流程
(A)客戶端通過(guò)重定向資源所有者的用戶代理重定向到授權(quán)服務(wù)器(注意資源服務(wù)與授權(quán)服務(wù)不是同一臺(tái)服務(wù)器),并在請(qǐng)求中包含客戶端標(biāo)識(shí)符、請(qǐng)求的范圍、本地狀態(tài)、重定向URI等參數(shù),一旦授權(quán)服務(wù)器許可或者拒絕后,就會(huì)返回到用戶代理。
(B)授權(quán)服務(wù)器認(rèn)證資源所有者(通過(guò)用戶代理),確定資源所有者的許可,或者拒絕客戶端的訪問(wèn)請(qǐng)求。
(C)假如資源所有者許可訪問(wèn),根據(jù)早前在客戶端認(rèn)證階段提供的重定向URI,并攜帶參數(shù)授權(quán)碼和本地狀態(tài)(早前在客戶端認(rèn)證階段提供的),重定向用戶代理到客戶端。
(D)通過(guò)在請(qǐng)求中包含授權(quán)碼和重定向URI,客戶端從令牌端點(diǎn)獲取訪問(wèn)令牌。
(E)授權(quán)服務(wù)器驗(yàn)證授權(quán)碼和重定向URI(和客戶端認(rèn)證階段提供的重定向URI進(jìn)行匹配),如果有效,攜帶訪問(wèn)令牌和刷新令牌(可選)響應(yīng)返回。

? ? 4.1.1?授權(quán)請(qǐng)求(Authorization Request)

? ? ? ? ? ? ? 通過(guò)添加下列參數(shù)到查詢組件(query component)中(注意使用?"application/x-www-form-urlencoded" ),發(fā)起對(duì)授權(quán)端點(diǎn)URI的請(qǐng)求。

? ? ? ? ? ? ??response_type(請(qǐng)求類型):必須,值必須為“code”

? ? ? ? ? ? ? client_id(客戶端身份標(biāo)識(shí)):必須

? ? ? ? ? ? ??redirect_uri(重定向URI):可選

? ? ? ? ? ? ??scope(請(qǐng)求的范圍):可選

? ? ? ? ? ? ??state(客戶端本地狀態(tài)):必須,客戶機(jī)用來(lái)維護(hù)請(qǐng)求和回調(diào)之間的狀態(tài)的不透明值。當(dāng)將用戶代理重定向回客戶端時(shí),授權(quán)服務(wù)器包含此值。該參數(shù)應(yīng)用于防止跨站點(diǎn)請(qǐng)求偽造。

? ? ? ? ? ? ? 通過(guò)Http重定向響應(yīng)或者其他用戶代理能夠接受的方式,客戶端將資源所有者導(dǎo)向已構(gòu)建好的URI。例如,客戶端指導(dǎo)用戶代理來(lái)發(fā)起下面的Http請(qǐng)求:

? ? ? ? ? ? ??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

? ? ? ? ? ? ? 授權(quán)服務(wù)器驗(yàn)證請(qǐng)求來(lái)保證所有必須的參數(shù)都存在和有效。如果請(qǐng)求有效,授權(quán)服務(wù)器通過(guò)認(rèn)證資源所有者來(lái)獲得授權(quán)決定。如果授權(quán)決定被許可,授權(quán)服務(wù)器就會(huì)重定向用戶代理到客戶端提供的重定向URI。

? ? 4.1.2?授權(quán)響應(yīng)(Authorization Response)

? ? ? ? ? ? ? 如果資源所有者許可訪問(wèn)請(qǐng)求,授權(quán)服務(wù)頒發(fā)一個(gè)授權(quán)碼,并以"application/x-www-form-urlencoded"格式添加下列參數(shù)到重定向URI查詢組件(query)中。

? ? ? ? ? ? ? code:必須。由授權(quán)服務(wù)器生成的授權(quán)碼。授權(quán)碼被頒發(fā)后,必須短暫過(guò)期,降低泄露風(fēng)險(xiǎn),最長(zhǎng)的生命周期推薦10分鐘,客戶端只能使用一次授權(quán)碼;如果被第二次使用時(shí),授權(quán)服務(wù)器必須注銷頒發(fā)給該授權(quán)碼的所有令牌。

? ? ? ? ? ? ? state:狀態(tài)。如果該參數(shù)在之前的客戶端授權(quán)請(qǐng)求中被包含,則返回時(shí)必須原封不動(dòng)的帶上此參數(shù)。

? ? ? ? ? ? ? 例如:授權(quán)服務(wù)器通過(guò)發(fā)送下面的Http 響應(yīng)重定向用戶代理到客戶端。

? ? ? ? ? ? ??HTTP/1.1 302 Found

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

? ? ?客戶端必須忽略不能識(shí)別的響應(yīng)參數(shù),授權(quán)碼字符串的長(zhǎng)度本規(guī)范并未定義。客戶端應(yīng)該避免對(duì)授權(quán)碼長(zhǎng)度的猜測(cè),授權(quán)服務(wù)器應(yīng)該記錄下所頒發(fā)的授權(quán)碼的長(zhǎng)度。

? ? 4.1.2.1 錯(cuò)誤響應(yīng)(Error Response)

? ? ? ? ? ? ? 如果由于缺失、無(wú)效、不匹配重定向URI和客戶端標(biāo)識(shí)符,授權(quán)服務(wù)器應(yīng)該通知資源所有者錯(cuò)誤,不能自動(dòng)的重定向用戶代理到無(wú)效的重定向URI。

? ? ? ? ? ? ? 如果資源所有者拒絕客戶端的訪問(wèn)請(qǐng)求,授權(quán)碼服務(wù)器應(yīng)該使用"application/x-www-form-urlencoded"格式添加下列參數(shù)到重定向URI的查詢組件(query component)中。

? ? ? ? ? ? ? error:必須。一個(gè)簡(jiǎn)單的、來(lái)自于包含下面參數(shù)的?ASCII 錯(cuò)誤代碼。

? ? ? ? ? ? ? ? ?invalid_request(無(wú)效請(qǐng)求):請(qǐng)求缺少所需的參數(shù),包括無(wú)效的參數(shù)值,其中包含一次以上的參數(shù),或者是其他格式錯(cuò)誤的。

? ? ? ? ? ? ? ? ?unauthorized_client(未授權(quán)的客戶端):客戶端沒(méi)有授權(quán)使用此方法請(qǐng)求授權(quán)碼。

? ? ? ? ? ? ? ? ?access_denied(訪問(wèn)拒絕):資源所有者或者授權(quán)服務(wù)器拒絕請(qǐng)求。

? ? ? ? ? ? ? ? ?unsupported_response_type(不支持的響應(yīng)類型):授權(quán)服務(wù)器不支持使用此方法獲得授權(quán)代碼。

? ? ? ? ? ? ? ? ?invalid_scope(無(wú)效的請(qǐng)求范圍):請(qǐng)求的范圍無(wú)效、未知或格式錯(cuò)誤。

? ? ? ? ? ? ? ? ?server_error(服務(wù)器錯(cuò)誤):授權(quán)服務(wù)器遇到意外情況,阻止它執(zhí)行請(qǐng)求(因?yàn)楫?dāng)重定向時(shí),一個(gè)500內(nèi)部錯(cuò)誤Http狀態(tài)碼不能返回給客戶端,所以這個(gè)錯(cuò)誤碼是必須的。)。

? ? ? ? ? ? ? ? ?temporarily_unavailable(暫時(shí)不可用):由于臨時(shí)服務(wù)器超載或維護(hù),授權(quán)服務(wù)器目前無(wú)法處理請(qǐng)求。

? ? ? ? ? ? ? error_description(錯(cuò)誤的描述):可選。提供額外信息,人類可讀的ASCII碼文本字符串。幫助客戶端的開(kāi)發(fā)者理解發(fā)生的錯(cuò)誤。

?? ? ? ? ? ? ?error_uri(錯(cuò)誤URI):可選。帶有錯(cuò)誤信息的且可讀的Web頁(yè)面,用于向客戶端開(kāi)發(fā)人員提供關(guān)于錯(cuò)誤的附加信息。

? ? ? ? ? ? ? state(狀態(tài)):可選。如果在客戶機(jī)授權(quán)請(qǐng)求中存在“state”參數(shù),則需要原封不動(dòng)的返回。

? ? ? ? ? ? ? 例如:授權(quán)服務(wù)器通過(guò)發(fā)送下面的Http 響應(yīng)重定向用戶代理到客戶端。? ? ? ?

? ? ? ? ? ? ? HTTP/1.1 302 Found

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

? ? 4.1.3?訪問(wèn)令牌請(qǐng)求(Access Token Request)

? ? ? ? ? ? ? 客戶端對(duì)令牌端點(diǎn)發(fā)送請(qǐng)求,并添加下列參數(shù)到查詢組件(query component)中(注意使用?"application/x-www-form-urlencoded" ),在在HTTP請(qǐng)求實(shí)體中使用utf-8字符編碼。

? ? ? ? ? ? ? grant_type(授權(quán)許可類型):必須。值必須為“authorization_code”?

? ? ? ? ? ? ? code(授權(quán)碼):必須。從認(rèn)證服務(wù)器請(qǐng)求的授權(quán)碼。

? ? ? ? ? ? ? redirect_uri(重定向URI):必須。如果重定向URI被包含在授權(quán)請(qǐng)求中,則值必須與客戶端認(rèn)證階段包含的重定向URI相同。

? ? ? ? ? ? ? client_id(客戶端身份標(biāo)識(shí)):必須。如果客戶端不使用授權(quán)服務(wù)器進(jìn)行身份驗(yàn)證。如果客戶端類型是機(jī)密的,或者客戶端已經(jīng)被頒發(fā)的憑證,或者被分配其他的授權(quán)要求,則客戶端必須使用授權(quán)服務(wù)器進(jìn)行身份驗(yàn)證。

? ? ? ? ? ? ??例如,客戶端使用TLS發(fā)送以下HTTP請(qǐng)求:

     POST /token HTTP/1.1Host: server.example.comAuthorization: Basic czZCaGRSa3F0MzpnWDFmQmF0M2JW Content-Type: application/x-www-form-urlencodedgrant_type=authorization_code&code=SplxlOBeZQQYbYS6WxSbIA&redirect_uri=https%3A%2F%2Fclient%2Eexample%2Ecom%2Fcb
授權(quán)服務(wù)器必須:
    • 如果客戶端類型是機(jī)密的,或者客戶端已經(jīng)被頒發(fā)的憑證,或者被分配其他的授權(quán)要求,則客戶端必須使進(jìn)行身份驗(yàn)證。
    • 如果客戶端認(rèn)證被包含,則認(rèn)證客戶端。
    • 確保授權(quán)碼被發(fā)送到經(jīng)身份驗(yàn)證的機(jī)密客戶機(jī),或者被頒發(fā)給請(qǐng)求中“client_id”標(biāo)識(shí)的公開(kāi)客戶端。
    • 審核授權(quán)碼是否有效。
    • 如果“redirect_uri”被包含在請(qǐng)求中,確保與之前客戶端認(rèn)證階段提供的“redirect_uri”參數(shù)相等。

? ? 4.1.4?訪問(wèn)令牌響應(yīng)(Access Token Response)

? ? ? ? ? ? ? 如果訪問(wèn)令牌請(qǐng)求有效并已被授權(quán),則授權(quán)服務(wù)需頒發(fā)一個(gè)必須的訪問(wèn)令牌和一個(gè)可選的刷新令牌。如果請(qǐng)求客戶端認(rèn)證失敗或者無(wú)效,授權(quán)服務(wù)器將返回錯(cuò)誤的響應(yīng)。

? ? ? ? ? ? ? 成功響應(yīng)的例子:? ? ? ?

     HTTP/1.1 200 OKContent-Type: application/json;charset=UTF-8Cache-Control: no-storePragma: no-cache{"access_token":"2YotnFZFEjr1zCsicMWpAA","token_type":"example","expires_in":3600,"refresh_token":"tGzv3JOkF0XG5Qx2TlKWIA","example_parameter":"example_value"}

? ?4.2?隱性許可類型(Implicit Grant)

? ? ? ? ? ? ?隱式許可類型用于獲取訪問(wèn)令牌(不支持發(fā)行刷新令牌),并且它對(duì)運(yùn)行特定重定向URI的公共客戶機(jī)進(jìn)行了優(yōu)化。?這些客戶機(jī)通常使用JavaScript等腳本語(yǔ)言實(shí)現(xiàn),并運(yùn)行在客戶端中。由于這是一個(gè)基于重定向的流程,客戶端必須能夠與資源所有者的用戶代理(通常一個(gè)web瀏覽器)進(jìn)行交互,并且能夠接受來(lái)自于授權(quán)服務(wù)傳入(通過(guò)重定向)的請(qǐng)求。

? ? ? ? ? ? ?不像授權(quán)碼許可類型,客戶端分別請(qǐng)求授權(quán)和訪問(wèn)令牌,而是直接接收訪問(wèn)令牌作為授權(quán)請(qǐng)求的結(jié)果。?隱式授權(quán)類型不包括客戶端身份驗(yàn)證,依賴于資源所有者的存在和重定向URI的注冊(cè)。因?yàn)樵L問(wèn)令牌被編碼到重定向URI中,所以它可能暴露在資源所有者和駐留在同一設(shè)備上的其他應(yīng)用程序中。

+----------+| Resource ||  Owner   ||          |+----------+^|(B)+----|-----+          Client Identifier     +---------------+|         -+----(A)-- & Redirection URI --->|               ||  User-   |                                | Authorization ||  Agent  -|----(B)-- User authenticates -->|     Server    ||          |                                |               ||          |<---(C)--- Redirection URI ----<|               ||          |          with Access Token     +---------------+|          |            in Fragment|          |                                +---------------+|          |----(D)--- Redirection URI ---->|   Web-Hosted  ||          |          without Fragment      |     Client    ||          |                                |    Resource   ||     (F)  |<---(E)------- Script ---------<|               ||          |                                +---------------++-|--------+|    |(A)  (G) Access Token|    |^    v+---------+|         ||  Client ||         |+---------+
圖4:隱性許可流程

(A)客戶端將資源服務(wù)器的用戶代理導(dǎo)向授權(quán)端點(diǎn),并包含客戶端標(biāo)識(shí)、請(qǐng)求范圍、本地狀態(tài)、重定向URI等參數(shù),一旦訪問(wèn)被許可,授權(quán)服務(wù)器將返回到用戶代理。
(B)授權(quán)服務(wù)器認(rèn)證資源所有者,并確定資源所有者是許可還是拒絕客戶端的訪問(wèn)請(qǐng)求。
(C)假如資源所有者許可訪問(wèn),根據(jù)早前在客戶端認(rèn)證階段提供的重定向URI,并在URI片段(fragment)中包含訪問(wèn)令牌,重定向用戶代理到客戶端。
(D)用戶代理保留本地UIR片段,向客戶端Web托管資源服務(wù)器發(fā)起請(qǐng)求。
(E)客戶端Web托管資源服務(wù)器返回一個(gè)web頁(yè)面,并包含能夠在URI片段中的提取訪問(wèn)令牌(和其他參數(shù))的腳本。
(F)用戶代理執(zhí)行腳本,提取訪問(wèn)令牌(和其他參數(shù))
(G)用戶代理將訪問(wèn)令牌傳送給客戶端。

? ? 4.2.1?授權(quán)請(qǐng)求(Authorization Request)

? ? ? ? ? ? ??通過(guò)添加下列參數(shù)到查詢組件(query component)中(注意使用?"application/x-www-form-urlencoded" ),發(fā)起對(duì)授權(quán)端點(diǎn)URI的請(qǐng)求。

? ? ? ? ? ? ??response_type(響應(yīng)類型):必須。值必須為“Token”。

? ? ? ? ? ? ? client_id(客戶端標(biāo)識(shí)):必須。

? ? ? ? ? ? ? redirect_uri(重定向URI):可選。

? ? ? ? ? ? ? scope(請(qǐng)求的范圍):可選。

? ? ? ? ? ? ? state(客戶端本地狀態(tài)):推薦。客戶機(jī)用來(lái)維護(hù)請(qǐng)求和回調(diào)之間的狀態(tài)的不透明值。當(dāng)將用戶代理重定向回客戶端時(shí),授權(quán)服務(wù)器包含此值。該參數(shù)應(yīng)用于防止跨站點(diǎn)請(qǐng)求偽造。

? ? ? ? ? ? ? 通過(guò)Http重定向,客戶端將資源所有者導(dǎo)向使用上面參數(shù)構(gòu)造的授權(quán)服務(wù)器URI請(qǐng)求。例如,客戶端指導(dǎo)用戶代理使用TLS來(lái)發(fā)起下面的Http請(qǐng)求:

     GET /authorize?response_type=token&client_id=s6BhdRkqt3&state=xyz&redirect_uri=https%3A%2F%2Fclient%2Eexample%2Ecom%2Fcb HTTP/1.1Host: server.example.com
授權(quán)服務(wù)器驗(yàn)證請(qǐng)求來(lái)保證所有必須的參數(shù)都存在和有效。授權(quán)服務(wù)器必須(因?yàn)樾枰鼇?lái)攜帶訪問(wèn)令牌)驗(yàn)證重定向URI,并與之前客戶端認(rèn)證提供的重定向URI進(jìn)行匹配。如果請(qǐng)求有效,授權(quán)服務(wù)器通過(guò)認(rèn)證資源所有者來(lái)獲得授權(quán)決定(或者通過(guò)其他標(biāo)準(zhǔn)來(lái)獲得授權(quán)許可)。如果授權(quán)決定被許可,授權(quán)服務(wù)器就會(huì)重定向用戶代理到客戶端提供的重定向URI。

4.2.2?授權(quán)響應(yīng)(Authorization Response)

? ? ? ??如果資源所有者許可訪問(wèn)請(qǐng)求,授權(quán)服務(wù)器就會(huì)頒發(fā)一個(gè)訪問(wèn)令牌,并以"application/x-www-form-urlencoded"格式添加下列參數(shù)到重定向URI片段組件(query fragment)中。

? ? ? ?access_token(訪問(wèn)令牌):必須。

? ? ? ?token_type(令牌類型):必須。

? ? ? ?expires_in(過(guò)期時(shí)間):推薦。訪問(wèn)令牌的生命周期,值“3600”表示訪問(wèn)令牌將在一個(gè)小時(shí)后過(guò)期。如果省略,授權(quán)服務(wù)器,應(yīng)該設(shè)置一個(gè)默認(rèn)值,或者通過(guò)其他的方式提供過(guò)期時(shí)間。

? ? ? ?scope(范圍):可選。如果等同于客戶端請(qǐng)求的范圍則可選,否則必須。

? ? ? ?state(狀態(tài)):可選。如果在客戶機(jī)授權(quán)請(qǐng)求中存在“state”參數(shù),則必須原封不動(dòng)的返回。

? ? ? ?授權(quán)服務(wù)器不能頒發(fā)刷新令牌

? ? ? ?例如:授權(quán)服務(wù)器通過(guò)發(fā)送下面的Http 響應(yīng)重定向用戶代理。

  HTTP/1.1 302 FoundLocation: http://example.com/cb#access_token=2YotnFZFEjr1zCsicMWpAA&state=xyz&token_type=example&expires_in=3600
開(kāi)發(fā)人員應(yīng)該注意到一些用戶代理不支持在HTTP“l(fā)ocation”響應(yīng)頭字段中包含一個(gè)片段組件。這樣的客戶端會(huì)要求使用其他方法重定向客戶端,而不是一個(gè)3xx重定向響應(yīng)。例如,返回一個(gè)HTML頁(yè)面,其中包含一個(gè)與重定向URI鏈接的動(dòng)作的“繼續(xù)”按鈕。
客戶端必須忽略不能識(shí)別的響應(yīng)參數(shù),授權(quán)碼字符串的長(zhǎng)度本規(guī)范并未定義。客戶端應(yīng)該避免對(duì)授權(quán)碼長(zhǎng)度的猜測(cè),授權(quán)服務(wù)器應(yīng)該記錄下所頒發(fā)的授權(quán)碼的長(zhǎng)度。

? ? 4.2.2.1 錯(cuò)誤響應(yīng)(Error Response)

? ? ? ? ? ? ??如果由于缺失、無(wú)效、不匹配重定向URI和客戶端標(biāo)識(shí)符,授權(quán)服務(wù)器應(yīng)該通知資源所有者錯(cuò)誤,不能自動(dòng)的重定向用戶代理到無(wú)效的重定向URI。

? ? ? ? ? ? ? 如果資源所有者拒絕客戶端的訪問(wèn)請(qǐng)求,授權(quán)碼服務(wù)器應(yīng)該使用"application/x-www-form-urlencoded"格式添加下列參數(shù)到重定向URI的查詢組件(query component)中。

? ? ? ? ? ? ? error:必須。一個(gè)簡(jiǎn)單的、來(lái)自于包含下面參數(shù)的?ASCII 錯(cuò)誤代碼。

? ? ? ? ? ? ? ? ?invalid_request(無(wú)效請(qǐng)求):請(qǐng)求缺少所需的參數(shù),包括無(wú)效的參數(shù)值,其中包含一次以上的參數(shù),或者是其他格式錯(cuò)誤的。

? ? ? ? ? ? ? ? ?unauthorized_client(未授權(quán)的客戶端):客戶端沒(méi)有授權(quán)使用此方法請(qǐng)求授權(quán)碼。

? ? ? ? ? ? ? ? ?access_denied(訪問(wèn)拒絕):資源所有者或者授權(quán)服務(wù)器拒絕請(qǐng)求。

? ? ? ? ? ? ? ? ?unsupported_response_type(不支持的響應(yīng)類型):授權(quán)服務(wù)器不支持使用此方法獲得授權(quán)代碼。

? ? ? ? ? ? ? ? ?invalid_scope(無(wú)效的請(qǐng)求范圍):請(qǐng)求的范圍無(wú)效、未知或格式錯(cuò)誤。

? ? ? ? ? ? ? ? ?server_error(服務(wù)器錯(cuò)誤):授權(quán)服務(wù)器遇到意外情況,阻止它執(zhí)行請(qǐng)求(因?yàn)楫?dāng)重定向時(shí),一個(gè)500內(nèi)部錯(cuò)誤Http狀態(tài)碼不能返回給客戶端,所以這個(gè)錯(cuò)誤碼是必須的。)。

? ? ? ? ? ? ? ? ?temporarily_unavailable(暫時(shí)不可用):由于臨時(shí)服務(wù)器超載或維護(hù),授權(quán)服務(wù)器目前無(wú)法處理請(qǐng)求。

? ? ? ? ? ? ? error_description(錯(cuò)誤的描述):可選。提供額外信息,人類可讀的ASCII碼文本字符串。幫助客戶端的開(kāi)發(fā)者理解發(fā)生的錯(cuò)誤。

?? ? ? ? ? ? ?error_uri(錯(cuò)誤URI):可選。帶有錯(cuò)誤信息的且可讀的Web頁(yè)面,用于向客戶端開(kāi)發(fā)人員提供關(guān)于錯(cuò)誤的附加信息。

? ? ? ? ? ? ? state(狀態(tài)):可選。如果在客戶機(jī)授權(quán)請(qǐng)求中存在“state”參數(shù),則需要原封不動(dòng)的返回。

? ? ? ? ? ? ? 例如:授權(quán)服務(wù)器通過(guò)發(fā)送下面的Http 響應(yīng)重定向用戶代理到客戶端。? ? ? ?

      HTTP/1.1 302 FoundLocation: https://client.example.com/cb#error=access_denied&state=xyz

? ?4.3?資源所有者密碼憑證許可類型(Resource Owner Password Credentials Grant)

 

? ? ? ? ? ? ?只有當(dāng)資源所有者充分信任(例如:客戶端是整個(gè)系統(tǒng)的一部分,或者是特權(quán)應(yīng)用程序,或者其他授權(quán)許可不可用時(shí))客戶端的情況下,才使用該模式。當(dāng)使用該模式時(shí),授權(quán)服務(wù)器應(yīng)該特別小心,并且只有在其他授權(quán)流不可用的情況下,才使用該模式。

? ? ? ? ? ? ?此授權(quán)類型適用于能夠獲得資源所有者證書(shū)的客戶端(用戶名和密碼,通常使用交互式表單)。它還用于遷移現(xiàn)有客戶使用直接的認(rèn)證方案,如HTTP基本或摘要通過(guò)將存儲(chǔ)的憑據(jù)來(lái)訪問(wèn)令牌的OAuth認(rèn)證。

     +----------+| Resource ||  Owner   ||          |+----------+v|    Resource Owner(A) Password Credentials|v+---------+                                  +---------------+|         |>--(B)---- Resource Owner ------->|               ||         |         Password Credentials     | Authorization || Client  |                                  |     Server    ||         |<--(C)---- Access Token ---------<|               ||         |    (w/ Optional Refresh Token)   |               |+---------+                                  +---------------+
?             圖5:資源所有者密碼憑證流程
   (A)資源所有者向客戶端提供用戶名和密碼。
   (B)客戶端通過(guò)包含從資源所有者收到的憑據(jù),請(qǐng)求來(lái)自授權(quán)服務(wù)器令牌端點(diǎn)的訪問(wèn)令牌。當(dāng)發(fā)起請(qǐng)求時(shí),客戶端與授權(quán)服務(wù)器進(jìn)行認(rèn)證。
   (C)授權(quán)服務(wù)器認(rèn)證客戶端,并驗(yàn)證資源所有者憑證,如果有效,頒發(fā)一個(gè)訪問(wèn)令牌。

? ? 4.3.1?授權(quán)請(qǐng)求和響應(yīng)(Authorization Request And Response)

? ? ? ? ? ? ??客戶機(jī)獲取資源所有者證書(shū)的方法超出了本規(guī)范的范圍。一旦訪問(wèn)令牌獲得,客戶端必須丟棄憑據(jù)(理想狀態(tài))。

? ? 4.3.2?訪問(wèn)令牌請(qǐng)求(Access Token Request)

? ? ? ? ? ? ? 客戶端對(duì)令牌端點(diǎn)發(fā)送請(qǐng)求,并添加下列參數(shù)到查詢組件(query component)中(注意使用?"application/x-www-form-urlencoded" ),在在HTTP請(qǐng)求實(shí)體中使用utf-8字符編碼。

? ? ? ? ? ? ? grant_type(授權(quán)許可類型):必須。值必須為“password” 。

? ? ? ? ? ? ? username(用戶名):必須 。

? ? ? ? ? ? ? password(密碼):必須。

? ? ? ? ? ? ? scope(請(qǐng)求的范圍):可選

? ? ? ? ? ? ? 例如:客戶端使用TLS發(fā)送下面的請(qǐng)求=>

     POST /token HTTP/1.1Host: server.example.comAuthorization: Basic czZCaGRSa3F0MzpnWDFmQmF0M2JWContent-Type: application/x-www-form-urlencoded
     grant_type=password&username=johndoe&password=A3ddj3w
授權(quán)服務(wù)器必須:
  • 如果客戶端是機(jī)密的,則授權(quán)服務(wù)器必須認(rèn)證客戶端。
  • 如果客戶端憑證存在,則認(rèn)證客戶端。
  • 使用存在的密碼驗(yàn)證策略,驗(yàn)證資源所有者密碼憑證。

由于此訪問(wèn)令牌請(qǐng)求使用資源所有者的密碼,授權(quán)服務(wù)器必須保護(hù)端點(diǎn)不受暴力攻擊(例如使用速度限制、驗(yàn)證碼、彈窗等等)。

? ? 4.3.4?訪問(wèn)令牌響應(yīng)(Access Token Response)

? ? ? ? ? ? ? 如果訪問(wèn)令牌請(qǐng)求有效并已被授權(quán),則授權(quán)服務(wù)需頒發(fā)一個(gè)必須的訪問(wèn)令牌和一個(gè)可選的刷新令牌。如果請(qǐng)求客戶端認(rèn)證失敗或者無(wú)效,授權(quán)服務(wù)器將返回錯(cuò)誤的響應(yīng)。

? ? ? ? ? ? ? 成功響應(yīng)的例子:? ? ? ?

     HTTP/1.1 200 OKContent-Type: application/json;charset=UTF-8Cache-Control: no-storePragma: no-cache{"access_token":"2YotnFZFEjr1zCsicMWpAA","token_type":"example","expires_in":3600,"refresh_token":"tGzv3JOkF0XG5Qx2TlKWIA","example_parameter":"example_value" }

? ?4.4 客戶端許可類型(Client Credentials Grant)

? ? ? ? ? ? ?當(dāng)客戶端僅僅想使用自己的憑證請(qǐng)求訪問(wèn)受其控制的,或請(qǐng)求授權(quán)服務(wù)器已經(jīng)配置的另一個(gè)資源所有者的受保護(hù)資源。

? ? ? ? ? ? ?客戶憑證許可類型必須僅由機(jī)密客端使用。

     +---------+                                  +---------------+|         |                                  |               ||         |>--(A)- Client Authentication --->| Authorization || Client  |                                  |     Server    ||         |<--(B)---- Access Token ---------<|               ||         |                                  |               |+---------+                                  +---------------+圖 6: 客戶端憑證流程
(A)客戶端和授權(quán)服務(wù)器進(jìn)行認(rèn)證,并向令牌端點(diǎn)請(qǐng)求訪問(wèn)令牌。
(B)授權(quán)服務(wù)器認(rèn)證客戶端,如果,有效,則頒發(fā)訪問(wèn)令牌。

? ? 4.4.1?授權(quán)請(qǐng)求和響應(yīng)(Authorization Request And Response)

? ? ? ? ? ? ??因?yàn)榭蛻舳藨{證被作為授權(quán)許可,所有不需要其他額外的授權(quán)請(qǐng)求。

? ? 4.4.2?訪問(wèn)令牌請(qǐng)求(Access Token Request)

? ? ? ? ? ? ? 客戶端對(duì)令牌端點(diǎn)發(fā)送請(qǐng)求,并添加下列參數(shù)(注意使用?"application/x-www-form-urlencoded" 格式和utf-8字符編碼)在HTTP請(qǐng)求實(shí)體中。。

? ? ? ? ? ? ? grant_type(授權(quán)許可類型):必須。值必須為“client_credentials” 。

? ? ? ? ? ? ? scope(請(qǐng)求的范圍):可選

? ? ? ? ? ? ? 例如:客戶端使用TLS發(fā)送下面的請(qǐng)求=>

     POST /token HTTP/1.1Host: server.example.comAuthorization: Basic czZCaGRSa3F0MzpnWDFmQmF0M2JWContent-Type: application/x-www-form-urlencodedgrant_type=client_credentials
授權(quán)服務(wù)器必須認(rèn)證客戶端。

? ? 4.4.4?訪問(wèn)令牌響應(yīng)(Access Token Response)? ? ? ?

? ? ? ? ? ? ? 如果訪問(wèn)令牌請(qǐng)求有效并已被授權(quán),則授權(quán)服務(wù)需頒發(fā)一個(gè)必須的訪問(wèn)令牌和一個(gè)可選的刷新令牌。如果請(qǐng)求客戶端認(rèn)證失敗或者無(wú)效,授權(quán)服務(wù)器將返回錯(cuò)誤的響應(yīng)。

? ? ? ? ? ? ? 成功響應(yīng)的例子:? ?

     HTTP/1.1 200 OKContent-Type: application/json;charset=UTF-8Cache-Control: no-storePragma: no-cache{"access_token":"2YotnFZFEjr1zCsicMWpAA","token_type":"example","expires_in":3600,"example_parameter":"example_value"}

? ?4.5?擴(kuò)展許可類型(Extension Grant)

? ? ? ? ? ? ?通過(guò)與授權(quán)服務(wù)器進(jìn)行溝通,客戶端將授權(quán)服務(wù)器定義好的授權(quán)許可類型的值作為參數(shù)“grant_type”的值,也可以包含其他的一些參數(shù),向令牌端點(diǎn)發(fā)送請(qǐng)求。


 

轉(zhuǎn)載于:https://www.cnblogs.com/justmine/p/7766225.html

總結(jié)

以上是生活随笔為你收集整理的从协议入手,剖析OAuth2.0(译 RFC 6749)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

国产精品成人品 | 黄色特级一级片 | 久久影院中文字幕 | 黄色最新网址 | 亚洲自拍自偷 | 黄色毛片一级片 | 亚洲国产99 | 超碰国产在线观看 | 国产91成人在在线播放 | 久久在线一区 | 亚洲va欧洲va国产va不卡 | 久久久久中文 | 亚洲va综合va国产va中文 | 久久国产精彩视频 | 婷婷成人综合 | 美女天天操 | 久草免费在线视频观看 | 国产成人一级电影 | 国产成人精品一区二区三区福利 | 婷婷久久综合九色综合 | 国产成人不卡 | 中文字幕乱码亚洲精品一区 | 久久av中文字幕片 | 久久女同性恋中文字幕 | 中字幕视频在线永久在线观看免费 | 国内精自线一二区永久 | 国产精品一区专区欧美日韩 | 日日精品 | 亚州中文av | 欧美最猛性xxx | 亚洲午夜激情网 | 久久视频这里有久久精品视频11 | 午夜精品久久久久久久久久久久久久 | 日韩欧美视频免费在线观看 | 日韩中文字幕免费视频 | 国产精品日韩在线播放 | av福利免费 | 欧美日韩国产精品一区二区亚洲 | 精品自拍网| av大全免费在线观看 | 久久99精品国产99久久 | 日韩动漫免费观看高清完整版在线观看 | 亚洲黄a| 久久久99久久 | 四虎国产精品成人免费影视 | 99热 精品在线 | 日韩h在线观看 | 日韩高清www | 国产精品美女视频 | 中文字幕在线播放日韩 | 射久久| 激情久久网 | 开心婷婷色| 狠狠色综合网站久久久久久久 | 激情欧美xxxx | 亚洲亚洲精品在线观看 | 欧美日产一区 | av字幕在线| 亚洲一区黄色 | 久草视频精品 | 天天色天天射天天操 | 97超碰人人爱 | 日本在线观看一区 | 国产精品初高中精品久久 | 亚洲传媒在线 | 成人三级网址 | 91亚洲狠狠婷婷综合久久久 | 99久久毛片| 国产999精品 | 日韩免费在线观看视频 | 免费日韩一区二区三区 | 亚洲精品视频免费观看 | 欧美在线观看视频 | 久久国产免费视频 | 国产盗摄精品一区二区 | 天天干夜夜夜 | av一区二区在线观看中文字幕 | 亚洲精品中文字幕视频 | 亚洲精品在线视频播放 | 日韩电影在线一区二区 | 亚洲国产人午在线一二区 | 国产成人91 | 国产精品一区二区三区在线 | av高清免费 | 五月婷婷色 | 97超级碰碰碰碰久久久久 | 四虎成人网 | 欧美日韩伦理一区 | 激情视频国产 | 天天射网| 国产精品久久久久毛片大屁完整版 | 99精品乱码国产在线观看 | www.五月天| 96久久精品 | 婷婷激情影院 | 97超碰在线资源 | 91系列在线 | 夜夜视频资源 | 公与妇乱理三级xxx 在线观看视频在线观看 | 国产一区二区免费 | 久久久久久亚洲精品 | 色午夜影院 | 国内精品二区 | 色婷久久| a在线观看国产 | 日韩大陆欧美高清视频区 | 天天操天天射天天 | 色婷婷狠狠18 | 91看片在线| 国产精品a级| 日韩一级网站 | 免费又黄又爽 | 99精品一级欧美片免费播放 | 在线观看中文字幕dvd播放 | 欧美一级片免费 | 91亚色视频 | 中文字幕中文字幕在线一区 | 激情网在线视频 | 欧美一区二区三区免费观看 | 国内精品久久久久久 | 黄色片网站免费 | 在线观看的黄色 | 在线观看视频在线 | 天天躁日日躁狠狠躁av麻豆 | 中文字幕观看视频 | 国产精品18久久久久久久 | 日韩av电影免费观看 | 日日综合网 | 麻豆久久一区 | 欧美色图狠狠干 | 青草视频在线 | 亚洲天天干 | 欧美日韩精品区 | 97碰在线视频 | 夜夜夜夜操| 日本婷婷色 | 中文字幕在线高清 | 久久se视频| 久福利 | 国产免费嫩草影院 | 97日日碰人人模人人澡分享吧 | 黄色小说网站在线 | 欧美日韩国产精品一区二区三区 | 久久福利小视频 | 久久高清国产视频 | 97伊人网| 亚洲电影一级黄 | 97成人在线观看视频 | 日韩精品免费一区二区三区 | 欧美专区国产专区 | 午夜精品一区二区三区免费视频 | 欧美极品在线播放 | 婷婷六月丁 | 91九色精品 | 中文字幕在线观看视频网站 | 国产美女精彩久久 | 久久艹在线 | 精品国产精品国产偷麻豆 | 中文字幕在线观看一区二区三区 | 91看片看淫黄大片 | 中文字幕一区二区三区四区视频 | 国产精品99久久久久 | 日韩免费在线观看视频 | 91桃色在线观看视频 | 精品在线播放视频 | 西西4444www大胆视频 | 国产精品国产三级国产专区53 | 成人性生交大片免费看中文网站 | 99视频精品全部免费 在线 | 国产成人三级 | 99在线视频免费观看 | 国产精品在线看 | 中文字幕乱码日本亚洲一区二区 | 五月激情综合婷婷 | 亚洲婷婷伊人 | av高清一区二区三区 | 日韩国产精品一区 | 国产中文字幕视频在线观看 | 成人一区在线观看 | 国产做aⅴ在线视频播放 | 天天干国产 | 久久黄色影院 | 精品91视频| 日韩av成人在线 | 久久久久久看片 | 欧美日韩综合在线 | 精品成人在线 | 2024av| 欧美午夜理伦三级在线观看 | 超碰免费观看 | 综合网天天 | 午夜久久视频 | 黄色美女免费网站 | av片在线观看 | 免费看黄在线 | 久久久免费观看 | 91麻豆精品一区二区三区 | 丁香激情网| 麻豆传媒电影在线观看 | 色噜噜日韩精品欧美一区二区 | 亚洲欧美国产精品久久久久 | 久久婷综合| 久久久久久久久久久影院 | 国产精品美女免费看 | 天天干,天天射,天天操,天天摸 | 日韩精品在线一区 | 天天干天天操天天入 | 91在线文字幕 | 婷婷激情五月 | 91免费在线| 日韩电影一区二区三区在线观看 | 亚洲国产福利视频 | 日韩av黄| 婷婷丁香国产 | 四虎天堂 | 亚洲日本va午夜在线电影 | 日韩区欧美久久久无人区 | 99久久久| 亚洲三级毛片 | 黄色av一区 | 日本精a在线观看 | 免费h漫在线观看 | 免费黄色在线网址 | 狠狠色狠狠色综合系列 | 超碰免费观看 | 在线观看亚洲免费视频 | 欧美专区国产专区 | 精品视频123区在线观看 | 五月天激情在线 | 久久国产色 | 美女网站在线免费观看 | 久久视频热 | 激情av五月婷婷 | 久草资源在线观看 | 黄色一级免费 | 亚洲精品国产综合99久久夜夜嗨 | 色亚洲激情 | 久久国产精品二国产精品中国洋人 | 国产免费又粗又猛又爽 | 欧美黑人xxxx猛性大交 | 国产精品毛片久久 | 国产网站色 | 2022中文字幕在线观看 | 黄色软件视频大全免费下载 | 亚洲成人免费在线观看 | 久久一区91 | 久热超碰 | 狠狠色丁香婷婷综合橹88 | 成人免费在线播放视频 | 久久免费99 | 亚洲天天综合网 | 一区二区电影在线观看 | 国产专区视频在线观看 | 色就是色综合 | 欧美日韩精品免费观看 | 中文字幕在线免费看 | 特片网久久 | 99欧美精品 | 综合久久精品 | a级国产乱理论片在线观看 伊人宗合网 | 国产一区二区高清视频 | 91最新地址永久入口 | 中国一级特黄毛片大片久久 | 欧美日韩国产在线一区 | 在线亚洲成人 | 天天爱天天插 | 日韩欧美69 | 九九免费观看视频 | 91av视频在线观看 | 天天操天天操天天操天天 | 日韩在线观看你懂的 | 午夜色场 | 欧美日韩精品免费观看视频 | av在线专区 | 国产区av在线| 黄色特一级片 | 99色在线视频 | 亚洲人成网站精品片在线观看 | 欧美日韩视频 | 欧美精品视 | 久久久www | 天天色天天综合 | 国产午夜不卡 | 最近日本字幕mv免费观看在线 | 日韩美在线观看 | japanesexxx乱女另类| 91av视频导航 | 国产一区成人 | 天堂资源在线观看视频 | 久久99在线观看 | 欧美日韩中文字幕视频 | 久久国产一区二区三区 | 亚洲毛片视频 | 美女网站在线播放 | 99久久精品久久久久久清纯 | 精品视频www | 香蕉在线观看视频 | a在线视频v视频 | 黄色软件在线观看免费 | 久久综合中文色婷婷 | 超碰公开在线观看 | 四虎国产精品免费 | 欧美日韩免费看 | 国产精品一区二区av麻豆 | 四虎影视8848dvd | av高清影院 | 国产亚洲精品久久久久久大师 | 久久久国产高清 | 中文字幕日本在线观看 | 天天干天天插 | 美女国产 | av短片在线 | 亚洲免费高清视频 | av在线播放中文字幕 | 亚洲国产视频网站 | 手机成人av在线 | 一区二区激情视频 | av免费在线免费观看 | 免费视频黄| www.国产在线视频 | 91精品秘密在线观看 | 日批视频国产 | 国产精品 9999 | 2024国产精品视频 | 亚洲国产成人av网 | 97色婷婷成人综合在线观看 | 国产精品短视频 | 天天天色综合 | 精品 一区 在线 | 国产一级黄色免费看 | 欧美日本国产在线观看 | 深夜免费福利在线 | 欧美日韩国产一二三区 | 欧美日韩高清在线 | 成人国产精品电影 | 美女黄频在线观看 | av福利在线 | 中文区中文字幕免费看 | 色美女在线 | 黄色一级免费网站 | 91精选在线 | 伊人夜夜| 天天干 天天摸 天天操 | 国产黄色在线网站 | 免费在线观看中文字幕 | 国内久久看 | 成人黄色片免费 | 亚洲国产偷| 国产.精品.日韩.另类.中文.在线.播放 | 婷婷在线视频观看 | 国产精品久久久久久av | 人人澡人| 精品福利网 | 韩日av在线| 国产精品国产三级国产不产一地 | 97超级碰碰碰视频在线观看 | 亚洲午夜久久久综合37日本 | 精品国产91亚洲一区二区三区www | 国产69精品久久久久9999apgf | 国产精品av在线免费观看 | 欧美日韩裸体免费视频 | 国产资源免费在线观看 | 亚洲涩综合| 五月婷婷丁香综合 | 在线观看亚洲成人 | 亚洲午夜久久久久久久久电影网 | av在线激情 | 精品久久一 | 亚洲情影院 | 天天看天天干天天操 | 午夜影院日本 | 日本精品va在线观看 | 国产一区在线免费观看 | 99精品毛片 | 久久精品影片 | 日韩午夜高清 | 视频在线91| 亚洲综合视频在线播放 | 久久免费视频在线观看6 | 97在线观看视频 | 天天操操操操操操 | 国产免费人人看 | 人人干天天射 | 91香蕉视频黄 | 中文字幕人成不卡一区 | 午夜美女wwww | 99久久99视频只有精品 | 国产精品综合久久久 | 欧美一级电影在线观看 | 国产精品资源 | 精品福利网 | av色影院 | 高清有码中文字幕 | 国产日韩精品一区二区在线观看播放 | 欧美欧美 | 97国产大学生情侣白嫩酒店 | av在线com| 久久人视频 | 在线a视频免费观看 | a午夜在线| 一区二区三区高清在线观看 | 国产精品破处视频 | 国产一级片播放 | 国产精品久久久久久久婷婷 | 久久一及片| 久久久久久久久久影视 | 9999精品视频 | 不卡的av电影在线观看 | 正在播放亚洲精品 | 日本精品一二区 | 亚洲成人中文在线 | 91av99 | 久久在线影院 | 色多多在线观看 | 国产专区视频 | 精品久久久久久久 | 欧美性色19p| 2021久久| 91完整版在线观看 | av免费在线观看1 | 久久精品资源 | 久久国产美女 | 欧美精品一区二区免费 | 色婷婷亚洲综合 | 欧美精品被 | 国产精品美女久久久久久免费 | 免费日韩| 久久久精品视频网站 | 综合网中文字幕 | 日日日干 | 婷婷国产一区二区三区 | 亚洲综合色av | 亚洲人成人在线 | 日韩视频一区二区在线观看 | 国产成人精品久久亚洲高清不卡 | 久久精品日韩 | 九九久久国产精品 | 在线观看中文字幕视频 | 成人黄色片在线播放 | 日韩精品一区电影 | 午夜.dj高清免费观看视频 | 在线观看精品一区 | 人成免费网站 | 五月天婷婷狠狠 | 成人9ⅰ免费影视网站 | 国产老太婆免费交性大片 | 国产福利一区二区三区视频 | 97超碰在线视 | 久久精品一区二区三区中文字幕 | 一区二区三区中文字幕在线观看 | 免费精品视频在线 | 国产一区二区三区久久久 | 欧美日韩久久不卡 | 日本中文字幕视频 | 草久久久久 | 99久久精品免费看国产四区 | 久久这里只精品 | 日本九九视频 | 日韩精品视频网站 | 亚洲 欧美 综合 在线 精品 | 日韩精品久久久久久久电影99爱 | 香蕉视频网站在线观看 | 一区二区三区四区影院 | 久久成人一区 | 久久综合给合久久狠狠色 | 久久久久免费精品视频 | 手机av电影在线 | a级片在线播放 | 国产成人精品久久 | 久草在线中文888 | 久久爽久久爽久久av东京爽 | 98涩涩国产露脸精品国产网 | 在线观看日韩免费视频 | 久久精品之| 99热只有精品在线观看 | 久久国产一区二区 | 国产91国语对白在线 | 日韩在线免费观看视频 | 91精品久久久久久久91蜜桃 | 超碰伊人网 | 国产精品入口麻豆www | 在线观看中文字幕第一页 | 亚洲视频网站在线观看 | 国产免费黄色 | 91激情视频在线观看 | 国产成人333kkk| 免费国产黄线在线观看视频 | 在线免费av电影 | 免费亚洲片 | 日本特黄一级 | 欧美一级视频在线观看 | 中文资源在线播放 | 最新日韩视频在线观看 | 久久乱码卡一卡2卡三卡四 五月婷婷久 | 亚州av成人 | 成人av一区二区在线观看 | 婷婷色中文 | 在线导航av | 中文久草 | 久久精品国产久精国产 | 天天色综合久久 | 亚洲成人第一区 | 亚洲激情中文 | 福利一区视频 | 国产91精品一区二区 | 精品国产乱码久久久久久天美 | 久章操 | 国产精品一区一区三区 | 久久国产亚洲精品 | 日韩午夜高清 | 亚洲精品乱码久久久久久蜜桃动漫 | 国产黄色片在线免费观看 | 免费在线一区二区三区 | 日韩欧美综合在线视频 | 91成人精品一区在线播放69 | 五月婷婷在线观看视频 | 国产精品久久久久婷婷二区次 | 精品成人网 | 91在线中字 | 乱子伦av| 精品国偷自产国产一区 | 成在人线av | 少妇精品久久久一区二区免费 | 日韩免费在线 | 探花视频免费观看高清视频 | 国产免费一区二区三区网站免费 | 日韩在线国产精品 | 国产亚洲激情视频在线 | 日日干干| www久久九 | 欧美日韩在线电影 | 欧美精品xxx| 婷婷射五月 | 亚洲精品视频免费观看 | 精品视频免费 | 欧美激情xxxx性bbbb | 久久精品国产免费看久久精品 | 国产精品美女久久久久久久网站 | 国产一区av在线 | 国产麻豆视频免费观看 | 国产精品99免视看9 国产精品毛片一区视频 | 人人爽人人澡人人添人人人人 | 这里只有精品视频在线 | 91视频高清免费 | 成人在线免费观看网站 | 在线免费性生活片 | av黄网站 | se视频网址 | av再线观看 | 免费观看成人av | 国产成人av在线 | 午夜精品婷婷 | 久草在线免费看视频 | 国产网红在线观看 | www.久久精品视频 | 亚洲免费激情 | www国产亚洲精品久久麻豆 | 天天操天天色天天射 | 五月婷婷免费 | 亚洲性少妇性猛交wwww乱大交 | 日韩在线三级 | 久久久久观看 | 综合激情网 | 久草网免费 | 欧美地下肉体性派对 | 久久久久久久久免费 | 国产护士av| 视频一区二区免费 | 欧美精品xx| 免费福利在线播放 | 日韩手机视频 | 在线欧美a | 精品成人久久 | 在线观看成人av | 在线看片日韩 | 亚洲a成人v | 玖玖在线资源 | 九九精品视频在线观看 | 国产不卡片 | 99国产成+人+综合+亚洲 欧美 | 中文字幕在线观看1 | 日精品 | 日韩电影久久久 | 五月激情亚洲 | 在线国产福利 | 激情伊人| www国产一区| av一本久道久久波多野结衣 | 五月天婷婷在线播放 | 97伊人网| 日韩欧美精品在线 | 成人久久18免费网站麻豆 | 在线中文字幕一区二区 | 日韩精品在线视频免费观看 | 91资源在线免费观看 | 97视频在线免费观看 | 精品爱爱 | 91中文视频| 国产欧美精品一区二区三区 | 午夜久久久久 | 精品国产一区在线观看 | 欧美a级免费视频 | 国产黄色在线观看 | 成人av在线电影 | 美女很黄免费网站 | 91插插影库 | 欧美日韩不卡在线观看 | 日韩欧美国产激情在线播放 | 免费在线一区二区 | 欧美激情视频一区二区三区 | 国产h在线播放 | 久久亚洲综合国产精品99麻豆的功能介绍 | 婷婷色中文 | 成人香蕉视频 | 视频在线观看入口黄最新永久免费国产 | 国产美女主播精品一区二区三区 | 成人欧美日韩国产 | 色婷婷成人网 | 日韩a免费| 97精品超碰一区二区三区 | 久久精品美女 | 97精品电影院 | 91视频啊啊啊 | 国产中文字幕网 | 色欧美成人精品a∨在线观看 | 精品免费久久久久 | 五月激情丁香 | 91专区在线观看 | 亚洲精品在线视频 | 在线高清| 成人亚洲欧美 | 天天摸天天舔 | 国产一级二级在线观看 | 久久在线影院 | 九色精品免费永久在线 | 91在线国产观看 | 久久久久激情视频 | 五月婷婷激情综合 | 日一日干一干 | 韩国精品福利一区二区三区 | 99r在线精品| 亚洲电影图片小说 | 日本黄色免费电影网站 | 99久久精品电影 | 99免费看片 | 亚洲最大av在线播放 | 亚洲精品美女视频 | 成人av电影免费在线播放 | 色综合婷婷久久 | 日韩手机视频 | 人人爱人人添 | 视频国产在线观看18 | 亚洲精品在线观 | 日韩精品视频一二三 | 久久免费片 | 黄色在线观看免费网站 | 久久久久成人精品 | 久艹在线观看视频 | 欧美三级高清 | 91在线区 | 欧美污污网站 | 久久精品一 | 日韩在线观看影院 | 色狠狠干 | 在线免费观看视频一区二区三区 | 免费观看丰满少妇做爰 | 日本精品一区二区三区在线观看 | 天天干天天拍 | 九九视频免费观看视频精品 | 国产精品久久久久一区二区三区共 | 欧美一级片在线 | 三级黄色a | 999久久久免费精品国产 | 久久九九久久精品 | 999精品在线| 国产一区欧美在线 | 五月天堂色 | 久久久久免费视频 | 免费高清在线观看电视网站 | 日韩在线精品 | 中文字幕久久精品 | 日韩美一区二区三区 | 国内精品久久久久久久影视简单 | 亚洲色图av | 免费看污片 | 日韩免费区| 在线不卡视频 | 视频 国产区| 国产精品美女久久久 | 97免费| 亚洲一级二级三级 | 国内精品久久久久影院优 | 久久久久久久久久福利 | 亚洲精品午夜aaa久久久 | 在线免费看黄色 | 午夜av一区二区三区 | 国产精品自产拍在线观看网站 | 999国内精品永久免费视频 | 精品国产午夜 | 天天干,天天射,天天操,天天摸 | 亚洲一区二区三区毛片 | 天天综合导航 | 欧美 日韩 性 | 婷婷丁香导航 | 日韩网站一区二区 | 狠狠干2018 | 久草久草在线观看 | 激情www| 韩国av在线播放 | 色五月色开心色婷婷色丁香 | 国产最新视频在线观看 | 亚洲精品乱码久久久久v最新版 | 亚洲精品日韩av | 色婷婷六月| 天天射天天射 | 亚州欧美精品 | 国产精品1区2区3区 久久免费视频7 | 精品久久免费看 | 亚洲精品麻豆 | 天天操天天操天天干 | 午夜免费久久看 | 麻豆传媒电影在线观看 | 色综合久久网 | 国产亚洲视频在线免费观看 | 国产精品丝袜久久久久久久不卡 | 国产黄大片 | 久久精品2 | 欧美俄罗斯性视频 | av在线播放免费 | 黄色一级免费网站 | 精品国模一区二区三区 | 亚洲国产操| 天天操天天操天天操天天操 | 波多野结衣电影久久 | 精品 一区 在线 | 日韩在线观看视频一区二区三区 | 五月天婷婷在线观看视频 | 国产一区二区电影在线观看 | 992tv人人网tv亚洲精品 | 国产小视频国产精品 | 欧美性极品xxxx娇小 | 在线观看日本高清mv视频 | 国产成人精品福利 | 国产精品videoxxxx | 婷婷久久一区二区三区 | 国产精品毛片久久久久久 | 欧洲精品视频一区 | 九九九毛片 | 九色精品在线 | 精品久久在线 | 国产精品永久免费观看 | 天天av资源 | 亚洲综合成人专区片 | 99麻豆久久久国产精品免费 | 在线视频 日韩 | 狠狠色丁香婷婷 | av免费看在线 | 亚洲成人av在线播放 | 免费 在线 中文 日本 | 99视频黄 | 中文字幕在线电影 | 五月婷丁香网 | 黄色a三级| av电影在线免费 | 五月婷av| 婷婷精品在线 | 亚洲免费不卡 | 国产中文视 | 免费a网站 | 欧美国产不卡 | 国内视频在线 | 色婷婷色 | 久草网免费| 亚洲一区二区精品在线 | 欧美日韩精品二区第二页 | 国产精品久久久久久超碰 | 成人h视频 | 狠狠做六月爱婷婷综合aⅴ 日本高清免费中文字幕 | 久久影院一区 | 亚洲日韩中文字幕在线播放 | 久久国产精品免费看 | 干亚洲少妇 | 综合亚洲视频 | 国产成人av电影在线 | 日韩视频区 | 永久免费视频国产 | 欧美性视频网站 | 丁香婷婷久久久综合精品国产 | 欧美日一级片 | 色婷婷激情四射 | 91在线视频免费播放 | 97精品国产一二三产区 | 丁香婷婷基地 | 午夜精品一区二区三区视频免费看 | 在线观看黄污 | 国产精品久久久久久69 | 国产成人精品一区二区三区福利 | 99 久久久久 | 亚洲精品777| 日韩高清在线一区二区 | 免费在线观看污网站 | 狠狠狠色丁香综合久久天下网 | 国产高清精品在线 | 伊人久久婷婷 | 国产高清av免费在线观看 | 麻豆久久久久久久 | 欧美日韩免费在线视频 | 精品国产亚洲一区二区麻豆 | 91字幕| 午夜久久久精品 | 亚洲jizzjizz日本少妇 | 麻豆免费在线视频 | 国产999精品久久久久久麻豆 | 国产成人三级一区二区在线观看一 | 亚洲免费婷婷 | 夜色.com| 久久国产精品电影 | 婷婷激情在线 | 国产精品一区二区在线观看 | 激情av资源 | 欧美日韩久久久 | 国产精品日韩久久久久 | 亚洲欧美精品一区 | av三级av| 天天摸天天舔天天操 | 在线免费试看 | 349k.cc看片app| 国产一区二区在线免费观看 | 97在线观看 | 色偷偷888欧美精品久久久 | 国产精品久久久久久婷婷天堂 | 在线观看完整版 | 在线观看视频h | 黄色不卡av | 亚洲涩涩网 | 麻豆国产精品视频 | 欧美一级大片在线观看 | www.夜夜操.com | 97精品视频在线播放 | 精品1区2区3区| 久久99深爱久久99精品 | 99性视频| 国产专区在线播放 | 在线影视 一区 二区 三区 | 国产一级性生活视频 | 精品久久精品 | 国产一级在线播放 | www.夜夜爱| 日本三级中文字幕在线观看 | 成在线播放 | 美女在线观看av | 久久激情小视频 | 人人cao| 天堂视频一区 | 欧洲色吧 | 天堂av在线网 | 成人av在线一区二区 | 深夜男人影院 | 色综合久久久久久中文网 | 天天骚夜夜操 | 免费看十八岁美女 | 美女性爽视频国产免费app | 色综合久久五月天 | 日韩欧美视频免费观看 | 奇米影音四色 | 狠狠色噜噜狠狠狠合久 | 欧美精品一区二区三区一线天视频 | 国产亚洲视频在线 | 国产高清久久久 | 最近免费中文字幕大全高清10 | 波多野结衣一区二区 | www免费视频com━ | 在线观看欧美成人 | 91精品国产99久久久久 | 最近高清中文在线字幕在线观看 | 在线日本看片免费人成视久网 | 二区三区毛片 | 婷婷在线视频观看 | 日韩一二区在线观看 | 日韩久久在线 | 黄色一级大片免费看 | 国产精品免费在线播放 | 国产美女精品视频 | 99久久99久久精品免费 | 91女子私密保健养生少妇 | 久久综合亚洲鲁鲁五月久久 | 一区在线播放 | 日韩亚洲在线观看 | 在线看av的网址 | 91色在线观看 | 高清免费在线视频 | 成人在线免费看视频 | 久久精品毛片 | 操久久免费视频 | 国产亚洲午夜高清国产拍精品 | 在线观看日韩视频 | 亚洲在线资源 | 久久在线免费观看 | 亚洲午夜精品电影 | 国产美女在线免费观看 | 日韩精品免费在线播放 | 免费高清看电视网站 | 日本黄色大片免费 | 国产福利一区二区三区在线观看 | 欧美激情视频一区二区三区免费 | 在线播放亚洲 | 欧美日韩中文国产一区发布 | 国产第一页在线观看 | 日韩精品中文字幕一区二区 | 在线观看香蕉视频 | 欧美一区在线看 | 五月综合色婷婷 | 永久免费精品视频网站 | 亚洲成a人片在线观看网站口工 | 中文字幕日韩一区二区三区不卡 | 夜夜爱av| 欧美日韩免费观看一区=区三区 | 国产精品福利视频 | 欧美日韩国产一二 | 国产精品一区二区三区免费看 | 久久久麻豆 | 亚洲黄色在线观看 | 欧美一区二区三区在线看 | 天天色中文| 9色在线视频 | 日韩精品不卡在线观看 | 国产成人黄色网址 | 午夜久久久久久久久 | 亚洲精品国产第一综合99久久 | 久国产在线播放 | 在线观看视频一区二区三区 | 免费黄色网址网站 | 国产精品久久 | 日韩精品短视频 | 亚洲精品久久久蜜臀下载官网 | 在线91色 | 97在线视频观看 | 国产一区精品在线 | 久久久久成人精品免费播放动漫 | 亚洲自拍自偷 | 日操干| 精品a在线 | 丁香五月网久久综合 | 最新一区二区三区 | 精品亚洲视频在线观看 | 91桃色免费观看 | 99久久99久久精品国产片果冰 | 久草网站在线观看 | 国产欧美精品一区aⅴ影院 99视频国产精品免费观看 | 欧美一区二区三区在线 | 午夜精品区 | 97干com| 免费福利在线 | 欧美性一级观看 | 成人黄色电影在线观看 | 在线看一级片 | 男女啪啪网站 | 国产精品网在线观看 | 亚洲精品视频免费观看 | 一级久久精品 | 日本激情动作片免费看 | 日韩激情网 | 欧美一级日韩免费不卡 | 久久综合成人 | 天堂黄色片 | 国产精品18p| 午夜视频黄 | 日韩综合视频在线观看 | 狠狠操狠狠插 | 射射色 | 麻豆视频国产精品 | 亚洲精品白浆高清久久久久久 | 日韩av不卡播放 | 日韩精品免费专区 | 天天狠狠干 | a久久久久 | 午夜久久久久久久久 | av中文在线 | 日韩av中文字幕在线 | 国产正在播放 | 天天做天天爽 | 午夜的福利 | 欧美日韩一区二区三区在线观看视频 | 国产麻豆视频免费观看 | 99999精品 | 97超在线视频 | a在线观看视频 | 精品96久久久久久中文字幕无 | 韩国在线一区二区 | 国产91综合一区在线观看 | 精品 一区 在线 | 日韩欧美精品一区二区 | 一级黄色片在线观看 | 国产一区二区精品久久91 | 黄免费在线观看 | 国产精品久久久久久久午夜片 | 亚洲一区二区视频在线播放 | 欧美日韩在线电影 |