GM-T 0068-2019 清晰版 開放的第三方資源授權(quán)協(xié)議框架_第1頁
GM-T 0068-2019 清晰版 開放的第三方資源授權(quán)協(xié)議框架_第2頁
GM-T 0068-2019 清晰版 開放的第三方資源授權(quán)協(xié)議框架_第3頁
GM-T 0068-2019 清晰版 開放的第三方資源授權(quán)協(xié)議框架_第4頁
GM-T 0068-2019 清晰版 開放的第三方資源授權(quán)協(xié)議框架_第5頁
已閱讀5頁,還剩48頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

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

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論