




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
ICS35.040L80中華人民共和國(guó)密碼行業(yè)標(biāo)準(zhǔn)開(kāi)放的第三方資源授權(quán)協(xié)議框架o2019-07-12發(fā)布2019-07-12實(shí)施國(guó)家密碼管理局發(fā)布ⅠGM/T0068—2019前言 引言 2規(guī)范性引用文件 3術(shù)語(yǔ)和定義 4縮略語(yǔ) 5.2協(xié)議通道要求 6第三方應(yīng)用程序及安全要求 6.1第三方應(yīng)用程序類型 6.2第三方應(yīng)用程序標(biāo)識(shí)符 6.3第三方應(yīng)用程序注冊(cè)要求 6.4第三方應(yīng)用程序身份鑒別 7授權(quán)流程 7.2授權(quán)碼許可流程 7.3隱式許可流程 7.4資源擁有者口令憑據(jù)許可流程 7.5第三方應(yīng)用程序身份憑據(jù)許可流程 8.2訪問(wèn)令牌發(fā)放 8.3訪問(wèn)令牌刷新 9受保護(hù)資源訪問(wèn) 9.1受保護(hù)資源訪問(wèn)流程 附錄A(資料性附錄)協(xié)議參數(shù)說(shuō)明 參考文獻(xiàn) ⅢGM/T0068—2019本標(biāo)準(zhǔn)按照GB/T1.1—2009給出的規(guī)則起草。本標(biāo)準(zhǔn)參考國(guó)際互聯(lián)網(wǎng)工程任務(wù)組(The簡(jiǎn)稱文件進(jìn)行制定我國(guó)實(shí)際應(yīng)用需求及產(chǎn)品生產(chǎn)廠商的實(shí)踐經(jīng)驗(yàn),本標(biāo)準(zhǔn)在第三方應(yīng)用程序身份鑒別部分增加了基于SM2國(guó)產(chǎn)密碼算法的數(shù)字證書(shū)鑒別方法,在授權(quán)協(xié)議中的數(shù)據(jù)通信安全部分采用密碼行業(yè)標(biāo)準(zhǔn)GM/T0024—2014《SSLVPN技術(shù)規(guī)范》中定義的安全通信協(xié)議取代TLS協(xié)議,在訪問(wèn)令牌的保護(hù)部分增加了采用SM2、SM3、SM4等國(guó)家密碼管理局認(rèn)可的算法對(duì)其進(jìn)行簽名和加密的規(guī)定。另外,本標(biāo)準(zhǔn)去除了RFC6749文件中的安全考慮部分,將安全考慮部分涉及的應(yīng)采用的安全措施具體化到本標(biāo)準(zhǔn)的各個(gè)章條,包括協(xié)議中傳輸?shù)南?、端點(diǎn)、發(fā)放的令牌、第三方應(yīng)用程序身份鑒別等部分。本標(biāo)準(zhǔn)由密碼行業(yè)標(biāo)準(zhǔn)化技術(shù)委員會(huì)提出并歸口。本標(biāo)準(zhǔn)的主要起草單位:中國(guó)科學(xué)院數(shù)據(jù)與通信保護(hù)研究教育中心、北京數(shù)字認(rèn)證股份有限公司、中國(guó)科學(xué)院軟件研究所、中國(guó)電子技術(shù)標(biāo)準(zhǔn)化研究院、北京信安世紀(jì)科技股份有限公司、普華誠(chéng)信信息技術(shù)有限公司。本標(biāo)準(zhǔn)主要起草人:劉麗敏、李敏、王鑫、江偉玉、高能、劉宗斌、荊繼武、林雪焰、張立武、汪宗斌、ⅣGM/T0068—2019引言在提供了資源互訪接口的開(kāi)放信息系統(tǒng)中,利用桌面、手機(jī)或其他智能設(shè)備應(yīng)用程序?qū)崿F(xiàn)互聯(lián)已成為常態(tài)。為了實(shí)現(xiàn)信息資源共享、業(yè)務(wù)合作,用戶可利用某個(gè)安全域中的應(yīng)用程序(被稱為第三方應(yīng)用程序)訪問(wèn)另一個(gè)安全域中受保護(hù)的資源。為了確保受保護(hù)的資源只被資源擁有者許可的實(shí)體訪問(wèn),需要對(duì)實(shí)體進(jìn)行鑒別與授權(quán)。然而,在傳統(tǒng)的授權(quán)模型中,資源擁有者通常需要將其身份憑證共享給訪問(wèn)者,這種方式帶來(lái)了諸多安全隱患。本標(biāo)準(zhǔn)引入授權(quán)層,將第三方應(yīng)用程序與資源擁有者的角色進(jìn)行分離,在資源擁有者的授權(quán)下,授權(quán)實(shí)體向第三方應(yīng)用程序發(fā)放不同于身份憑據(jù)的令牌方式,實(shí)現(xiàn)開(kāi)放的第三方資源授權(quán)。1GM/T0068—2019開(kāi)放的第三方資源授權(quán)協(xié)議框架本標(biāo)準(zhǔn)規(guī)定了第三方資源授權(quán)協(xié)議的流程、不同類型的授權(quán)許可、協(xié)議各端點(diǎn)的功能要求以及系統(tǒng)實(shí)體之間傳遞消息的格式和參數(shù)要求等。本標(biāo)準(zhǔn)適用于在互聯(lián)網(wǎng)跨安全域應(yīng)用場(chǎng)景中,身份鑒別與授權(quán)服務(wù)的開(kāi)發(fā)、測(cè)試、評(píng)估和采購(gòu)。2規(guī)范性引用文件下列文件對(duì)于本文件的應(yīng)用是必不可少的。凡是注日期的引用文件,僅注日期的版本適用于本文件。凡是不注日期的引用文件,其最新版本(包括所有的修改單)適用于本文件。GB/T15843.3—2008信息技術(shù)安全技術(shù)實(shí)體鑒別第3部分:采用數(shù)字簽名技術(shù)的機(jī)制GB/T32905—2016信息安全技術(shù)SM3密碼雜湊算法GB/T32907—2016信息安全技術(shù)SM4分組密碼算法GB/T32918.2—2016信息安全技術(shù)SM2橢圓曲線公鑰密碼算法第2部分:數(shù)字簽名算法GB/T32918.4—2016信息安全技術(shù)SM2橢圓曲線公鑰密碼算法第4部分:公鑰加密算法GM/T0024—2014SSLVPN技術(shù)規(guī)范中基于表單的文件上傳(超文本傳輸協(xié)議鑒別AccessAuthentication)統(tǒng)一資源標(biāo)識(shí)符通用語(yǔ)法(授權(quán)框架(3術(shù)語(yǔ)和定義下列術(shù)語(yǔ)和定義適用于本文件。3.1訪問(wèn)令牌授權(quán)服務(wù)器發(fā)放的令牌,用于證明某實(shí)體具有訪問(wèn)特定范圍內(nèi)受保護(hù)資源的權(quán)限。3.2授權(quán)授予訪問(wèn)者訪問(wèn)受保護(hù)資源的權(quán)限。3.3授權(quán)碼授權(quán)服務(wù)器發(fā)放給第三方應(yīng)用程序的憑據(jù),表明資源擁有者同意第三方應(yīng)用程序訪問(wèn)受保護(hù)資源,第三方應(yīng)用程序可使用授權(quán)碼獲取訪問(wèn)令牌和刷新令牌。3.4授權(quán)端點(diǎn)授權(quán)服務(wù)器上用于與資源擁有者交互的端點(diǎn),用于接收資源擁有者的身份憑據(jù)和授權(quán),以及返回授2GM/T0068—2019權(quán)許可給第三方應(yīng)用程序。3.5授權(quán)許可授權(quán)服務(wù)器發(fā)放給第三方應(yīng)用程序的憑據(jù),表明資源擁有者同意第三方應(yīng)用程序訪問(wèn)受保護(hù)資源。第三方應(yīng)用程序不應(yīng)使用該憑據(jù)直接訪問(wèn)受保護(hù)資源,應(yīng)使用該憑據(jù)從授權(quán)服務(wù)器換取訪問(wèn)令牌。3.6授權(quán)服務(wù)器對(duì)第三方應(yīng)用程序進(jìn)行授權(quán)的服務(wù)器。授權(quán)服務(wù)器與資源服務(wù)器可以是同一實(shí)體,也可以是相互分離的兩個(gè)實(shí)體。同一臺(tái)授權(quán)服務(wù)器所發(fā)放的訪問(wèn)令牌可被多臺(tái)資源服務(wù)器識(shí)別和接受。3.7端點(diǎn)授權(quán)服務(wù)器上用于接收請(qǐng)求消息、返回響應(yīng)消息的接口。3.8終端用戶使用信息系統(tǒng)和系統(tǒng)資源的自然人。3.9重定向端點(diǎn)第三方應(yīng)用程序上用于接收授權(quán)響應(yīng)的端點(diǎn)。刷新令牌第三方應(yīng)用程序從授權(quán)服務(wù)器獲得的令牌。第三方應(yīng)用程序使用該令牌向授權(quán)服務(wù)器重新請(qǐng)求新的訪問(wèn)令牌。資源擁有者擁有受保護(hù)資源的實(shí)體,能夠?qū)κ鼙Wo(hù)資源的訪問(wèn)進(jìn)行授權(quán)。如果資源擁有者是自然人,則稱為終端用戶。資源服務(wù)器存儲(chǔ)受保護(hù)資源的服務(wù)器,能夠接收和響應(yīng)對(duì)受保護(hù)資源的訪問(wèn)請(qǐng)求。第三方應(yīng)用程序請(qǐng)求訪問(wèn)受保護(hù)資源的應(yīng)用程序。令牌授權(quán)服務(wù)器發(fā)放給第三方應(yīng)用程序的憑據(jù),分為訪問(wèn)令牌和刷新令牌兩種類型。令牌端點(diǎn)授權(quán)服務(wù)器上用于與第三方應(yīng)用程序交互的端點(diǎn),授權(quán)服務(wù)器使用該端點(diǎn)接收第三方應(yīng)用程序發(fā)起的令牌請(qǐng)求,當(dāng)授權(quán)服務(wù)器驗(yàn)證請(qǐng)求成功后,通過(guò)該端口返回令牌給第三方應(yīng)用程序。4縮略語(yǔ)下列縮略語(yǔ)適用于本文件。3GM/T0068—2019超文本傳輸協(xié)議(開(kāi)放的第三方資源授權(quán)協(xié)議框架(安全傳輸層協(xié)議(統(tǒng)一資源標(biāo)識(shí)(統(tǒng)一資源定位符(5概述本標(biāo)準(zhǔn)定義的基本協(xié)議流程如圖1所示?;緟f(xié)議流程圖流程描述了第三方應(yīng)用程序、資源擁有者、授權(quán)服務(wù)器、資源服務(wù)器等四種角色參數(shù)說(shuō)明參見(jiàn)附錄A中的A.1,協(xié)議基本流程如下:a)第三方應(yīng)用程序向資源擁有者請(qǐng)求授權(quán)。第三方應(yīng)用程序請(qǐng)求資源擁有者授權(quán)許可的方式有兩種,一種是直接發(fā)送請(qǐng)求給資源擁有者,另一種是間接地通過(guò)授權(quán)服務(wù)器作為中介發(fā)送請(qǐng)求給資源擁有者。本標(biāo)準(zhǔn)推薦第三方應(yīng)用程序使用授權(quán)服務(wù)器作為中介的方式來(lái)獲取資源擁有者的授權(quán)許可,在圖2和圖3中給出了示意;b)資源擁有者(或者資源擁有者間接地通過(guò)授權(quán)服務(wù)器,如步驟a)中所述)發(fā)放授權(quán)許可給第三方應(yīng)用程序。該授權(quán)許可是資源擁有者授權(quán)的憑據(jù),采用的類型為7.1.1所定義的四種類型之一。授權(quán)許可的類型取決于第三方應(yīng)用程序請(qǐng)求授權(quán)許可的方式(即步驟a)中描述的兩種方式)和授權(quán)服務(wù)器所支持的授權(quán)許可類型(通常由授權(quán)服務(wù)器的服務(wù)文檔提供c)第三方應(yīng)用程序?qū)κ跈?quán)服務(wù)器進(jìn)行鑒別并呈遞授權(quán)許可,向授權(quán)服務(wù)器請(qǐng)求訪問(wèn)令牌;d)授權(quán)服務(wù)器鑒別第三方應(yīng)用程序的身份并驗(yàn)證授權(quán)許可的有效性,如果第三方應(yīng)用程序身份鑒別通過(guò)且授權(quán)許可有效,則授權(quán)服務(wù)器向第三方應(yīng)用程序發(fā)放訪問(wèn)令牌;e)第三方應(yīng)用程序向資源服務(wù)器發(fā)送訪問(wèn)令牌及相關(guān)參數(shù),用以請(qǐng)求訪問(wèn)受保護(hù)資源;f)資源服務(wù)器驗(yàn)證訪問(wèn)令牌的有效性。如果訪問(wèn)令牌有效,則將請(qǐng)求的資源返回給第三方應(yīng)用程序?;谏鲜鰠f(xié)議流程,第三方應(yīng)用程序可通過(guò)資源擁有者使用的用戶代理(如瀏覽器)與資源擁有者進(jìn)行交互,在某些特定情形下(見(jiàn)7.5),第三方應(yīng)用程序可不與資源擁有者交互,直接使用第三方應(yīng)用程4GM/T0068—2019序的身份憑據(jù)獲取授權(quán)服務(wù)器發(fā)放的訪問(wèn)令牌。如果第三方應(yīng)用程序?qū)κ鼙Wo(hù)資源的訪問(wèn)超出訪問(wèn)令牌范圍或有效期,則訪問(wèn)失效,第三方應(yīng)用程序應(yīng)重新開(kāi)始協(xié)議流程或采用本標(biāo)準(zhǔn)規(guī)定的刷新機(jī)制進(jìn)行訪問(wèn)令牌更新。本標(biāo)準(zhǔn)中使用超文本傳輸協(xié)議HTTP1.1(見(jiàn)RFC2616)進(jìn)行通信?;谄渌魏螀f(xié)議的開(kāi)放的第三方資源授權(quán)協(xié)議框架,不屬于本標(biāo)準(zhǔn)的討論范圍。5.2協(xié)議通道要求對(duì)于授權(quán)碼、訪問(wèn)令牌、刷新令牌、資源擁有者口令憑據(jù)以及第三方應(yīng)用程序身份憑據(jù)等敏感的數(shù)據(jù),不應(yīng)采用明文傳輸方式,應(yīng)采用GM/T0024—2014定義的安全傳輸層協(xié)議進(jìn)行傳輸。授權(quán)服務(wù)器應(yīng)與第三方應(yīng)用程序進(jìn)行雙向鑒別。由于〈參數(shù)(見(jiàn)7.2.2)可能通過(guò)不安全信道傳輸,或被存儲(chǔ)于不安全環(huán)境,因此,它們不應(yīng)以明文形式包含第三方應(yīng)用程序或資源擁有者的敏感信息。授權(quán)過(guò)程使用了兩個(gè)授權(quán)服務(wù)器上的端點(diǎn):授權(quán)端點(diǎn);以及一個(gè)第三方應(yīng)用程序的端點(diǎn):重定向端點(diǎn)。并非每一類授權(quán)許可類型的授權(quán)流程都使用了以上三種端點(diǎn)。授權(quán)端點(diǎn)和令牌端點(diǎn)允許第三方應(yīng)用程序在請(qǐng)求中添加〈參數(shù),用該參數(shù)指明資源訪問(wèn)請(qǐng)求中請(qǐng)求的受保護(hù)資源訪問(wèn)范圍。相應(yīng)地,授權(quán)服務(wù)器通過(guò)在響應(yīng)中包含〈參數(shù)來(lái)告知第三方應(yīng)用程序其被發(fā)放的訪問(wèn)令牌的受保護(hù)資源訪問(wèn)范圍。參數(shù)的值以一組由空格分隔的大小寫(xiě)敏感的字符串表示,字符串的順序不影響解析(“ab”等價(jià)于“參數(shù)所包含字符串的含義由授權(quán)服務(wù)器定義,通常由授權(quán)服務(wù)器的服務(wù)文檔 提供。根據(jù)授權(quán)服務(wù)器的策略或者是資源擁有者的參與,授權(quán)服務(wù)器可全部或部分地拒絕第三方應(yīng)用程序所請(qǐng)求的受保護(hù)資源訪問(wèn)范圍。如果所發(fā)放的訪問(wèn)令牌的受保護(hù)資源訪問(wèn)范圍與第三方應(yīng)用程序所請(qǐng)求的不同,授權(quán)服務(wù)器應(yīng)在響應(yīng)中包含〈參數(shù),以告知第三方應(yīng)用程序其實(shí)際被允許的受保護(hù)資源訪問(wèn)范圍。如果第三方應(yīng)用程序在請(qǐng)求授權(quán)時(shí)省略了〈參數(shù),授權(quán)服務(wù)器應(yīng)使用預(yù)定義的默認(rèn)值回應(yīng)此請(qǐng)求,或者拒絕此請(qǐng)求。授權(quán)服務(wù)器應(yīng)在其服務(wù)文檔中對(duì)〈參數(shù)的要求和默認(rèn)值進(jìn)行說(shuō)明。端點(diǎn)使用URI進(jìn)行標(biāo)識(shí)。URI的典型格式是方案(主機(jī)名(路徑片段組件(見(jiàn)編碼格式。授權(quán)服務(wù)器上用于與資源擁有者交互的端點(diǎn),用于接收第三方應(yīng)用程序的授權(quán)請(qǐng)求、資源擁有者的身份憑據(jù)和授權(quán),以及返回授權(quán)許可給第三方應(yīng)用程序。當(dāng)授權(quán)服務(wù)器收到第三方應(yīng)用程序的授權(quán)請(qǐng)求時(shí),授權(quán)服務(wù)器應(yīng)首先驗(yàn)證資源擁有者的身份。授權(quán)服務(wù)器鑒別資源擁有者的方式(例如,用戶名口不屬于本標(biāo)準(zhǔn)的討論范圍。授權(quán)端點(diǎn)URI通常由授權(quán)服務(wù)器的服務(wù)文檔提供。授權(quán)端點(diǎn)的URI可包含查詢組件。當(dāng)增加其他查詢參數(shù)時(shí),應(yīng)保留該查詢組件,該端點(diǎn)URI不應(yīng)5GM/T0068—2019包含片段組件。授權(quán)服務(wù)器的授權(quán)端點(diǎn)應(yīng)支持HTTPGET方法(見(jiàn)RFC2616),同時(shí)也可支持HTTPPOST方第三方應(yīng)用程序呈遞授權(quán)許可或刷新令牌給授權(quán)服務(wù)器的令牌端點(diǎn),授權(quán)服務(wù)器驗(yàn)證請(qǐng)求后,令牌端點(diǎn)發(fā)放訪問(wèn)令牌給第三方應(yīng)用程序。除隱式許可之外的其他授權(quán)方式中,都會(huì)用到令牌端點(diǎn)。本標(biāo)準(zhǔn)不規(guī)定第三方應(yīng)用程序獲取令牌端點(diǎn)URI的方式(通常由授權(quán)服務(wù)器的服務(wù)文檔提供)。令牌端點(diǎn)URI可包含查詢組件。當(dāng)增加其他查詢參數(shù)時(shí),應(yīng)保留該查詢組件。令牌端點(diǎn)URI不應(yīng)包含片段組件。第三方應(yīng)用程序在向授權(quán)服務(wù)器的令牌端點(diǎn)請(qǐng)求訪問(wèn)令牌時(shí)應(yīng)使用POST方法。當(dāng)授權(quán)服務(wù)器的令牌端點(diǎn)收到有保密能力型的第三方應(yīng)用程序或其他被授予了身份憑據(jù)的第三方應(yīng)用程序的請(qǐng)求時(shí),授權(quán)服務(wù)器應(yīng)對(duì)第三方應(yīng)用程序進(jìn)行身份鑒別。授權(quán)服務(wù)器完成與資源擁有者的交互之后,將資源擁有者的用戶代理重定向到第三方應(yīng)用程序的重定向端點(diǎn)。第三方應(yīng)用程序在注冊(cè)階段或構(gòu)造授權(quán)請(qǐng)求階段確定其重定向端點(diǎn)URI。重定向端點(diǎn)URI應(yīng)是絕對(duì)路徑URI(見(jiàn)RFC3986)。重定向端點(diǎn)URI可包含查詢組件,在向重定向端點(diǎn)URI添加其他查詢參數(shù)時(shí),該組件應(yīng)被保留。重定向端點(diǎn)URI不應(yīng)包含片段組件。重定向端點(diǎn)安全要求任何與重定向端點(diǎn)的通信應(yīng)使用5.2要求的安全通信協(xié)議。如果5.2要求的安全協(xié)議不可用,授權(quán)服務(wù)器在重定向之前,應(yīng)當(dāng)向資源擁有者發(fā)出此端點(diǎn)不安全的警告。授權(quán)服務(wù)器應(yīng)要求下列第三方應(yīng)用程序在授權(quán)服務(wù)器上進(jìn)行注冊(cè)時(shí)(見(jiàn)6.3)登記其重定向端點(diǎn):b)采用隱式許可類型(見(jiàn)7.3)的有保密能力型的第三方應(yīng)用程序。授權(quán)服務(wù)器應(yīng)要求所有類型的第三方應(yīng)用程序在使用授權(quán)端點(diǎn)之前向授權(quán)服務(wù)器注冊(cè)第三方應(yīng)用程序的重定向端點(diǎn)。授權(quán)服務(wù)器應(yīng)要求第三方應(yīng)用程序提供完整的重定向端點(diǎn)URI。如果第三方應(yīng)用程序無(wú)法實(shí)現(xiàn)注冊(cè)完整的重定向端點(diǎn)URI,授權(quán)服務(wù)器應(yīng)要求第三方應(yīng)用程序注冊(cè)方案、主機(jī)名和路徑等三部分(在第三方應(yīng)用程序請(qǐng)求授權(quán)時(shí)只允許其變更重定向端點(diǎn)URI的查詢組件)。授權(quán)服務(wù)器允許第三方應(yīng)用程序注冊(cè)多個(gè)重定向端點(diǎn)。如果第三方應(yīng)用程序注冊(cè)了多個(gè)重定向端點(diǎn)URI,或者只注冊(cè)了重定向端點(diǎn)URI的一部分,或者沒(méi)有注冊(cè)重定向端點(diǎn)URI,第三方應(yīng)用程序在發(fā)送授權(quán)請(qǐng)求時(shí),應(yīng)在請(qǐng)求中使用〈_參數(shù)來(lái)標(biāo)識(shí)該次請(qǐng)求所使用的重定向端點(diǎn)URI。當(dāng)授權(quán)請(qǐng)求中包含重定向端點(diǎn)URI時(shí),如果第三方應(yīng)用程序注冊(cè)過(guò)重定向端點(diǎn)URI,授權(quán)服務(wù)器應(yīng)采用RFC3986第6節(jié)定義的比較和匹配方法,對(duì)收到的重定向端點(diǎn)URI和之前注冊(cè)過(guò)的重定向端點(diǎn)URI進(jìn)行比較和匹配。如果第三方應(yīng)用程序注冊(cè)了完整的URI,則授權(quán)服務(wù)器應(yīng)采用RFC3986第6.2.1節(jié)定義的簡(jiǎn)單字符串比較方法對(duì)兩個(gè)重定向端點(diǎn)URI進(jìn)行比較。如果授權(quán)請(qǐng)求由于重定向端點(diǎn)URI丟失、無(wú)效或者不匹配而未通過(guò)驗(yàn)證,授權(quán)服務(wù)器應(yīng)告知資源6GM/T0068—2019擁有者這一錯(cuò)誤,并且不得自動(dòng)將用戶代理重定向到未通過(guò)驗(yàn)證的重定向端點(diǎn)URI。發(fā)向第三方應(yīng)用程序重定向端點(diǎn)的重定向請(qǐng)求通常會(huì)獲得HTML文檔的響應(yīng),該響應(yīng)由用戶代理處理。第三方應(yīng)用程序不應(yīng)在重定向請(qǐng)求的響應(yīng)中包含任何第三方的腳本。第三方應(yīng)用程序應(yīng)從重定向請(qǐng)求的URI中解析出憑據(jù)并將用戶代理再次重定向到另外的端點(diǎn),以避免在URI或其他地方暴露憑據(jù)。6第三方應(yīng)用程序及安全要求6.1第三方應(yīng)用程序類型根據(jù)第三方應(yīng)用程序是否對(duì)其身份憑據(jù)具有保密能力,本標(biāo)準(zhǔn)定義了兩種第三方應(yīng)用程序的類型:有保密能力型第三方應(yīng)用程序有能力維持其憑據(jù)的機(jī)密性(例如,第三方應(yīng)用程序運(yùn)行在嚴(yán)格執(zhí)行訪問(wèn)控制的安全服務(wù)器上從而可通過(guò)提供安全的身份憑據(jù)來(lái)證明自己身份的真實(shí)性,或者第三方應(yīng)用程序有能力通過(guò)其他的方式(本標(biāo)準(zhǔn)不作規(guī)定)證明自己身份的真實(shí)性。無(wú)保密能力型第三方應(yīng)用程序沒(méi)有能力維持其憑據(jù)的機(jī)密性(例如,第三方應(yīng)用程序運(yùn)行在資源擁有者使用的設(shè)備上,本地應(yīng)用或是基于瀏覽器的應(yīng)用等無(wú)法提供安全的身份憑據(jù)來(lái)證明自己身份的真實(shí)性,并且沒(méi)有能力通過(guò)其他方式證明自己身份的真實(shí)性。第三方應(yīng)用程序類型的認(rèn)定取決于授權(quán)服務(wù)器的鑒別安全要求和授權(quán)服務(wù)器對(duì)第三方應(yīng)用程序憑據(jù)暴露級(jí)別的接受程度(通常由授權(quán)服務(wù)器的服務(wù)文檔提供)。授權(quán)服務(wù)器不應(yīng)對(duì)第三方應(yīng)用程序的類型進(jìn)行假定。第三方應(yīng)用程序可能由一組分布式的組件共同實(shí)現(xiàn),每個(gè)組件具有不同的第三方應(yīng)用程序類型和安全上下文(例如,第三方應(yīng)用程序同時(shí)具有基于服務(wù)器的有保密能力型組件和基于瀏覽器的無(wú)保密能力的組件)。對(duì)此類第三方應(yīng)用程序的注冊(cè)超出本標(biāo)準(zhǔn)的討論范圍,通常第三方應(yīng)用程序運(yùn)營(yíng)商可將第三方應(yīng)用程序的每個(gè)組件都注冊(cè)在授權(quán)服務(wù)器上。本標(biāo)準(zhǔn)主要涉及以下三種第三方應(yīng)用程序?qū)嵗簯?yīng)用應(yīng)用是運(yùn)行在一臺(tái)服務(wù)器上的有保密能力型第三方應(yīng)用程序。資源擁有者通過(guò)HTML用戶界面來(lái)訪問(wèn)該應(yīng)用,此HTML用戶界面由其使用的設(shè)備中的用戶代理來(lái)渲染。第三方應(yīng)用程序身份憑據(jù)以及發(fā)放給第三方應(yīng)用程序的所有訪問(wèn)令牌都存儲(chǔ)在服務(wù)器上,對(duì)資源擁有者而言是不可獲取且不可訪問(wèn)的?!\(yùn)行于用戶代理上的應(yīng)用基于用戶代理的應(yīng)用是一類無(wú)保密能力型第三方應(yīng)用程序,是從服務(wù)器下載到資源擁有者本地設(shè)備上、運(yùn)行于用戶代理(例如,瀏覽器)中的代碼。協(xié)議數(shù)據(jù)和憑據(jù)對(duì)于資源擁有者而言是可訪問(wèn)的?!镜貞?yīng)用本地應(yīng)用是安裝和運(yùn)行在資源擁有者所使用的設(shè)備上的一類無(wú)保密能力型第三方應(yīng)用程序。協(xié)議數(shù)據(jù)和憑據(jù)對(duì)于資源擁有者而言是可訪問(wèn)的。本標(biāo)準(zhǔn)假定該應(yīng)用中所包含的任何第三方應(yīng)用程序用于身份鑒別的憑據(jù)都可被提取出來(lái)。另一方面,動(dòng)態(tài)發(fā)放的憑據(jù)(例如訪問(wèn)令牌和刷新令牌)應(yīng)受到保護(hù),不應(yīng)被與該應(yīng)用交互的惡意服務(wù)器獲得,也不應(yīng)受到同一設(shè)備上其他應(yīng)用的威脅。7GM/T0068—20196.2第三方應(yīng)用程序標(biāo)識(shí)符第三方應(yīng)用程序標(biāo)識(shí)是授權(quán)服務(wù)器為注冊(cè)的第三方應(yīng)用程序發(fā)放的應(yīng)用程序標(biāo)識(shí)符。該標(biāo)識(shí)符是字符串,授權(quán)服務(wù)器使用該字符串可唯一標(biāo)識(shí)一個(gè)第三方應(yīng)用程序。本標(biāo)準(zhǔn)對(duì)第三方應(yīng)用程序標(biāo)識(shí)符的長(zhǎng)度不作規(guī)定。授權(quán)服務(wù)器應(yīng)規(guī)定該標(biāo)識(shí)符的長(zhǎng)度,并對(duì)其發(fā)放的任何長(zhǎng)度的標(biāo)識(shí)符進(jìn)行詳細(xì)記錄。第三方應(yīng)用程序不應(yīng)對(duì)此標(biāo)識(shí)的長(zhǎng)度進(jìn)行假定。6.3第三方應(yīng)用程序注冊(cè)要求在協(xié)議進(jìn)行之前,第三方應(yīng)用程序的提供商需要在授權(quán)服務(wù)器上注冊(cè)第三方應(yīng)用程序的信息(例如重定向端點(diǎn)URI、第三方應(yīng)用程序類型等建立第三方應(yīng)用程序與授權(quán)服務(wù)器的信任關(guān)系。第三方應(yīng)用程序提供商應(yīng)使用授權(quán)服務(wù)器支持的注冊(cè)方法(通常由授權(quán)服務(wù)器的服務(wù)文檔提供)完成注冊(cè)過(guò)程,具體注冊(cè)方法不屬于本標(biāo)準(zhǔn)的規(guī)定范圍。在注冊(cè)第三方應(yīng)用程序時(shí),第三方應(yīng)用程序提供商宜提供以下信息給授權(quán)服務(wù)器:c)授權(quán)服務(wù)器所要求的其他信息(如,應(yīng)用名稱、網(wǎng)站和描述等)。6.4第三方應(yīng)用程序身份鑒別6.4.1第三方應(yīng)用程序鑒別方案6.4.1.1第三方應(yīng)用程序口令憑據(jù)鑒別方案當(dāng)授權(quán)服務(wù)器使用基于口令憑據(jù)的鑒別方案對(duì)第三方應(yīng)用程序進(jìn)行鑒別時(shí),授權(quán)服務(wù)器可使用摘要訪問(wèn)鑒別方案(見(jiàn)第三方應(yīng)用程序?qū)ζ錁?biāo)識(shí)符、口令、授權(quán)服務(wù)器發(fā)送的參數(shù)值(隨機(jī)字符串,用于防止重放攻擊)使用SM3算法(見(jiàn))進(jìn)行雜湊運(yùn)算后再采用見(jiàn)編碼格式進(jìn)行編碼,將編碼后的值放在HTTP請(qǐng)求的主體部分,以POST請(qǐng)求的方式發(fā)送給授權(quán)服務(wù)器以進(jìn)行身份鑒別。請(qǐng)求中包含如下參數(shù):必選]6.2中所描述的第三方應(yīng)用程序標(biāo)識(shí)符。必選]第三方應(yīng)用程序的口令。本標(biāo)準(zhǔn)不推薦授權(quán)服務(wù)器使用口令對(duì)第三方應(yīng)用程序進(jìn)行鑒別。如果使用這種方案,第三方應(yīng)用程序的口令應(yīng)放在請(qǐng)求主體部分中進(jìn)行傳輸(即應(yīng)采用POST方式不能包含在請(qǐng)求的URI中(即不應(yīng)采用GET方式)。授權(quán)服務(wù)器和第三方應(yīng)用程序的交互應(yīng)使用SSLVPN技術(shù)規(guī)范中規(guī)定的安全通信協(xié)議(見(jiàn)5.2)。由于鑒別此類第三方應(yīng)用程序的方法涉及口令,授權(quán)服務(wù)器應(yīng)確保所有涉及口令的端點(diǎn)能夠抵御暴力攻擊。6.4.1.2第三方應(yīng)用程序數(shù)字證書(shū)鑒別方案本標(biāo)準(zhǔn)推薦授權(quán)服務(wù)器使用基于SM2算法(見(jiàn)GB/T32918.2—2016或GB/T32918.4—2016)的數(shù)字證書(shū)鑒別方案對(duì)第三方應(yīng)用程序進(jìn)行鑒別,推薦采用GB/T15843.3中規(guī)范的相關(guān)鑒別方案。對(duì)于訪問(wèn)安全要求較高的數(shù)據(jù)資源時(shí),應(yīng)使用基于SM2算法的數(shù)字證書(shū)鑒別方案。8GM/T0068—2019授權(quán)服務(wù)器可支持任何符合其安全要求的鑒別方案。當(dāng)采用其他鑒別方案時(shí),授權(quán)服務(wù)器應(yīng)記錄第三方應(yīng)用程序標(biāo)識(shí)符所對(duì)應(yīng)的鑒別方案。有保密能力型的第三方應(yīng)用程序和授權(quán)服務(wù)器之間應(yīng)確立一種滿足授權(quán)服務(wù)器安全要求(通常由授權(quán)服務(wù)器的服務(wù)文檔提供)的身份鑒別方法,使得授權(quán)服務(wù)器可以安全地對(duì)第三方應(yīng)用程序的身份進(jìn)行鑒別。授權(quán)服務(wù)器通常在有保密能力型第三方應(yīng)用程序注冊(cè)時(shí),授予第三方應(yīng)用程序身份憑據(jù)(例如口令、數(shù)字證書(shū)通過(guò)基于口令憑據(jù)或數(shù)字證書(shū)的鑒別方案對(duì)第三方應(yīng)用程序進(jìn)行身份鑒別。有保密能力型的第三方應(yīng)用程序應(yīng)確保其身份憑據(jù)的機(jī)密性。無(wú)保密能力型的第三方應(yīng)用程序可與授權(quán)服務(wù)器協(xié)商身份鑒別方法,但由于無(wú)保密能力型第三方應(yīng)用無(wú)法保證憑據(jù)的機(jī)密性,授權(quán)服務(wù)器不能僅依賴該方法對(duì)第三方應(yīng)用程序身份的真實(shí)性進(jìn)行判定。授權(quán)服務(wù)器不應(yīng)發(fā)放第三方應(yīng)用程序身份憑據(jù)給無(wú)保密能力型的第三方應(yīng)用程序。但特殊設(shè)備上的本地應(yīng)用如果具有對(duì)身份憑據(jù)的保密能力,授權(quán)服務(wù)器可發(fā)放第三方應(yīng)用程序身份憑據(jù)給該類第三方應(yīng)用程序。為了防止假冒的第三方應(yīng)用程序,授權(quán)服務(wù)器應(yīng)對(duì)第三方應(yīng)用程序的身份進(jìn)行鑒別。當(dāng)?shù)谌綉?yīng)用程序身份鑒別流程無(wú)法實(shí)施時(shí),授權(quán)服務(wù)器應(yīng)采用其他方式來(lái)驗(yàn)證第三方應(yīng)用程序的身份。例如,授權(quán)服務(wù)器可要求第三方應(yīng)用程序注冊(cè)重定向端點(diǎn)并將請(qǐng)求中的重定向端點(diǎn)URI與注冊(cè)的重定向端點(diǎn)URI進(jìn)行對(duì)比,或者要求資源擁有者參與確認(rèn)第三方應(yīng)用程序的身份(授權(quán)服務(wù)器鑒別資源擁有者的身份后,將第三方應(yīng)用程序及其請(qǐng)求的受保護(hù)資源訪問(wèn)范圍與生命周期提供給資源擁有者,由資源擁有者檢查當(dāng)前第三方應(yīng)用程序的信息,并決定授權(quán)或拒絕該請(qǐng)求)。驗(yàn)證重定向端點(diǎn)URI的有效性并要求資源擁有者參與到鑒別流程中的方式,不足以驗(yàn)證第三方應(yīng)用程序身份,但可以防止將憑據(jù)傳遞給假冒的第三方應(yīng)用程序。如下兩種情況授權(quán)服務(wù)器不應(yīng)自動(dòng)處理(未與資源擁有者主動(dòng)交互的情況下)重復(fù)的授權(quán)請(qǐng)求:a)未鑒別第三方應(yīng)用程序;b)不能確認(rèn)重復(fù)請(qǐng)求是來(lái)自真實(shí)的第三方應(yīng)用程序,而不是假冒的第三方應(yīng)用程序。授權(quán)服務(wù)器應(yīng)考慮與未授權(quán)第三方應(yīng)用程序交互的安全性,并采取措施以規(guī)避所發(fā)放的憑據(jù)(如刷新令牌)存在的暴露風(fēng)險(xiǎn)。第三方應(yīng)用程序在同一個(gè)請(qǐng)求中只允許使用一種身份鑒別方案。7授權(quán)流程授權(quán)許可可用于獲取訪問(wèn)令牌和刷新令牌(可選)。本標(biāo)準(zhǔn)定義了四種授權(quán)許可類型—授權(quán)碼許可、隱式許可、資源擁有者口令憑據(jù)許可和第三方應(yīng)用程序身份憑據(jù)許可。第三方應(yīng)用程序不直接向資源擁有者請(qǐng)求授權(quán),而是以授權(quán)服務(wù)器為中介向資源擁有者請(qǐng)求授權(quán)。第三方應(yīng)用程序?qū)①Y源擁有者的用戶代理重定向到授權(quán)服務(wù)器,授權(quán)服務(wù)器與資源擁有者交互,對(duì)資源擁有者的身份進(jìn)行鑒別,并征得資源擁有者授權(quán)后,將資源擁有者的用戶代理重定向到第三方應(yīng)用程9GM/T0068—2019序,并在重定向消息中攜帶授權(quán)碼。授權(quán)碼許可類型適合有保密能力型的第三方應(yīng)用程序。授權(quán)碼許可類型可用于獲取訪問(wèn)令牌和刷新令牌。隱式許可類型是授權(quán)碼許可類型的簡(jiǎn)化版本,隱式許可類型不涉及授權(quán)碼,授權(quán)服務(wù)器直接發(fā)送訪問(wèn)令牌(作為資源擁有者授權(quán)的結(jié)果)給第三方應(yīng)用程序。由于第三方應(yīng)用程序無(wú)需使用授權(quán)碼換取訪問(wèn)令牌,而是直接獲取訪問(wèn)令牌,因此該授權(quán)許可類型稱為隱式許可。隱式許可類型適用于腳本語(yǔ)言(如實(shí)現(xiàn)的、內(nèi)嵌于瀏覽器的第三方應(yīng)用程序訪問(wèn)受保護(hù)資源的場(chǎng)景。隱式許可類型可用于獲取訪問(wèn)令牌,不能獲取刷新令牌。7.1.4資源擁有者口令憑據(jù)許可資源擁有者口令憑據(jù)可作為授權(quán)許可,用于獲取訪問(wèn)令牌。資源擁有者口令憑據(jù)許可類型適用于資源擁有者與第三方應(yīng)用程序之間存在高度互信的情況(例如,第三方應(yīng)用程序是操作系統(tǒng)的一部分或者某個(gè)特權(quán)應(yīng)用)。該類型也適用于能夠通過(guò)其他方式獲取到資源擁有者口令憑據(jù)的第三方應(yīng)用程序。7.1.5第三方應(yīng)用程序身份憑據(jù)許可第三方應(yīng)用程序身份憑據(jù)(或其他形式的能夠用于第三方應(yīng)用程序身份鑒別的信息)可作為授權(quán)許可,用于獲取訪問(wèn)令牌。第三方應(yīng)用程序身份憑據(jù)許可類型適用于以下場(chǎng)景:a)受保護(hù)資源由第三方應(yīng)用程序控制的場(chǎng)景;b)經(jīng)過(guò)協(xié)商(協(xié)商的方式本標(biāo)準(zhǔn)不作要求授權(quán)服務(wù)器同意第三方應(yīng)用程序訪問(wèn)受保護(hù)資源的場(chǎng)景。7.2授權(quán)碼許可流程授權(quán)碼許可流程見(jiàn)圖2,包括以下步驟:圖2授權(quán)碼協(xié)議流程a)第三方應(yīng)用程序通過(guò)將資源擁有者的用戶代理重定向到授權(quán)端點(diǎn)(圖2中有兩個(gè)a),即表示GM/T0068—2019重定向的過(guò)程)向授權(quán)服務(wù)器發(fā)送授權(quán)請(qǐng)求(見(jiàn)7.2.2)。授權(quán)請(qǐng)求中包含第三方應(yīng)用程序標(biāo)識(shí)符、申請(qǐng)的受保護(hù)資源訪問(wèn)范圍、本地狀態(tài)和第三方應(yīng)用程序的重定向端點(diǎn)URI(圖2中僅標(biāo)出了第三方應(yīng)用程序標(biāo)識(shí)符和重定向端點(diǎn)URI作為示例,通常請(qǐng)求中會(huì)包括更多參數(shù)其中重定向端點(diǎn)URI用于第三方應(yīng)用程序接收來(lái)自授權(quán)服務(wù)器的關(guān)于授權(quán)的結(jié)果。b)授權(quán)服務(wù)器(通過(guò)用戶代理)鑒別資源擁有者并詢問(wèn)資源擁有者是否允許第三方應(yīng)用程序的訪b)表示授權(quán)服務(wù)器通過(guò)資源擁有者的用戶代理鑒別資源擁有者的過(guò)c)假定資源擁有者同意了此次訪問(wèn),授權(quán)服務(wù)器使用重定向端點(diǎn)URI(見(jiàn)5.3.4)將用戶代理重定向到第三方應(yīng)用程序(圖2中有兩個(gè)c),即表示重定向的過(guò)程)。重定向端點(diǎn)URI中包含授權(quán)碼和步驟a)中由第三方應(yīng)用程序提供的本地狀態(tài)(圖2中未表示出本地狀態(tài))。d)第三方應(yīng)用程序向授權(quán)服務(wù)器的令牌端點(diǎn)發(fā)送訪問(wèn)令牌請(qǐng)求(見(jiàn)7.2.4),該請(qǐng)求包含上一步驟中獲得的授權(quán)碼。在構(gòu)造本次請(qǐng)求時(shí),第三方應(yīng)用程序應(yīng)對(duì)授權(quán)服務(wù)器進(jìn)行身份鑒別。同時(shí)第三方應(yīng)用程序應(yīng)在請(qǐng)求中包含其接收授權(quán)碼的重定向端點(diǎn)URI。e)授權(quán)服務(wù)器鑒別第三方應(yīng)用程序,驗(yàn)證授權(quán)碼的有效性,并確保收到的重定向端點(diǎn)URI與此前步驟中的重定向端點(diǎn)URI相同。如果驗(yàn)證通過(guò),授權(quán)服務(wù)器返回訪問(wèn)令牌(可同時(shí)返回刷新令牌)給第三方應(yīng)用程序。在授權(quán)碼流程中,應(yīng)滿足以下安全要求:授權(quán)碼應(yīng)使用GM/T0024—2014中描述的安全通信協(xié)議傳輸。b)在發(fā)放授權(quán)碼時(shí),如果授權(quán)服務(wù)器可以鑒別第三方應(yīng)用程序,授權(quán)服務(wù)器應(yīng)鑒別該第三方應(yīng)用程序(見(jiàn)6.4),以確保授權(quán)碼發(fā)放給正確的第三方應(yīng)用程序。c)授權(quán)碼應(yīng)為一次性有效,且授權(quán)碼應(yīng)具有較短的生命周期。如果授權(quán)服務(wù)器發(fā)現(xiàn)某個(gè)授權(quán)碼被多次使用,授權(quán)服務(wù)器應(yīng)撤銷利用該授權(quán)碼發(fā)放的所有訪問(wèn)令牌(或/和刷新令牌)。參數(shù)指定重定向端點(diǎn)URI。如果攻擊者可以篡改重定向端點(diǎn)URI的值,將導(dǎo)致授權(quán)服務(wù)器把資源擁有者的用戶代理重定向到攻擊者控制的端點(diǎn)(重定向請(qǐng)求中包含授權(quán)碼)。為了避免此類攻擊,授權(quán)服務(wù)器應(yīng)保證用于獲取授權(quán)碼的重定向端點(diǎn)URI與用授權(quán)碼獲取訪問(wèn)令牌時(shí)提供的重定向端點(diǎn)URI一致。授權(quán)服務(wù)器應(yīng)要求無(wú)保密能力的第三方應(yīng)用程序注冊(cè)重定向端點(diǎn)URI,宜要求有保密能力的第三方應(yīng)用程序注冊(cè)重定向端點(diǎn)URI。如果請(qǐng)求中包含重定向端點(diǎn)URI,授權(quán)服務(wù)器應(yīng)根據(jù)注冊(cè)值進(jìn)行驗(yàn)證。第三方應(yīng)用程序通過(guò)將以下參數(shù)添加到授權(quán)端點(diǎn)URI的查詢組件,來(lái)構(gòu)造授權(quán)請(qǐng)求:必選參數(shù)值應(yīng)為“必選]6.2中所描述的第三方應(yīng)用程序標(biāo)識(shí)符。可選]可選]請(qǐng)求訪問(wèn)受保護(hù)資源的范圍。推薦]a)中的本地狀態(tài)。開(kāi)發(fā)者應(yīng)確保該值的不可猜測(cè)性。授權(quán)服務(wù)器在將用戶代理重定向到第三方應(yīng)用程序時(shí),在重定向請(qǐng)求中包含此值。第三方應(yīng)用程序開(kāi)發(fā)者宜使用該參數(shù),以防止跨GM/T0068—2019站點(diǎn)請(qǐng)求偽造攻擊。授權(quán)服務(wù)器應(yīng)驗(yàn)證授權(quán)請(qǐng)求的有效性,以確保所有必選參數(shù)都存在且有效。如果驗(yàn)證請(qǐng)求有效,授權(quán)服務(wù)器將對(duì)資源擁有者的身份進(jìn)行鑒別并從資源擁有者處獲得授權(quán)決定(通過(guò)直接詢問(wèn)資源擁有者的方式或其他方式)。如果資源擁有者允許本次授權(quán)請(qǐng)求,授權(quán)服務(wù)器應(yīng)給第三方應(yīng)用程序發(fā)放授權(quán)碼(通過(guò)重定向的方式)。授權(quán)服務(wù)器向重定向端點(diǎn)URI的查詢組件添加如下參數(shù)(參數(shù)經(jīng)過(guò)UTF-8編碼后,再使用“ap-必選]由授權(quán)服務(wù)器產(chǎn)生的授權(quán)碼。為降低泄露的風(fēng)險(xiǎn),該授權(quán)碼應(yīng)在發(fā)放后短時(shí)間內(nèi)失效。推薦授權(quán)碼最長(zhǎng)生命周期為10第三方應(yīng)用程序不得重復(fù)使用該授權(quán)碼。如果授權(quán)碼被重復(fù)使用,授權(quán)服務(wù)器應(yīng)拒絕該次請(qǐng)求并撤銷此前基于該授權(quán)碼所發(fā)放的所有訪問(wèn)令牌。授權(quán)服務(wù)器應(yīng)將授權(quán)碼與第三方應(yīng)用程序標(biāo)識(shí)符、重定向URI進(jìn)行綁定。b)〈state〉如果第三方應(yīng)用程序的授權(quán)請(qǐng)求中含有此參數(shù),則授權(quán)響應(yīng)中也應(yīng)包含此參數(shù)。該參數(shù)的值與第三方應(yīng)用程序授權(quán)請(qǐng)求中的〈值相同。第三方應(yīng)用程序應(yīng)忽略未識(shí)別的響應(yīng)參數(shù)。本標(biāo)準(zhǔn)對(duì)授權(quán)碼的字符串長(zhǎng)度不做定義。第三方應(yīng)用程序不宜對(duì)字符串長(zhǎng)度做出假定。授權(quán)服務(wù)器應(yīng)在服務(wù)文檔中說(shuō)明其所有發(fā)放的參數(shù)值的長(zhǎng)度。如果由于重定向端點(diǎn)URI丟失、無(wú)效或不匹配,或由于第三方應(yīng)用程序標(biāo)識(shí)符丟失或無(wú)效等原因出錯(cuò),授權(quán)服務(wù)器應(yīng)當(dāng)告知資源擁有者這一錯(cuò)誤,并且不得自動(dòng)將用戶代理重定向至無(wú)效的重定向端點(diǎn)URI。如果由于資源擁有者拒絕訪問(wèn)請(qǐng)求或是由于重定向端點(diǎn)URI有誤之外的其他原因?qū)е率跈?quán)失敗,授權(quán)服務(wù)器應(yīng)向重定向端點(diǎn)URI的查詢組件添加如下參數(shù),以通知第三方應(yīng)用程序出錯(cuò)原因:必選]ASCII碼格式的錯(cuò)誤代碼,錯(cuò)誤代碼類型如下所示:表示請(qǐng)求中丟失了必選參數(shù),或存在無(wú)效參數(shù),或重復(fù)包含了某個(gè)參數(shù),或是其他形式的格式錯(cuò)誤;表示該第三方應(yīng)用程序無(wú)權(quán)使用當(dāng)前方法請(qǐng)求授權(quán)碼;表示授權(quán)服務(wù)器拒絕訪問(wèn)請(qǐng)求(注:不區(qū)分資源擁有者拒絕請(qǐng)求和授權(quán)服務(wù)器拒絕請(qǐng)求,均采用相同的錯(cuò)誤代碼類型表示授權(quán)服務(wù)器不支持授權(quán)碼許可類型;表示所請(qǐng)求的資源訪問(wèn)范圍無(wú)效、未知或是形式不當(dāng);表示授權(quán)服務(wù)器遇到了意外情況從而不能響應(yīng)該請(qǐng)求(該錯(cuò)誤代碼是需要的,因?yàn)镠TTP的500內(nèi)部服務(wù)器錯(cuò)誤代碼不能通過(guò)HTTP重定向返回表示由于暫時(shí)的過(guò)載或是服務(wù)器維護(hù),授權(quán)服務(wù)器目前無(wú)法處理該請(qǐng)求(該錯(cuò)誤代碼是需要的,因?yàn)镠TTP的503服務(wù)錯(cuò)誤代碼不能通過(guò)HTTP重定向返回參數(shù)的值不應(yīng)包含集合之外的字符。GM/T0068—2019可選]終端用戶可讀的ASCII文本,提供附加信息以幫助第三方應(yīng)用程序的開(kāi)發(fā)者理解出現(xiàn)的錯(cuò)誤??蛇x]用于標(biāo)識(shí)網(wǎng)頁(yè),該網(wǎng)頁(yè)含有終端用戶可讀的、關(guān)于該錯(cuò)誤更多信息。該參數(shù)的值應(yīng)遵循語(yǔ)法并且不得包含集合之外的字符。d)〈state〉如果第三方應(yīng)用程序的授權(quán)請(qǐng)求中含有此參數(shù),則響應(yīng)中也應(yīng)包含此參數(shù)。響應(yīng)中該參數(shù)的值與授權(quán)請(qǐng)求中的值相同。第三方應(yīng)用程序向令牌端點(diǎn)發(fā)送請(qǐng)求,以獲取訪問(wèn)令牌。第三方應(yīng)用程序應(yīng)在請(qǐng)求的主體部分添加如下參數(shù)參數(shù)經(jīng)過(guò)編碼后再使用必選]必選]從授權(quán)服務(wù)器獲得的授權(quán)碼。c)〈redirecturi〉如果第三方應(yīng)用程序在7.2.2的授權(quán)請(qǐng)求中包含此參數(shù),則在該請(qǐng)求中也應(yīng)包含此參數(shù)。應(yīng)確保該參數(shù)兩次的值相同。d)〈clientid〉如果第三方應(yīng)用程序未按照6.4的要求被授權(quán)服務(wù)器鑒別身份,則第三方應(yīng)用程序應(yīng)在該請(qǐng)求中添加此參數(shù)。如果第三方應(yīng)用程序的類型為有保密能力型,或該第三方應(yīng)用程序被發(fā)放了第三方應(yīng)用程序身份憑據(jù)(或被其他鑒別要求所約束該第三方應(yīng)用程序應(yīng)如6.4所述被授權(quán)服務(wù)器鑒別身份。授權(quán)服務(wù)器應(yīng):—要求對(duì)有保密能力型的第三方應(yīng)用程序或任何被發(fā)放過(guò)第三方應(yīng)用程序身份憑據(jù)(或被其他鑒別要求所約束)的第三方應(yīng)用程序進(jìn)行身份鑒別;—如果需要鑒別該第三方應(yīng)用程序,則執(zhí)行鑒別流程;—確保發(fā)放授權(quán)碼給正確的第三方應(yīng)用程序,即通過(guò)了身份鑒別的有保密能力型第三方應(yīng)用程參數(shù)所標(biāo)識(shí)的無(wú)保密能力型第三方應(yīng)用程序;—驗(yàn)證授權(quán)碼是否有效;參數(shù),則授權(quán)服務(wù)器應(yīng)確保該請(qǐng)求中也包含此參數(shù),且確保該參數(shù)兩次的值相同。如果訪問(wèn)令牌請(qǐng)求是有效的,授權(quán)服務(wù)器應(yīng)按照8.2.2所述發(fā)放訪問(wèn)令牌和刷新令牌(可選的)。如果授權(quán)服務(wù)器對(duì)發(fā)起訪問(wèn)令牌請(qǐng)求的第三方應(yīng)用程序的身份鑒別失敗,或?qū)υL問(wèn)令牌請(qǐng)求的驗(yàn)證失敗,授權(quán)服務(wù)器應(yīng)返回8.2.3所述的出錯(cuò)響應(yīng)。7.3隱式許可流程隱式許可流程見(jiàn)圖3,包括以下步驟:GM/T0068—2019圖3隱式許可流程a)第三方應(yīng)用程序通過(guò)將資源擁有者的用戶代理重定向到授權(quán)端點(diǎn)(圖3中有兩個(gè)a),即表示重定向的過(guò)程)發(fā)送授權(quán)請(qǐng)求(見(jiàn)7.3.2)。第三方應(yīng)用程序發(fā)送的請(qǐng)求中包含第三方應(yīng)用程序標(biāo)識(shí)符、申請(qǐng)的受保護(hù)資源訪問(wèn)范圍、本地狀態(tài)和第三方應(yīng)用程序的重定向端點(diǎn)URI(圖3中僅標(biāo)出了第三方應(yīng)用程序標(biāo)識(shí)符和重定向端點(diǎn)URI作為示例,通常請(qǐng)求中會(huì)包括更多參數(shù)該重定向端點(diǎn)URI用于第三方應(yīng)用程序接收來(lái)自授權(quán)服務(wù)器的關(guān)于授權(quán)的結(jié)果。b)授權(quán)服務(wù)器(通過(guò)用戶代理)鑒別資源擁有者并詢問(wèn)資源擁有者是否允許第三方應(yīng)用程序的訪b)表示授權(quán)服務(wù)器通過(guò)資源擁有者的用戶代理鑒別資源擁有者的過(guò)c)假定資源擁有者同意了此次訪問(wèn),授權(quán)服務(wù)器使用第三方應(yīng)用程序在注冊(cè)時(shí)提供的重定向端點(diǎn)URI(該重定向端點(diǎn)URI是圖3中的第三方應(yīng)用程序資源端點(diǎn)URI)向資源擁有者的用戶代理發(fā)送重定向請(qǐng)求,并在重定向端點(diǎn)URI的片段組件包含訪問(wèn)令牌。d)用戶代理根據(jù)重定向請(qǐng)求,使用重定向端點(diǎn)URI(不包括片段組件)向第三方應(yīng)用程序的資源發(fā)送請(qǐng)求。用戶代理將重定向端點(diǎn)URI中的片段組件保留在本地。資源返回網(wǎng)頁(yè)(通常是帶有內(nèi)嵌腳本的HTML文檔該網(wǎng)頁(yè)能夠讀取用戶代理本地保留的完整的重定向URI,并能夠把片段組件所包含的訪問(wèn)令牌(以及其他參數(shù))提取出來(lái)。f)資源擁有者的用戶代理在本地執(zhí)行步驟e)中返回的腳本,用于提取訪問(wèn)令牌。步驟e)中返回的腳本使用用戶代理將提取出來(lái)的訪問(wèn)令牌發(fā)送給第三方應(yīng)用程序。隱私許可流程中,應(yīng)進(jìn)行如下安全考慮:a)隱式許可流程不包含對(duì)第三方應(yīng)用程序的身份鑒別流程。在某些特定情況下,授權(quán)服務(wù)器可驗(yàn)證第三方應(yīng)用程序的身份。例如授權(quán)服務(wù)器通過(guò)驗(yàn)證請(qǐng)求中的重定向端點(diǎn)URI與第三方應(yīng)用程序注冊(cè)時(shí)提供的重定向端點(diǎn)URI是否一致,從而驗(yàn)證第三方應(yīng)用程序的身份。b)由于授權(quán)服務(wù)器所發(fā)放的訪問(wèn)令牌會(huì)被編碼到重定向端點(diǎn)URI中,因此訪問(wèn)令牌可能暴露給資源擁有者或其他能夠訪問(wèn)資源擁有者用戶代理的應(yīng)用程序。GM/T0068—2019c)由于隱式許可流程減少了使用授權(quán)碼獲取訪問(wèn)令牌的環(huán)節(jié),因此該流程可提升某些第三方應(yīng)用程序(例如瀏覽器內(nèi)嵌的應(yīng)用程序)的響應(yīng)能力和效率。然而,若能使用授權(quán)碼許可流程和隱式許可流程等多類流程,應(yīng)在隱式許可流程帶來(lái)的性能提升和其帶來(lái)的安全性問(wèn)題等兩方面進(jìn)行權(quán)衡。第三方應(yīng)用程序通過(guò)將以下參數(shù)添加到授權(quán)端點(diǎn)URI的查詢組件,來(lái)構(gòu)造授權(quán)請(qǐng)求的URI:必選參數(shù)值應(yīng)為“必選]6.2中所描述的第三方應(yīng)用程序標(biāo)識(shí)符;可選]可選]推薦]中的本地狀態(tài)。開(kāi)發(fā)者應(yīng)確保該值的不可猜測(cè)性。授權(quán)服務(wù)器在將用戶代理重定向回第三方應(yīng)用程序時(shí),在重定向請(qǐng)求中包含此值。第三方應(yīng)用程序開(kāi)發(fā)者宜使用該參數(shù),以防止跨站點(diǎn)請(qǐng)求偽造攻擊。授權(quán)服務(wù)器應(yīng)驗(yàn)證授權(quán)請(qǐng)求的有效性,以確保所有必選參數(shù)都存在且有效。如果驗(yàn)證請(qǐng)求有效,授權(quán)服務(wù)器將對(duì)資源擁有者的身份進(jìn)行鑒別并從資源擁有者處獲得授權(quán)決定(通過(guò)直接詢問(wèn)資源擁有者的方式或其他方式)。如果資源擁有者允許本次授權(quán)請(qǐng)求,授權(quán)服務(wù)器應(yīng)給第三方應(yīng)用程序發(fā)放訪問(wèn)令牌。授權(quán)服務(wù)器向重定向端點(diǎn)URI的片段組件添加如下參數(shù)(參數(shù)經(jīng)過(guò)UTF-8編碼后,再使用“必選]授權(quán)服務(wù)器發(fā)放的訪問(wèn)令牌;必選]8.1描述的令牌類型;推薦]訪問(wèn)令牌的生命周期,以秒為單位。例如,“3600”表示該訪問(wèn)令牌將在響應(yīng)發(fā)出1小時(shí)后失效。如果本參數(shù)被省略,授權(quán)服務(wù)器應(yīng)通過(guò)其他方式提供失效時(shí)間,或公布缺省值;如果該參數(shù)的值與第三方應(yīng)用程序授權(quán)請(qǐng)求中的〈參數(shù)值相同,則該參數(shù)是可選的;其他情況下,該參數(shù)是必選的;e)〈state〉如果第三方應(yīng)用程序的授權(quán)請(qǐng)求中含有此參數(shù),則授權(quán)響應(yīng)中也應(yīng)包含此參數(shù)。該參數(shù)的值與第三方應(yīng)用程序授權(quán)請(qǐng)求中的〈值相同。在隱式許可類型的流程中,授權(quán)服務(wù)器不得發(fā)放刷新令牌。GM/T0068—2019第三方應(yīng)用程序應(yīng)忽略未識(shí)別的響應(yīng)參數(shù)。本標(biāo)準(zhǔn)對(duì)授權(quán)碼的字符串長(zhǎng)度不做定義。第三方應(yīng)用程序不宜對(duì)字符串長(zhǎng)度做出假定。授權(quán)服務(wù)器應(yīng)在其文檔中說(shuō)明其發(fā)放所有參數(shù)值的長(zhǎng)度。如果由于重定向端點(diǎn)URI丟失、無(wú)效或不匹配,或由于第三方應(yīng)用程序標(biāo)識(shí)符丟失或無(wú)效等原因出錯(cuò),授權(quán)服務(wù)器應(yīng)當(dāng)告知資源擁有者這一錯(cuò)誤,并且不得自動(dòng)將用戶代理重定向至無(wú)效的重定向端點(diǎn)URI。如果由于資源擁有者拒絕訪問(wèn)請(qǐng)求或是由于重定向端點(diǎn)URI有誤之外的其他原因?qū)е挛词跈?quán),授權(quán)服務(wù)器將通過(guò)向重定向端點(diǎn)URI的片段組件添加如下參數(shù)的方式通知第三方應(yīng)用程序出錯(cuò)原因:必選]ASCII碼格式的錯(cuò)誤代碼,錯(cuò)誤代碼類型如下所示:表示請(qǐng)求中丟失了必選參數(shù),存在無(wú)效參數(shù),或重復(fù)包含了某個(gè)參數(shù),或是其他形式的格式錯(cuò)誤;表示該第三方應(yīng)用程序無(wú)權(quán)使用當(dāng)前方法請(qǐng)求授權(quán)碼;表示資源擁有者或授權(quán)服務(wù)器拒絕了訪問(wèn)請(qǐng)求;表示授權(quán)服務(wù)器不支持授權(quán)碼許可類型;表示所請(qǐng)求的資源訪問(wèn)范圍無(wú)效、未知或是形式不當(dāng);表示授權(quán)服務(wù)器遇到了意外情況從而不能響應(yīng)該請(qǐng)求(該錯(cuò)誤代碼是需要的,因?yàn)镠TTP的500內(nèi)部服務(wù)器錯(cuò)誤代碼不能通過(guò)HTTP重定向返回表示由于暫時(shí)的過(guò)載或是服務(wù)器維護(hù),授權(quán)服務(wù)器目前無(wú)法處理該請(qǐng)求(該錯(cuò)誤代碼是需要的,因?yàn)镠TTP的503服務(wù)錯(cuò)誤代碼不能通過(guò)HTTP重定向返回參數(shù)的值不應(yīng)包含集合之外的字符??蛇x]終端用戶可讀的ASCII文本,提供附加信息以幫助第三方應(yīng)用程序的開(kāi)發(fā)者理解出現(xiàn)的錯(cuò)誤??蛇x]用于標(biāo)識(shí)網(wǎng)頁(yè),該網(wǎng)頁(yè)含有終端用戶可讀的、關(guān)于該錯(cuò)誤更多信息。該參數(shù)的值應(yīng)遵循語(yǔ)法并且不得包含集合之外的字符。d)〈state〉如果第三方應(yīng)用程序的授權(quán)請(qǐng)求中含有此參數(shù),則響應(yīng)中也應(yīng)包含此參數(shù)。響應(yīng)中該參數(shù)的值與授權(quán)請(qǐng)求中的值相同。7.4資源擁有者口令憑據(jù)許可流程資源擁有者口令憑據(jù)許可類型流程見(jiàn)圖4,包括以下步驟:GM/T0068—2019圖4資源擁有者口令憑據(jù)許可流程a)資源擁有者向第三方應(yīng)用程序提供其用戶名和口令;b)第三發(fā)應(yīng)用程序向授權(quán)服務(wù)器提供資源擁有者的用戶名和口令,請(qǐng)求訪問(wèn)令牌。發(fā)送請(qǐng)求時(shí),第三方應(yīng)用程序應(yīng)鑒別授權(quán)服務(wù)器的身份;c)授權(quán)服務(wù)器鑒別第三方應(yīng)用程序的身份并驗(yàn)證資源擁有者用戶名口令的有效性,如果有效,授權(quán)服務(wù)器發(fā)放訪問(wèn)令牌。在資源擁有者口令憑據(jù)許可流程中,應(yīng)滿足以下安全要求:a)資源擁有者的口令憑據(jù)僅在換取訪問(wèn)令牌時(shí)使用。第三方應(yīng)用程序無(wú)需存儲(chǔ)資源擁有者的口令憑據(jù)。該授權(quán)許可類型一定程度上降低了第三方應(yīng)用程序存儲(chǔ)用戶名和口令的風(fēng)險(xiǎn),但沒(méi)有降低將高特權(quán)憑據(jù)暴露給第三方應(yīng)用程序的風(fēng)險(xiǎn)。b)由于資源擁有者不能控制授權(quán)流程(當(dāng)資源擁有者把口令憑據(jù)交給第三方應(yīng)用程序時(shí),資源擁有者的參與即結(jié)束第三方應(yīng)用程序可能獲得比資源擁有者要求的更大受保護(hù)資源訪問(wèn)范圍的訪問(wèn)令牌。授權(quán)服務(wù)器應(yīng)根據(jù)授權(quán)許可類型來(lái)設(shè)定訪問(wèn)令牌的受保護(hù)資源訪問(wèn)范圍和生命周期。c)授權(quán)服務(wù)器應(yīng)當(dāng)謹(jǐn)慎采用此種類型的授權(quán)許可,只有當(dāng)資源擁有者與第三方應(yīng)用程序之間高度互信且無(wú)法采用其他類型的授權(quán)許可流程時(shí),才允許使用該流程。7.4.2授權(quán)請(qǐng)求和授權(quán)響應(yīng)第三方應(yīng)用程序獲取資源擁有者口令憑據(jù)的方式不在本標(biāo)準(zhǔn)的討論范圍內(nèi)。第三方應(yīng)用程序在獲得訪問(wèn)令牌后應(yīng)銷毀資源擁有者口令憑據(jù)。第三方應(yīng)用程序向令牌端點(diǎn)發(fā)送請(qǐng)求,在該請(qǐng)求的主體部分添加如下參數(shù)(參數(shù)經(jīng)過(guò)UTF-8編碼后再使用必選參數(shù)值應(yīng)為必選]資源擁有者的用戶名;必選]資源擁有者的口令;GM/T0068—2019可選]7.2.2所描述的請(qǐng)求訪問(wèn)受保護(hù)資源的范圍。如果第三方應(yīng)用程序的類型為有保密能力型,或該第三方應(yīng)用程序被發(fā)放了第三方應(yīng)用程序身份憑據(jù)(或被其他鑒別要求所約束該第三方應(yīng)用程序應(yīng)如7.3.2所述被授權(quán)服務(wù)器鑒別身份。授權(quán)服務(wù)器應(yīng):—要求對(duì)有保密能力型的第三方應(yīng)用程序或任何被發(fā)放過(guò)第三方應(yīng)用程序身份憑據(jù)(或被其他鑒別要求所約束)的第三方應(yīng)用程序進(jìn)行身份鑒別;—如果需要鑒別該第三方應(yīng)用程序,則執(zhí)行鑒別流程;—用口令驗(yàn)證算法驗(yàn)證資源擁有者的口令憑據(jù)。由于訪問(wèn)令牌請(qǐng)求使用了資源擁有者的口令憑據(jù),授權(quán)服務(wù)器應(yīng)使令牌端點(diǎn)具有抵御暴力攻擊的能力(例如,使用速度限制或產(chǎn)生告警等)。如果訪問(wèn)令牌請(qǐng)求是有效的,授權(quán)服務(wù)器應(yīng)按照8.2.2所述發(fā)放訪問(wèn)令牌和刷新令牌(可選的)。如果授權(quán)服務(wù)器對(duì)發(fā)起訪問(wèn)令牌請(qǐng)求的第三方應(yīng)用程序的身份鑒別失敗,或?qū)υL問(wèn)令牌請(qǐng)求的驗(yàn)證失敗,授權(quán)服務(wù)器應(yīng)返回8.2.3所述的出錯(cuò)響應(yīng)。7.5第三方應(yīng)用程序身份憑據(jù)許可流程第三方應(yīng)用程序身份憑據(jù)許可流程見(jiàn)圖5,包括以下步驟:圖5第三方應(yīng)用程序憑據(jù)許可流程a)第三方應(yīng)用程序?qū)κ跈?quán)服務(wù)器進(jìn)行身份鑒別,并向授權(quán)服務(wù)器的令牌端點(diǎn)發(fā)送訪問(wèn)令牌請(qǐng)求;b)授權(quán)服務(wù)器鑒別第三方應(yīng)用程序的身份,如果身份鑒別通過(guò),則發(fā)放訪問(wèn)令牌。在第三方應(yīng)用程序身份憑據(jù)許可流程中,應(yīng)滿足以下安全要求:a)授權(quán)服務(wù)器應(yīng)要求第三方應(yīng)用程序提前注冊(cè),注冊(cè)完成后,授權(quán)服務(wù)器將生成的第三方應(yīng)用程序身份憑據(jù)發(fā)放給第三方應(yīng)用程序。第三方應(yīng)用程序的身份憑據(jù)應(yīng)能抵抗猜測(cè)攻擊。b)僅有保密能力型的第三方應(yīng)用程序能夠使用第三方應(yīng)用程序身份憑據(jù)許可類型。7.5.2授權(quán)請(qǐng)求和響應(yīng)第三方應(yīng)用程序鑒別結(jié)果被用作授權(quán)許可,無(wú)需額外的授權(quán)請(qǐng)求。第三方應(yīng)用程序向令牌端點(diǎn)發(fā)送請(qǐng)求,在該請(qǐng)求的主體部分添加如下參數(shù)(參數(shù)經(jīng)過(guò)UTF-8編碼后再使用必選]可選]GM/T0068—20197.2.2所描述的請(qǐng)求訪問(wèn)受保護(hù)資源的范圍。授權(quán)服務(wù)器應(yīng)如6.4所述鑒別第三方應(yīng)用程序的身份。如果訪問(wèn)令牌請(qǐng)求是有效的,授權(quán)服務(wù)器按照8.2.2所述發(fā)放訪問(wèn)令牌,響應(yīng)中不得包含刷新令牌。如果授權(quán)服務(wù)器對(duì)發(fā)起訪問(wèn)令牌請(qǐng)求的第三方應(yīng)用程序的身份鑒別失敗,或?qū)Φ谌綉?yīng)用程序請(qǐng)求的驗(yàn)證失敗,則授權(quán)服務(wù)器返回8.2.3所述的出錯(cuò)響應(yīng)。訪問(wèn)令牌是授權(quán)服務(wù)器發(fā)放給第三方應(yīng)用程序用于訪問(wèn)受保護(hù)資源的憑據(jù)。訪問(wèn)令牌使用字符串表示,表明第三方應(yīng)用程序擁有了資源擁有者的授權(quán)。訪問(wèn)令牌對(duì)于第三方應(yīng)用程序而言通常是不易解讀的。訪問(wèn)令牌中給出了受保護(hù)資源的訪問(wèn)范圍和訪問(wèn)有效期,訪問(wèn)范圍和訪問(wèn)有效期由資源擁有者授權(quán)同意,并由資源服務(wù)器和授權(quán)服務(wù)器實(shí)施。訪問(wèn)令牌可作為提取授權(quán)信息的標(biāo)識(shí)符;也可自身包含授權(quán)信息,訪問(wèn)令牌中包含的授權(quán)信息可通GB/T32905—2016)對(duì)訪問(wèn)令牌的內(nèi)容進(jìn)行雜湊運(yùn)算,再使用SM2算法(見(jiàn)GB/T32918.2—2016),最后使用SM4算法(見(jiàn)GB/T32907—2016),將最后簽名加密處理過(guò)的令牌發(fā)送出去。訪問(wèn)令牌包含了第三方應(yīng)用程序請(qǐng)求受保護(hù)資源所需的必要信息。通常每一種訪問(wèn)令牌類型都應(yīng)有對(duì)應(yīng)的規(guī)范文檔。如果第三方應(yīng)用程序無(wú)法理解某訪問(wèn)令牌的類型,第三方應(yīng)用程序不得使用該訪問(wèn)令牌。在訪問(wèn)令牌類型的定義中,應(yīng)規(guī)定訪問(wèn)令牌響應(yīng)中除8.2.2中定義的參數(shù)外的其他參數(shù),同時(shí)應(yīng)規(guī)定訪問(wèn)令牌的驗(yàn)證方法。在傳輸和存儲(chǔ)訪問(wèn)令牌時(shí),應(yīng)保證訪問(wèn)令牌(以及其他機(jī)密的訪問(wèn)令牌屬性)的機(jī)密性,并只在授權(quán)服務(wù)器、訪問(wèn)令牌規(guī)定范圍的資源所在的資源服務(wù)器和訪問(wèn)令牌對(duì)應(yīng)的第三方應(yīng)用程序等三者中共享。訪問(wèn)令牌的傳輸應(yīng)使用GM/T0024—2014定義的安全傳輸層協(xié)議。當(dāng)使用隱式許可流程進(jìn)行授權(quán)時(shí),訪問(wèn)令牌在URI片段中傳輸,但該傳輸方式可能將訪問(wèn)令牌暴露給未授權(quán)方。授權(quán)服務(wù)器應(yīng)確保未授權(quán)方不能偽造和修改訪問(wèn)令牌,并且難以通過(guò)猜測(cè)訪問(wèn)令牌以產(chǎn)生有效的訪問(wèn)令牌。第三方應(yīng)用程序應(yīng)根據(jù)需求請(qǐng)求最低的受保護(hù)資源訪問(wèn)范圍的訪問(wèn)令牌。授權(quán)服務(wù)器應(yīng)根據(jù)第三方應(yīng)用程序的身份,確定訪問(wèn)令牌的受保護(hù)資源訪問(wèn)范圍,該訪問(wèn)范圍不應(yīng)高于第三方應(yīng)用程序請(qǐng)求的受保護(hù)資源訪問(wèn)范圍。本標(biāo)準(zhǔn)不規(guī)定資源服務(wù)器驗(yàn)證訪問(wèn)令牌有效性的方法。為了防止訪問(wèn)令牌猜測(cè)攻擊,授權(quán)服務(wù)器應(yīng)保證攻擊者猜測(cè)產(chǎn)生訪問(wèn)令牌的可能性應(yīng)不高于刷新令牌是第三方應(yīng)用程序重新獲取訪問(wèn)令牌的憑據(jù)。刷新令牌由授權(quán)服務(wù)器發(fā)放給第三方應(yīng)用程序,用于在當(dāng)前的訪問(wèn)令牌作廢或是過(guò)期時(shí)換取新的訪問(wèn)令牌,或是換取具有同等(或更?。┳饔糜虻牧硪粋€(gè)訪問(wèn)令牌(訪問(wèn)令牌的生命周期和權(quán)限可小于資源擁有者的授權(quán)范圍)。如果授權(quán)服務(wù)器決定發(fā)放刷新令牌給第三方應(yīng)用程序,刷新令牌與訪問(wèn)令牌應(yīng)同時(shí)發(fā)放。GM/T0068—2019刷新令牌使用字符串表示,代表資源擁有者的授權(quán)。刷新令牌對(duì)于第三方應(yīng)用程序而言通常是不易解讀的。刷新令牌是提取授權(quán)信息的標(biāo)識(shí),刷新令牌中不能包含授權(quán)信息。與訪問(wèn)令牌不同,刷新令牌只能用于第三方應(yīng)用程序與授權(quán)服務(wù)器的交互,不應(yīng)發(fā)送給資源服務(wù)器。圖6使用刷新令牌的協(xié)議流程圖6中所示流程具體步驟如下:a)第三方應(yīng)用程序鑒別授權(quán)服務(wù)器的身份并呈遞授權(quán)許可,以此來(lái)請(qǐng)求訪問(wèn)令牌和刷新令牌。b)授權(quán)服務(wù)器鑒別第三方應(yīng)用程序的身份并驗(yàn)證授權(quán)許可的有效性。如果身份鑒別通過(guò)且授權(quán)許可有效,則發(fā)放訪問(wèn)令牌和刷新令牌。c)第三方應(yīng)用程序向資源服務(wù)器呈遞訪問(wèn)令牌,請(qǐng)求訪問(wèn)受保護(hù)資源。d)資源服務(wù)器驗(yàn)證訪問(wèn)令牌的有效性。如果訪問(wèn)令牌有效,則受理該請(qǐng)求。d),直到訪問(wèn)令牌過(guò)期。在訪問(wèn)令牌過(guò)期的情況下,執(zhí)行步驟g),否則繼續(xù)請(qǐng)求訪問(wèn)受保護(hù)資源。f)如果訪問(wèn)令牌無(wú)效,資源服務(wù)器返回訪問(wèn)令牌無(wú)效的出錯(cuò)響應(yīng)。g)第三方應(yīng)用程序鑒別授權(quán)服務(wù)器的身份并呈遞刷新令牌,以此來(lái)請(qǐng)求新的訪問(wèn)令牌。授權(quán)服務(wù)器是否需要再次鑒別第三方應(yīng)用程序的身份取決于第三方應(yīng)用程序的類型和授權(quán)服務(wù)器的策略(通常由授權(quán)服務(wù)器的服務(wù)文檔提供)。h)授權(quán)服務(wù)器鑒別第三方應(yīng)用程序的身份并驗(yàn)證刷新令牌的有效性,如果刷新令牌有效,則向第三方應(yīng)用程序發(fā)放新的訪問(wèn)令牌(或者同時(shí)發(fā)放新的刷新令牌[可選的。的具體內(nèi)容和實(shí)現(xiàn)進(jìn)行規(guī)定。在傳輸和存儲(chǔ)刷新令牌時(shí),應(yīng)保證刷新令牌的機(jī)密性,并只在授權(quán)服務(wù)器、刷新令牌對(duì)應(yīng)的第三方應(yīng)用程序兩者中共享。授權(quán)服務(wù)器應(yīng)維護(hù)刷新令牌和接收刷新令牌的第三方應(yīng)用程序之間的綁定關(guān)系。刷新令牌的傳輸應(yīng)使用GM/T0024—2014定義的安全傳輸層協(xié)議。在鑒別第三方應(yīng)用程序的身份時(shí)(見(jiàn)6.3),授權(quán)服務(wù)器應(yīng)驗(yàn)證刷新令牌和第三方應(yīng)用程序身份間的綁定關(guān)系。當(dāng)無(wú)法鑒別第三方應(yīng)用程序身份時(shí),授權(quán)服務(wù)器應(yīng)采用其他方式來(lái)檢測(cè)刷新令牌是否被濫用。例如,授權(quán)服務(wù)器可采用刷新令牌環(huán),刷新令牌環(huán)中新刷新令牌的發(fā)放對(duì)應(yīng)每一個(gè)訪問(wèn)令牌刷新請(qǐng)求。過(guò)期的刷新令牌失效但仍由授權(quán)服務(wù)器保存。如果刷新令牌被盜用,且隨后被攻擊者和合法第三方應(yīng)用程序使用,合法第三方應(yīng)用程序?qū)⑼ㄟ^(guò)出示已失效的刷新令牌來(lái)向授權(quán)服務(wù)器證明自己的合法性。授權(quán)服務(wù)器應(yīng)確保未授權(quán)方不能構(gòu)造、修改刷新令牌,同時(shí)確保未授權(quán)方不能根據(jù)對(duì)刷新令牌的猜測(cè)生成有效的刷新令牌。為了防止刷新令牌猜測(cè)攻擊,授權(quán)服務(wù)器應(yīng)保證攻擊者猜測(cè)產(chǎn)生刷新令牌的可能性應(yīng)不高于GM/T0068—20198.2訪問(wèn)令牌發(fā)放如果訪問(wèn)令牌請(qǐng)求是有效的,授權(quán)服務(wù)器按照8.2.2所述發(fā)放訪問(wèn)令牌和刷新令牌(可選的)。如果授權(quán)服務(wù)器對(duì)發(fā)起訪問(wèn)令牌請(qǐng)求的第三方應(yīng)用程序的身份鑒別失敗,或?qū)Φ谌綉?yīng)用程序的訪問(wèn)令牌請(qǐng)求驗(yàn)證失敗,則授權(quán)服務(wù)器返回8.2.3所述的出錯(cuò)響應(yīng)。授權(quán)服務(wù)器將如下參數(shù)添加到狀態(tài)碼是200的HTTP響應(yīng)中,構(gòu)造成功響應(yīng)來(lái)發(fā)放訪問(wèn)令牌和刷新令牌(可選的必選]授權(quán)服務(wù)器發(fā)放的訪問(wèn)令牌;必選]8.1.1描述的訪問(wèn)令牌類型;推薦]訪問(wèn)令牌的生命周期,以秒為單位。例如,“3600”表示該訪問(wèn)令牌將在響應(yīng)發(fā)出1小時(shí)后過(guò)期。如果本參數(shù)被省略,授權(quán)服務(wù)器應(yīng)當(dāng)通過(guò)其他方式(例如公布缺省值)提供過(guò)期時(shí)間;可選如果該參數(shù)的值與第三方應(yīng)用程序訪問(wèn)令牌請(qǐng)求中的參數(shù)值相同,則該參數(shù)是可選的;其他情況下,該參數(shù)是必選的。對(duì)于任何包含令牌等敏感信息的響應(yīng),授權(quán)服務(wù)器應(yīng)在HTTP響應(yīng)(見(jiàn)RFC2616)的頭部中包含值為以及值為第三方應(yīng)用程序應(yīng)忽略未識(shí)別的響應(yīng)參數(shù)。本標(biāo)準(zhǔn)對(duì)授權(quán)碼的字符串長(zhǎng)度不做定義。第三方應(yīng)用程序不宜對(duì)字符串長(zhǎng)度做出假定。授權(quán)服務(wù)器應(yīng)在服務(wù)文檔中說(shuō)明其發(fā)放的所有參數(shù)值的長(zhǎng)度。授權(quán)服務(wù)器返回狀態(tài)碼為400(的HTTP響應(yīng),并在響應(yīng)中包含如下參數(shù):必選]ASCII格式的錯(cuò)誤代碼,有以下類型:表示該請(qǐng)求缺失了必選參數(shù),或包含了不被支持的參數(shù)值(但如果是授權(quán)許可是不支持的授權(quán)許可類型,返回錯(cuò)誤碼應(yīng)為_(kāi)或重復(fù)包含了某一參數(shù),或包含了多個(gè)憑據(jù),或使用了超過(guò)一種的第三方應(yīng)用程序身份鑒別的方式等;表示鑒別第三方應(yīng)用程序身份失敗(例如,未知的第三方應(yīng)用程序,或訪問(wèn)令牌請(qǐng)求過(guò)程中沒(méi)有包含6.4定義的第三方應(yīng)用程序身份鑒別,或第三方應(yīng)用程序身份鑒別方式不被支持)。授權(quán)服務(wù)器可返回狀態(tài)碼為401的HTTP響應(yīng),用以表明支持哪些HTTP鑒別方案。如果第三方應(yīng)用程序是通過(guò)請(qǐng)求頭部的“行身份鑒別,但身份鑒別失敗,授權(quán)服務(wù)器應(yīng)返回狀態(tài)碼為401的HTTP響應(yīng),并在頭部中包含與第三方應(yīng)用程序使用的鑒別方案匹配的“頭字段;表示第三方應(yīng)用程序提供的授權(quán)許可(例如,授權(quán)碼,資源擁有者口令憑GM/T0068—2019據(jù))或刷新令牌是無(wú)效的,或過(guò)期的,或被撤銷的,或與授權(quán)請(qǐng)求中提供的重定向端點(diǎn)URI不匹配,或是發(fā)放給另外的
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 浙江省寧波市鎮(zhèn)海中學(xué)2025年5月第二次模擬考試 生物試卷+答案
- 大班繪畫(huà)活動(dòng)《美麗的衣服》
- 人類的起源和發(fā)展教學(xué)設(shè)計(jì)
- 因式分解知識(shí)點(diǎn)總結(jié)模版
- 開(kāi)展法制教育進(jìn)校園活動(dòng)方案
- 工程造價(jià)管理團(tuán)隊(duì)年度工作總結(jié)
- 食管類癌的臨床護(hù)理
- 影城消防培訓(xùn)試題及答案
- 銀行總行面試題目及答案
- 銀行小組面試試題及答案
- 2025年甘肅省武威第二十中學(xué)生物七年級(jí)下冊(cè)新人教版期中模擬練習(xí)題(含答案)
- 倉(cāng)庫(kù)7s管理制度培訓(xùn)
- 復(fù)式交分道岔檢查課件
- 2025-2030中國(guó)斯特林制冷機(jī)行業(yè)市場(chǎng)發(fā)展趨勢(shì)與前景展望戰(zhàn)略研究報(bào)告
- 制造業(yè)產(chǎn)品全生命周期管理流程
- 冷庫(kù)安全培訓(xùn)
- 2024-2025北師版七下數(shù)學(xué)-第五章 圖形的軸對(duì)稱-章末復(fù)習(xí)【課件】
- 物業(yè)管理答辯5分鐘
- 屋面保溫工程施工方案
- 土木工程專業(yè)就業(yè)能力展示
- 中鋁物資有限公司招聘筆試沖刺題2025
評(píng)論
0/150
提交評(píng)論