版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
ICS35.040L80中華人民共和國密碼行業(yè)標準開放的身份鑒別框架o2019-07-12發(fā)布2019-07-12實施國家密碼管理局發(fā)布GM/T0069—2019前言 引言 2規(guī)范性引用文件 3術(shù)語和定義 4縮略語 6實體要求 6.1身份服務(wù)提供方要求 6.2依賴方要求 7鑒別流程 7.1鑒別流程類型 7.2授權(quán)碼鑒別流程 7.3隱式鑒別流程 7.4混合鑒別流程 7.5訪問令牌刷新機制 令牌 8.3令牌安全保護要求 9用戶信息訪問 9.2語言和文字聲明 9.3用戶信息端點 9.4用戶信息請求聲明 9.5聲明的穩(wěn)定性和唯一性 10簽名和加密要求 10.4對稱密鑰的熵 10.5簽名和加密的順序 附錄A(規(guī)范性附錄)規(guī)范性聲明 附錄B(資料性附錄)身份服務(wù)提供方的基礎(chǔ)配置 附錄C(資料性附錄)依賴方的注冊信息 參考文獻 ⅠGM/T0069—2019本標準按照GB/T1.1—2009給出的規(guī)則起草。本標準由密碼行業(yè)標準化技術(shù)委員會提出并歸口。本標準起草單位:中國科學(xué)院數(shù)據(jù)與通信保護研究教育中心、北京數(shù)字認證股份有限公司、中國電子技術(shù)標準化研究院、中國科學(xué)院軟件研究所、北京天融信科技有限公司。景鴻理、郝春亮。ⅡGM/T0069—2019互聯(lián)網(wǎng)環(huán)境中,用戶使用多個網(wǎng)絡(luò)應(yīng)用已經(jīng)成為常態(tài)。身份鑒別技術(shù)呈現(xiàn)出開放性、易用性以及互操作性的特點。本標準提出的身份鑒別框架使得網(wǎng)絡(luò)應(yīng)用可以便捷地使用身份服務(wù)提供方提供的鑒別服務(wù),由身份提供方對用戶進行身份鑒別,驗證用戶的身份,并在用戶授權(quán)之后可以提供用戶身份相關(guān)信息。1GM/T0069—2019開放的身份鑒別框架本標準規(guī)定了依賴方(網(wǎng)絡(luò)應(yīng)用或服務(wù))使用身份服務(wù)提供方提供的鑒別功能、對終端用戶進行身份鑒別的協(xié)議框架,定義了協(xié)議參與實體的要求、鑒別協(xié)議流程、用戶信息的訪問要求,以及協(xié)議消息的加密和簽名要求等。本標準適用于終端用戶訪問網(wǎng)絡(luò)應(yīng)用的場景中,用戶身份鑒別服務(wù)的開發(fā)、測試、評估和采購。2規(guī)范性引用文件下列文件對于本文件的應(yīng)用是必不可少的。凡是注日期的引用文件,僅注日期的版本適用于本文件。凡是不注日期的引用文件,其最新版本(包括所有的修改單)適用于本文件。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ī)范GM/T0068—2019開放的第三方資源授權(quán)協(xié)議框架編碼各個國家的名字和名字細分的編碼表示第1部分:國家編碼(數(shù)據(jù)元素與交換格式信息交換日期與時間格式()信息技術(shù)實體鑒別保障框架(cationassuranceframework)中基于表單的文件上傳(電話號碼的電話統(tǒng)一資源標識符通用語法(應(yīng)用互聯(lián)網(wǎng)信息格式(語言識別標簽(RFC6125基于域的使用網(wǎng)絡(luò)公鑰基礎(chǔ)設(shè)施(安全傳輸層協(xié)議上下文中使用X.509證書)的應(yīng)用國際公用電信編號計劃(2GM/T0069—20193術(shù)語和定義下列術(shù)語和定義適用于本文件。3.1訪問令牌授權(quán)服務(wù)器發(fā)放的令牌,用于證明某實體具有訪問特定范圍內(nèi)受保護資源的權(quán)限。3.2身份鑒別請求以鑒別終端用戶身份為目的的請求。注:身份服務(wù)提供方接收到依賴方發(fā)送的該請求后,對終端用戶進行身份鑒別。3.3授權(quán)碼鑒別流程適合于有保密能力的依賴方,用于鑒別終端用戶的一種身份鑒別流程。3.4授權(quán)端點授權(quán)服務(wù)器上用于與終端用戶交互的端點,用于接收終端用戶的身份憑據(jù)和授權(quán),以及返回授權(quán)許可給依賴方。3.5授權(quán)許可身份服務(wù)提供方發(fā)放給依賴方的憑據(jù),表明用戶同意依賴方訪問其身份信息。依賴方不應(yīng)使用該憑據(jù)直接訪問用戶身份信息,應(yīng)使用該憑據(jù)從授權(quán)服務(wù)器換取訪問令牌。3.6授權(quán)請求依賴方發(fā)送給身份服務(wù)提供方的、以獲得終端用戶授權(quán)為目的的請求。3.7授權(quán)服務(wù)器對依賴方進行授權(quán)的服務(wù)器,一般有兩個功能接口:授權(quán)端點和令牌端點。3.8聲明由身份服務(wù)提供方生成的關(guān)于實體的數(shù)據(jù),包括與實體相關(guān)的身份屬性或鑒別結(jié)果。3.9聲明類型用于表述聲明值的語法。本標準定義了規(guī)范性(Normal)、聚合式(Aggregated)和分布式(Distrib-uted)三種聲明類型。憑據(jù)一種憑證,擁有該憑證的實體可以使用該憑證關(guān)聯(lián)的資源。端點身份服務(wù)提供方用于接收請求消息、返回響應(yīng)消息的接口。3GM/T0069—2019終端用戶使用信息系統(tǒng)和系統(tǒng)資源的自然人?;旌翔b別流程一種結(jié)合授權(quán)碼鑒別流程和隱式鑒別流程的混合流程。標識符在特定上下文中唯一標識一個實體的字符串。身份實體的屬性信息集合。身份服務(wù)提供方向依賴方提供關(guān)于用戶身份鑒別結(jié)果及相關(guān)授權(quán)的實體,鑒別終端用戶,并為依賴方提供關(guān)于用戶身份鑒別結(jié)果的聲明。令牌包含關(guān)于終端用戶身份鑒別結(jié)果的聲明,還可能包含一些其他聲明。隱式鑒別流程適于無保密能力的依賴方使用的、用于鑒別終端用戶的一種身份鑒別流程。發(fā)布方發(fā)布聲明的實體。發(fā)布方標識符用來識別發(fā)布方的標識符。注:發(fā)布方標識符是大小寫敏感的URL,使用HTTPS機制包含模式、主機,并可選端口號和路徑,但不包括查詢部分和片段部分。個人身份信息用于識別某個自然人身份的信息,或是關(guān)聯(lián)到某個自然人的相關(guān)信息。依賴方依賴于身份服務(wù)提供方對訪問它的終端用戶進行鑒別的實體。主體標識符身份服務(wù)提供方發(fā)放給終端用戶的、用于標識終端用戶身份的標識符。注:該標識符在身份服務(wù)提供方唯一存在且不再次發(fā)放,由依賴方使用。令牌端點授權(quán)服務(wù)器上用于與依賴方交互的端點,授權(quán)服務(wù)器使用該端點接收依賴方發(fā)起的令牌請求,當(dāng)授4GM/T0069—2019權(quán)服務(wù)器驗證請求成功后,通過該端口返回令牌給依賴方。用戶信息端點身份服務(wù)提供方用于接收訪問和返回受保護的用戶信息的功能接口。注:依賴方向該端點呈遞訪問令牌時,該端點將根據(jù)終端用戶的授權(quán)返回有關(guān)終端用戶的授權(quán)信息。用戶信息端點的URL應(yīng)使用HTTPS機制,并可能包含端口、路徑和查詢部分。驗證核驗符合某種結(jié)構(gòu)的信息具備合理性和正確性的過程。4縮略語下列縮略語適用于本文件。超文本傳輸協(xié)議(基于雜湊的消息鑒別碼(安全傳輸層協(xié)議(統(tǒng)一資源標識(統(tǒng)一資源定位符(5概述本標準規(guī)范的身份鑒別協(xié)議框架,使得依賴方可以利用身份服務(wù)提供方的鑒別服務(wù)對終端用戶進行鑒別。終端用戶成功通過鑒別之后,依賴方可以從身份服務(wù)提供方獲得經(jīng)過授權(quán)的用戶身份信息。本標準規(guī)范的身份鑒別協(xié)議框架主要涉及三類參與實體:依賴方、身份服務(wù)提供方和終端用戶。本標準主要對依賴方和身份服務(wù)提供方的功能進行規(guī)定:—依賴方:依賴方被終端用戶訪問時,依賴方應(yīng)對終端用戶進行身份鑒別。對于尚未鑒別的終端用戶,依賴方選擇某身份服務(wù)提供方對終端用戶進行身份鑒別;—身份服務(wù)提供方:對終端用戶進行鑒別,并向鑒別成功的終端用戶,詢問關(guān)于依賴方訪問用戶身份信息的授權(quán),得到終端用戶授權(quán)后,最終將授權(quán)后的用戶身份信息發(fā)送給依賴方,完成身份鑒別。其中,身份服務(wù)提供方的授權(quán)服務(wù)器實現(xiàn)對終端用戶身份的鑒別,授權(quán)服務(wù)器包含兩個功能接口:授權(quán)端點和令牌端點;身份服務(wù)提供方通過提供用戶信息端點,實現(xiàn)依賴方對用戶信息的訪問功能。端點使用URI進行標識。URI的典型格式是方案(scheme):][//主機名(authority)][路徑(path)][?查詢組件(query)][#片段組件(fragment)],查詢組件和片段組件的編碼格式應(yīng)為“appli-見編碼格式。依賴方、身份服務(wù)提供方和終端用戶等三者之間的交互均應(yīng)采用密碼技術(shù)來保障安全,且依賴方和身份服務(wù)提供方均應(yīng)進行相關(guān)的配置來支持協(xié)議,本標準規(guī)范了依賴方和身份服務(wù)提供方的實體要求當(dāng)終端用戶訪問依賴方提供的服務(wù)時,如果依賴方要求對終端用戶進行鑒別且支持本標準定義的協(xié)議,依賴方可將終端用戶重定向到該依賴方信任的身份服務(wù)提供方,執(zhí)行以下協(xié)議流程(見圖1):a)鑒別請求:依賴方向身份服務(wù)提供方發(fā)送關(guān)于終端用戶的鑒別請求;b)鑒別與授權(quán):身份服務(wù)提供方的授權(quán)端點鑒別終端用戶,并向終端用戶獲取關(guān)于依賴方訪問其5GM/T0069—2019數(shù)據(jù)的授權(quán);c)鑒別響應(yīng):身份服務(wù)提供方的令牌端點(或授權(quán)端點)返回ID令牌,通常還會返回訪問令牌,從而響應(yīng)第a)步的請求;d)用戶信息請求:依賴方發(fā)送帶有訪問令牌的請求到身份服務(wù)提供方的用戶信息端點;e)用戶信息響應(yīng):用戶信息端點返回關(guān)于終端用戶的身份信息。圖1身份鑒別協(xié)議框架依賴方的類型不同,具備的對機密信息的保密能力不同,所使用的身份鑒別協(xié)議流程也會產(chǎn)生差異。本標準定義并規(guī)定了三種身份鑒別流程,分別是授權(quán)碼鑒別流程、隱式鑒別流程和混合鑒別流程。本標準規(guī)范的身份鑒別協(xié)議,使用安全令牌來保護用戶敏感信息的傳輸和訪問安全。通過使用安全令牌,可避免將終端用戶的身份憑證共享給依賴方,并能將終端用戶的身份信息安全地呈遞給依賴方。為了確保令牌的安全及其使用安全,本標準定義并給出了令牌的安全要求。在依賴方呈遞訪問令牌給身份服務(wù)提供方以及獲取用戶信息的過程中,本標準給出了具體的使用令牌訪問用戶身份信息的定義和要求,主要涉及協(xié)議中傳輸?shù)年P(guān)于實體的聲明以及用戶信息端點要求等。最后,本標準給出了保障協(xié)議安全的簽名和加密要求。此外,本標準也支持一些不常用的身份鑒別發(fā)起方式。通常情況下,身份鑒別服務(wù)由依賴方向身份服務(wù)提供方發(fā)起。但在某些情況下,身份鑒別可能由身份服務(wù)提供方或其他實體發(fā)起。例如,正在使用身份服務(wù)提供方A的用戶通過A的頁面的鏈接訪問應(yīng)用B(依賴方)的購物頁面,A直接向未經(jīng)過鑒別的用戶發(fā)起身份鑒別流程,這種情況下,身份鑒別不由依賴方B直接發(fā)起。另外,一般情況下,用戶信息的訪問需要終端用戶的實時授權(quán),在獲得用戶授權(quán)后,依賴方才可以獲得被授權(quán)的用戶信息。本標準也支持終端用戶離線時的用戶信息訪問,不需要用戶在線實時授權(quán)。例如,終端用戶可以在身份服務(wù)提供方進行預(yù)先授權(quán),配置依賴方的訪問權(quán)限,從而使得依賴方在向身份服務(wù)提供方請求用戶信息時,不需要用戶在線進行實時授權(quán)。但是,對于用戶離線的用戶信息訪問,由于存在安全風(fēng)險,應(yīng)慎重使用。6GM/T0069—20196實體要求6.1身份服務(wù)提供方要求身份服務(wù)提供方是為訪問依賴方的終端用戶提供身份鑒別服務(wù)的實體,應(yīng)提供以下功能:a)安全管理用戶信息:管理和安全存儲用戶身份屬性,使用內(nèi)部唯一的主體標識符標識終端用戶;b)安全配置協(xié)議接口、參數(shù):配置協(xié)議執(zhí)行需要的接口、URL地址、加解密參數(shù)、響應(yīng)參數(shù)等,以能被依賴方發(fā)現(xiàn),并能安全執(zhí)行協(xié)議;c)安全傳輸和處理協(xié)議消息:安全接收和處理來自依賴方或者其他實體發(fā)起的實體身份鑒別請求;d)鑒別和授權(quán):鑒別終端用戶,獲取終端用戶授權(quán),并能夠根據(jù)終端用戶的授權(quán),提供授權(quán)范圍內(nèi)的終端用戶身份信息給依賴方。6.1.2安全管理用戶信息要求身份服務(wù)提供方應(yīng)安全地管理和存儲用戶的身份信息,包括標識用戶的主體標識符、名稱、頭像、性別、出生年月、郵箱地址、手機號、住址等各類身份屬性,這些屬性信息的類型由身份服務(wù)提供方根據(jù)服務(wù)需要進行定義和要求(見附錄A)。身份服務(wù)提供方應(yīng)為終端用戶分配唯一且永不被重新分配的主體標識符,以標識終端用戶。本標準支持兩類主體標識符:公共標識符類型和成對標識符類型:參數(shù),公共標識符使用該參數(shù)描述,若使用該類型,則同一終端用戶在所有的依賴方都使用相同的主體標識符;參數(shù),成對標識符使用該參數(shù)描述,若使用該類型,則同一終端用戶在不同的依賴方使用不同的主體標識符,以防止依賴方未經(jīng)許可關(guān)聯(lián)終端用戶在其他依賴方的活動。另外,身份服務(wù)提供方應(yīng)給其終端用戶提供用戶信息的訪問日志,以便終端用戶可以對用戶信息的訪問情況進行監(jiān)控。身份服務(wù)提供方應(yīng)提供必要的基礎(chǔ)配置(參見附錄B)以實現(xiàn)協(xié)議流程。首先,身份服務(wù)提供方應(yīng)提供發(fā)布方標識符(通常是URI),以便依賴方在執(zhí)行身份服務(wù)發(fā)現(xiàn)協(xié)議時,找到身份服務(wù)提供方。其次,應(yīng)配置和提供授權(quán)端點的URI、令牌端點的URI、加密和簽名令牌的密鑰的URI、響應(yīng)類型、響應(yīng)參數(shù)等信息,并提供依賴方應(yīng)了解的配置信息的方法。本標準假定依賴方已經(jīng)獲得了身份服務(wù)提供方的配置信息,依賴方可以通過自動發(fā)現(xiàn)過程或者其他方式獲得這些信息,本標準不對具體的自動發(fā)現(xiàn)過程或其他發(fā)現(xiàn)身份服務(wù)的方式進行規(guī)定。其中,發(fā)布方標識符是用于標識身份服務(wù)提供方的標識符。本標準支持多個發(fā)布方,每個主機和端口的組合為一個發(fā)布方,多個主機和端口的組合可實現(xiàn)多個發(fā)布方。一般情況下,本標準要求每臺主機僅支持一個發(fā)布方。但是,如果該主機支持多個租戶,可能需要支持多個發(fā)布方。通過發(fā)現(xiàn)過程返回的發(fā)布方標識符應(yīng)與ID令牌(見8.1.2)的〈iss〉參數(shù)值完全匹配。發(fā)布方標識符應(yīng)與用戶的主體標識符完全對應(yīng),即使兩個終端用戶的主體名相同,但發(fā)布方標識符不同,則應(yīng)視為兩個不同的用戶。7GM/T0069—20196.1.4安全傳輸和處理協(xié)議消息要求身份服務(wù)提供方應(yīng)提供安全的身份鑒別方法使得:依賴方可對身份服務(wù)提供方進行身份鑒別,從而防止惡意的服務(wù)器偽裝成合法的服務(wù)器;對于具有保密能力的依賴方,身份服務(wù)提供方應(yīng)提供鑒別依賴方的方法,從而防止惡意的依賴方假冒合法的依賴方獲取用戶信息。身份服務(wù)提供方應(yīng)與依賴方建立安全的會話,應(yīng)使用SSLVPN技術(shù)規(guī)范GM/T0024—2014中定義的安全通信協(xié)議進行通信。在與依賴方建立安全連接的過程中,身份服務(wù)提供方應(yīng)將其完整域名與其公鑰進行綁定,以便依賴方可以驗證。本標準還提供了一種利用國產(chǎn)密碼算法實現(xiàn)的簽名JSON令牌或加密JSON令牌的方式來實現(xiàn)身份鑒別(見8.2)。一般情況下,身份服務(wù)提供方應(yīng)使用非自簽名的證書來實現(xiàn)ID令牌、訪問令牌等安全憑據(jù)的簽名。本標準也支持自頒發(fā)證書的身份服務(wù)提供方,使用自頒發(fā)證書的身份服務(wù)提供方,應(yīng)進行特殊的參數(shù)配置,本標準不作具體規(guī)定。身份服務(wù)提供方應(yīng)提供安全的鑒別方法對終端用戶的身份進行鑒別。例如,用戶名/口令方式,數(shù)字證書,用戶名/智能密碼鑰匙(USBKey)方式,多因素鑒別方式或其他鑒別方式。本標準不對具體的鑒別方法進行規(guī)定。身份服務(wù)提供方在將終端用戶的身份信息發(fā)送給依賴方之前,應(yīng)獲得終端用戶的授權(quán),僅能將用戶授權(quán)范圍內(nèi)的用戶信息發(fā)送給依賴方,并能采用安全的訪問控制機制,防止非授權(quán)的訪問。6.2依賴方要求依賴方是使用身份服務(wù)提供方對訪問它的終端用戶進行鑒別的實體。依賴方的類型不同,本標準對依賴方的要求也不同,其所適合的鑒別流程也不相同。本標準定義了兩類依賴方。同時本標準還規(guī)定依賴方應(yīng)具備以下功能:a)注冊和協(xié)議配置:向身份服務(wù)提供方進行注冊,提供協(xié)議正常執(zhí)行需要的參數(shù)信息,以便身份服務(wù)提供方能夠與依賴方建立安全會話,執(zhí)行協(xié)議流程;b)依賴方身份鑒別:向身份服務(wù)提供方進行身份鑒別,提供支持的身份鑒別方法,以防止惡意的依賴方假冒合法的依賴方。6.2.2依賴方的類型根據(jù)依賴方是否對其身份憑據(jù)具有保密能力,本標準定義了兩種依賴方類型:a)有保密能力型依賴方有能力維持其憑據(jù)的機密性(例如,依賴方應(yīng)用程序運行在嚴格執(zhí)行訪問控制的安全服務(wù)器上從而可通過提供安全的身份憑據(jù)來證明自己身份的真實性,或者依賴方有能力通過其他的方式(超出本標準的范圍)證明自己身份的真實性。b)無保密能力型依賴方?jīng)]有能力維持其憑據(jù)的機密性(例如,依賴方程序運行在資源擁有者使用的設(shè)備上,本地應(yīng)用或是基于瀏覽器的應(yīng)用等無法提供安全的身份憑據(jù)來證明自己身份的真實性,并且沒有能力通過其他方式證明自己身份的真實性。依賴方類型的認定取決于身份服務(wù)提供方的鑒別安全要求和對依賴方憑據(jù)暴露級別的接受程度8GM/T0069—2019(通常由身份服務(wù)提供方的服務(wù)文檔提供)。授權(quán)服務(wù)器不應(yīng)對依賴方的類型進行假定。6.2.3依賴方注冊和協(xié)議配置要求依賴方在使用身份服務(wù)提供方的身份鑒別服務(wù)時,應(yīng)向身份服務(wù)提供方注冊必要的協(xié)議參數(shù),例如,提供用于接收消息的重定向URL地址、主頁URL地址、聯(lián)系方式、依賴方類型、支持的鑒別依賴方身份的方法等信息(參見附錄C所描述的注冊信息)。在注冊成功時,依賴方會從身份服務(wù)提供方獲得以下表示身份憑證的參數(shù)值對,以用于依賴方身份鑒別:依賴方的標識符;依賴方的口令。6.2.4依賴方身份鑒別要求當(dāng)身份服務(wù)提供方使用令牌端點與依賴方進行交互時,依賴方應(yīng)使用某種鑒別方法向身份服務(wù)提供方進行身份鑒別。在依賴方注冊時,依賴方應(yīng)通過下述參數(shù)值注冊一種依賴方身份鑒別的方法:表示已經(jīng)從身份服務(wù)提供方收到了〈client_secret〉值的依賴方,使用HTTP基本身份驗證方案向身份服務(wù)提供方進行身份鑒別。如果依賴方?jīng)]有注冊任何方法,則默認方法是client_secret_basic表示的方法;表示已經(jīng)從身份服務(wù)提供方收到了〈client_secret〉的依賴方,通過在請求主體中包含依賴方憑據(jù)的方式向身份服務(wù)提供方進行身份鑒別;表示已經(jīng)從授權(quán)服務(wù)器收到了〈client_secret〉的依賴方,使用HMACSM3算法創(chuàng)建JSON令牌,其中HMACSM3表示基于雜湊算法SM3(見GB/T32905—2016)實現(xiàn)消息鑒別碼。HMAC使用client_secret的UTF-8編碼表示的八位位組作為共享密鑰進行計算。不在令牌端點執(zhí)行鑒別的依賴方,可能因為它僅使用隱式鑒別流程(所以不使用令牌端點,見7.3),或者因為它是無保密能力型依賴方,沒有保護密鑰的能力或不支持其他身份鑒別機制。7鑒別流程7.1鑒別流程類型本標準根據(jù)依賴方類型的不同及需求的不同,定義了三種身份鑒別流程。鑒別流程由身份服務(wù)提供方的服務(wù)器執(zhí)行,該服務(wù)器以安全的通信方式返回鑒別結(jié)果給依賴方,從而使得依賴方能夠根據(jù)該結(jié)果進行后續(xù)的用戶信息訪問流程。其中,鑒別結(jié)果由ID令牌(見8.1.2)返回,包含以下聲明的信息:發(fā)布方標識符、主體標識符、鑒別有效期等。三種身份鑒別類型:—授權(quán)碼鑒別流程。適用于有能力維持其憑據(jù)機密性的依賴方,例如,具有后臺Web服務(wù)器的依賴方,此類依賴方可使用該流程進行終端用戶身份的鑒別。在與令牌端點交互時,身份服務(wù)提供方可對依賴方進行身份鑒別。所有令牌從身份服務(wù)提供方的令牌端點返回,令牌不透漏給用戶代理。依賴方獲得訪問令牌和刷新令牌后,可以進行后續(xù)的訪問令牌刷新流程。隱式鑒別流程。適用于無能力維持其憑據(jù)機密性的依賴方,例如運行在瀏覽器上的JS代碼或本地應(yīng)用程序,此類依賴方可使用該流程進行終端用戶身份的鑒別。依賴方不與令牌端點進行交互,也不進行依賴方身份鑒別,不可進行后續(xù)的令牌刷新流程。所有的令牌從身份服務(wù)提9GM/T0069—2019供方的授權(quán)端點返回?!旌翔b別流程。結(jié)合了前兩種鑒別流程。該流程適用于此類依賴方:依賴方應(yīng)用程序能夠通過立即使用ID令牌獲得終端用戶的身份,并且(如其后臺服務(wù)程序)能夠通過使用授權(quán)碼,請求刷新令牌以獲得更長期的訪問權(quán)限。在與令牌端點交互時,身份服務(wù)提供方可對依賴方進行身份鑒別。使用該流程時,部分令牌從身份服務(wù)提供方的授權(quán)端點返回,部分令牌從令牌端點返回。依賴方獲得刷新令牌后,可以進行后續(xù)的訪問令牌刷新流程。7.2授權(quán)碼鑒別流程本節(jié)介紹如何使用基于授權(quán)碼的鑒別流程進行終端用戶身份的鑒別。授權(quán)碼鑒別流程適用于可以安全保存依賴方密鑰的依賴方,依賴方密鑰用于在與授權(quán)服務(wù)器通信時,安全鑒別依賴方的身份。在授權(quán)碼鑒別流程中,本標準規(guī)定了授權(quán)服務(wù)器應(yīng)具備的兩個主要的功能接口:a)授權(quán)端點:執(zhí)行終端用戶的鑒別和授權(quán);b)令牌端點:執(zhí)行令牌的發(fā)放和驗證。在授權(quán)碼鑒別流程中,授權(quán)端點給依賴方返回授權(quán)碼,依賴方用授權(quán)碼從令牌端點換取ID令牌和訪問令牌。授權(quán)碼交換訪問令牌之前,授權(quán)服務(wù)器可以鑒別依賴方。所有與授權(quán)端點以及令牌端點的通信應(yīng)使用GM/T0024—2014中定義的安全通信協(xié)議。7.2.2授權(quán)碼流程步驟授權(quán)碼流程包括以下步驟:a)依賴方構(gòu)造鑒別請求,該請求包含所需的所有請求參數(shù);b)依賴方將請求發(fā)送到身份服務(wù)提供方的授權(quán)服務(wù)器;c)授權(quán)服務(wù)器鑒別終端用戶;d)授權(quán)服務(wù)器獲取終端用戶許可/授權(quán);e)授權(quán)服務(wù)器將終端用戶重定向到依賴方,此重定向消息包含授權(quán)碼;f)依賴方使用第e)步中獲取的授權(quán)碼向授權(quán)服務(wù)器的令牌端點發(fā)起請求;g)依賴方收到包含ID令牌和訪問令牌的響應(yīng);h)依賴方驗證ID令牌并提取終端用戶的主體標識符。鑒別請求由依賴方構(gòu)造,用于請求授權(quán)服務(wù)器對終端用戶進行身份鑒別。授權(quán)服務(wù)器通過授權(quán)端點執(zhí)行對終端用戶的身份鑒別。授權(quán)端點應(yīng)支持使用HTTP的GET方法和POST方法。依賴方可以使用HTTP的GET或POST方法來將授權(quán)請求發(fā)送到授權(quán)服務(wù)器。本標準定義以下請求參數(shù),用于構(gòu)建鑒別請求:必選]請求訪問的資源范圍,鑒別請求的scope參數(shù)應(yīng)包含參數(shù)值openid。如果〈scope〉參數(shù)不包含參數(shù)值openid,則說明該請求不是本標準定義的協(xié)議請求,本標準不對此請求操作定義。參數(shù)〈scope〉也可能包含其他參數(shù)值。應(yīng)該忽略不能理解的〈scope〉參數(shù)值。范圍值見9.4.1。必選]響應(yīng)類型值,設(shè)定該參數(shù)的值為code,表示使用授權(quán)碼鑒別流程。GM/T0069—2019必選]依賴方的標識符,用于授權(quán)服務(wù)器識別依賴方的標識符。必選]依賴方用于接收身份服務(wù)提供方響應(yīng)消息的URI,身份服務(wù)提供方將響應(yīng)發(fā)送到該重定向的URI。該URI應(yīng)完全匹配依賴方在身份服務(wù)提供方預(yù)注冊的重定向URI,匹配方式采用統(tǒng)一資源標識符(見RFC3986)中定義的匹配方式(如字符串比較)。通常,重定向URI應(yīng)當(dāng)使用HTTPS發(fā)送。如果要使用HTTP協(xié)議,依賴方類型應(yīng)是具有保密能力的依賴方,并且身份服務(wù)提供方允許使用HTTP協(xié)議的重定向URI。推薦]依賴方用于維護請求和響應(yīng)之間狀態(tài)的字符串,該值對除身份服務(wù)提供方和依賴方外的其他實體均不可見。授權(quán)服務(wù)器在將用戶代理重定向回到依賴方時,在其URI中包含該參數(shù),以防止跨站點請求偽造攻擊??蛇x]響應(yīng)模式,用于通知授權(quán)端點返回參數(shù)的方法。該參數(shù)的參數(shù)值如下:1)query:當(dāng)重定向至依賴方時,通過將響應(yīng)參數(shù)添加到redirect_uri的查詢部分來返回參數(shù),授權(quán)碼鑒別流程中,默認的響應(yīng)模式的值為query;2)fragment:當(dāng)重定向至依賴方時,通過將響應(yīng)參數(shù)添加到redirect_uri的片段部分來返回參數(shù)。一般用于隱式鑒別流程或混合鑒別流程中。當(dāng)〈response_type〉值為token時,默認的響應(yīng)模式的值為可選]用于將ID令牌與依賴方會話相關(guān)聯(lián)的字符串值,能夠抵御重放攻擊。該值在授權(quán)過程中保持不變。該參數(shù)的信息熵應(yīng)足夠大,以防止攻擊者猜測該值??蛇x]ASCII字符串值,指定授權(quán)服務(wù)器向終端用戶顯示界面的方式。該參數(shù)的參數(shù)值如下:1)page:以用戶代理的全頁面方式呈現(xiàn),如未指定顯示參數(shù),此為默認的顯示模式;2)popup:以用戶代理的合適大小的彈出窗口呈現(xiàn);3)touch:以設(shè)備的觸摸界面呈現(xiàn);4)wap:以手機端界面呈現(xiàn)。授權(quán)服務(wù)器也可以嘗試檢測當(dāng)前用戶代理,并選擇適當(dāng)?shù)娘@示模式??蛇x]ASCII字符串值,指定授權(quán)服務(wù)器是否提示終端用戶重新進行身份鑒別和申請授權(quán),以空格分隔且區(qū)分大小寫。該參數(shù)的參數(shù)值如下:1)none:該參數(shù)值表示授權(quán)服務(wù)器不顯示用于身份鑒別和申請授權(quán)的用戶界面。〈prompt〉值為none時,若出現(xiàn)以下情況,則會返回錯誤信息(見7在注冊階段設(shè)置該參數(shù)值,或不符合其他條件。2)login:該參數(shù)值表示授權(quán)服務(wù)器應(yīng)提示終端用戶重新進行身份鑒別。如果不能重新鑒別終端用戶,則應(yīng)返回錯誤信息,通常為login_required。3)consent:該參數(shù)值表示授權(quán)服務(wù)器給依賴方返回信息之前,應(yīng)提示終端用戶是否同意。如果不能獲得同意,則應(yīng)返回錯誤信息,通常為consent_required。4)select_account:該參數(shù)值表示授權(quán)服務(wù)器應(yīng)提示終端用戶選擇使用一個用戶賬戶。該參數(shù)通常用來提示擁有多個賬戶的終端用戶,從當(dāng)前會話的多個賬戶中選擇一個。如果不能獲得終端用戶的其中一個賬戶則應(yīng)返回錯誤信息通常為__依賴方使用prompt參數(shù)確保終端用戶仍在當(dāng)前會話并關(guān)注到該請求。如果此參數(shù)同時包含noneGM/T0069—2019值和其他值,則返回錯誤信息??蛇x]最大鑒別有效期。指從上一次終端用戶鑒別后的最大鑒別有效時間(秒如果經(jīng)過的時間大于該值,則身份服務(wù)提供方應(yīng)重新驗證終端用戶。當(dāng)使用max_age時,ID令牌應(yīng)包括auth_time參數(shù)(鑒別可選]終端用戶的首選語言和用戶界面腳本,由語言標簽值BCP47[RFC5646]列表表示,以空格分隔,并按照需求排序。例如,值“FR-CAFRen”代表首選加拿大使用的法語,然后是法語(沒有指定具體區(qū)域其次是英語(沒有指定具體區(qū)域)。如果身份服務(wù)提供方不支持某些要求的語言環(huán)境,不應(yīng)導(dǎo)致錯誤??蛇x]該值是依賴方在本次請求前已經(jīng)獲得的、關(guān)聯(lián)此終端用戶的ID令牌,此ID令牌可作為會話索引進行傳輸,索引得到當(dāng)前或曾經(jīng)通過鑒別的終端用戶和依賴方建立的會話。如果被該值確定的終端用戶已經(jīng)登錄或者在該次請求中登錄,那么授權(quán)服務(wù)器應(yīng)返回肯定的答復(fù),否則應(yīng)返回錯誤信息,如login_當(dāng)時應(yīng)該使用參數(shù)如果沒有使用該參數(shù),可能返回request錯誤。如果鑒別請求中不包含該參數(shù),不應(yīng)導(dǎo)致錯誤。如果依賴方從身份服務(wù)提供方收到的ID令牌是加密的,依賴方應(yīng)解密出簽名的ID令牌,然后使用解密出來的已簽名ID令牌作為id_token_hint值。依賴方可以使用授權(quán)服務(wù)器已知的密鑰重新加密簽名的ID令牌,并使用重新加密的ID令牌作為id_token_hint值??蛇x]該值為標識符或電子郵件地址等類型的字符串,用于告知授權(quán)服務(wù)器終端用戶可以用該標識符登錄??蛇x]請求鑒別上下文類引用值。該值是由空格分隔的字符串,指定了授權(quán)服務(wù)器用來處理授權(quán)請求時使用的acr值(見8.1.2),并按照出現(xiàn)的順序進行排序。滿足身份鑒別執(zhí)行流程的身份鑒別上下文類通過定義的acr聲明值(見8.1.2)返回。該參數(shù)要求acr聲明作為自選聲明。另外,在實現(xiàn)協(xié)議時,本標準定義的協(xié)議請求和響應(yīng)參數(shù)可以通過以下兩種方式進行傳遞:—值傳遞:將協(xié)議請求或響應(yīng)中的參數(shù)及參數(shù)值直接附加在協(xié)議消息中進行傳遞;—引用傳遞:將協(xié)議請求或響應(yīng)中的參數(shù)及參數(shù)值通過HTTP機制的URI引用進行傳遞,在協(xié)議請求消息中不直接包含參數(shù)值,而是在請求消息中包含一個引用,即包含一個URI,該URI指向一個資源對象,該資源對象中包含請求的參數(shù)及參數(shù)值。具體的實現(xiàn)方法和要求不在本標準的規(guī)定范圍內(nèi)。授權(quán)服務(wù)器在收到請求后,應(yīng)進行如下驗證:a)授權(quán)服務(wù)器應(yīng)驗證鑒別請求的有效性,以確保所有必選參數(shù)都存在且有效;b)驗證是否包含〈scope〉參數(shù)以及scope參數(shù)值中是否包含openid,不包含openid值,則表明不是本協(xié)議規(guī)定的請求;c)授權(quán)服務(wù)器應(yīng)遵循本標準,驗證所有必選參數(shù)的有效性;d)如果ID令牌請求存在sub聲明(見8.1.2),只有當(dāng)sub值指定的終端用戶和授權(quán)服務(wù)器有活躍會話,或者授權(quán)服務(wù)器已經(jīng)鑒別該終端用戶時,授權(quán)服務(wù)器才能夠響應(yīng)此請求。對其他終端用戶,授權(quán)服務(wù)器則不能返回ID令牌或訪問令牌。這種類型的請求也可以使用id_token_GM/T0069—2019hint參數(shù)或通過請求特定的聲明值(實現(xiàn)應(yīng)支持claims參數(shù)見9.4.2)來實現(xiàn)。當(dāng)授權(quán)服務(wù)器發(fā)現(xiàn)無法識別的請求參數(shù)時,應(yīng)忽略該請求參數(shù)。授權(quán)服務(wù)器鑒別終端用戶如果請求有效,身份服務(wù)提供方根據(jù)請求參數(shù)值判定終端用戶是否通過鑒別。身份服務(wù)提供方對終端用戶進行身份鑒別的方法(如用戶名和口令)本標準不作規(guī)定。身份服務(wù)提供方身份鑒別的用戶界面可由身份服務(wù)提供方呈現(xiàn),呈現(xiàn)的方法由身份服務(wù)提供方根據(jù)所用的請求參數(shù)值和鑒別方法決定。在下列情況下授權(quán)服務(wù)器應(yīng)重新鑒別終端用戶:a)終端用戶尚未經(jīng)過身份鑒別;b)該鑒別請求中包含的prompt參數(shù)值為login。在這種情況下,授權(quán)服務(wù)器應(yīng)重新鑒別終端用戶,即使終端用戶已經(jīng)通過身份鑒別。在下列情況下,授權(quán)服務(wù)器不能與終端用戶進行交互:該鑒別請求中包含的prompt參數(shù)值為none。此種情況下,如果終端用戶尚未經(jīng)過身份鑒別或無法進行鑒別,授權(quán)服務(wù)器應(yīng)返回一個錯誤信息。當(dāng)授權(quán)服務(wù)器與終端用戶交互時,授權(quán)服務(wù)器應(yīng)采用適當(dāng)措施阻止跨站請求偽造和點擊劫持攻擊。授權(quán)服務(wù)器獲取終端用戶許可/授權(quán)終端用戶成功通過身份鑒別后,在給依賴方發(fā)放信息之前,身份服務(wù)提供方應(yīng)從終端用戶獲取授權(quán)決定。在所使用的請求參數(shù)滿足要求的情況下,授權(quán)決定可以通過推送與終端用戶交互的對話框?qū)崿F(xiàn),使得終端用戶清楚被授權(quán)的內(nèi)容,以便執(zhí)行授權(quán)命令;或者根據(jù)終端用戶提前設(shè)置的授權(quán)規(guī)則來作授權(quán)決定;或者通過其他的方式實現(xiàn)。信息發(fā)放機制不在本標準的規(guī)定范圍內(nèi),身份服務(wù)提供方可以使用恰當(dāng)?shù)姆绞桨l(fā)放許可/授權(quán)信息。終端用戶成功通過身份鑒別后,身份服務(wù)提供方的授權(quán)端點應(yīng)使用本條定義的“鑒別成功響應(yīng)”消息來響應(yīng)依賴方發(fā)送的鑒別請求消息。當(dāng)使用授權(quán)碼鑒別流程時,授權(quán)服務(wù)器應(yīng)發(fā)送授權(quán)碼給依賴方,通常通過重定向的方式實現(xiàn)。授權(quán)服務(wù)器向重定向端點URI的查詢組件添加如下參數(shù)(先使用UTF-8對參數(shù)進行編碼后,再使用“appli-格式編碼必選]由授權(quán)服務(wù)器產(chǎn)生的授權(quán)碼。為降低泄露的風(fēng)險,該授權(quán)碼應(yīng)在發(fā)放后短時間內(nèi)失效。推薦授權(quán)碼最長生命周期為10min。依賴方不得重復(fù)使用該授權(quán)碼。授權(quán)服務(wù)器應(yīng)將授權(quán)碼與依賴方的標識符、重定向URI進行綁定。在后續(xù)的授權(quán)碼換取訪問令牌的過程中,如果授權(quán)碼被重復(fù)使用,授權(quán)服務(wù)器應(yīng)拒絕請求,并撤銷此前基于該授權(quán)碼所發(fā)放的所有訪問令牌。b)〈state〉如果依賴方的鑒別請求中含有此參數(shù),則鑒別響應(yīng)中也應(yīng)包含此參數(shù)。該參數(shù)的值與依賴方發(fā)送的鑒別請求中的〈state〉值相同。依賴方應(yīng)忽略未識別的響應(yīng)參數(shù)。本標準對授權(quán)碼的字符串長度不作定義。依賴方不宜對字符串長度做出假定。身份服務(wù)提供方應(yīng)在其服務(wù)文檔中說明其發(fā)放的所有參數(shù)值的長度。授權(quán)碼的發(fā)放應(yīng)采用GM/T0024—2014中定義的安全通信協(xié)議進行傳輸。當(dāng)終端用戶的鑒別失敗、終端用戶拒絕授權(quán)或出現(xiàn)其他錯誤時,身份服務(wù)提供方的授權(quán)端點應(yīng)使用GM/T0069—2019本條定義的“鑒別錯誤響應(yīng)”消息來響應(yīng)由依賴方發(fā)送的鑒別請求消息。身份服務(wù)提供方,應(yīng)在鑒別錯誤響應(yīng)中包含以下錯誤響應(yīng)參數(shù)。除非依賴方的重定向URI是無效的,否則授權(quán)服務(wù)器應(yīng)將鑒別請求中指定的狀態(tài)參數(shù)和錯誤響應(yīng)參數(shù)返回到依賴方重定向URI的查詢部分,此外不應(yīng)返回其他參數(shù)。本標準定義了如下錯誤響應(yīng)參數(shù):a)interaction_required:表示授權(quán)服務(wù)器應(yīng)與終端用戶交互。當(dāng)鑒別請求的prompt參數(shù)值為1),且在不給終端用戶顯示用戶交互界面的情況下不能完成鑒別請求,應(yīng)返回該錯誤代碼。b)login_required:表示授權(quán)服務(wù)器應(yīng)對終端用戶進行身份鑒別。當(dāng)鑒別請求的prompt參數(shù)值為none,且在不顯示用戶身份鑒別界面的情況下不能完成鑒別請求,應(yīng)返回該錯誤。prompt參數(shù)值為none,且在不給終端用戶顯示用戶界面以提示使用一個授權(quán)服務(wù)器會話的情況下,應(yīng)返回該錯誤代碼。d)consent_required:表示授權(quán)服務(wù)器應(yīng)獲取終端用戶的授權(quán)許可。當(dāng)鑒別請求的prompt參數(shù)值為none,且在不給終端用戶顯示用戶同意界面的情況下,應(yīng)返回該錯誤代碼。如果鑒別請求通過引用傳遞的方式(見)進行傳遞時,當(dāng)出現(xiàn)以下情況:引用指向的資源內(nèi)容中不包含請求對象,或請求對象中包含無效數(shù)據(jù),或者依賴方所使用的代表引用傳遞方式的參數(shù)并不適用于身份服務(wù)提供方,應(yīng)返回錯誤代碼,本標準對此類錯誤代碼不作規(guī)定。本標準定義了如下錯誤響應(yīng)參數(shù):必選]錯誤代碼;可選的]可讀的關(guān)于該錯誤的文字說明,使用ASCII編碼;可選的]包含有關(guān)該錯誤的附加信息;4)〈state〉如果鑒別請求中包含〈state〉參數(shù),則鑒別錯誤響應(yīng)中應(yīng)包含該參數(shù)。參數(shù)值等于依賴方發(fā)送的鑒別請求中的〈state〉參數(shù)值。依賴方應(yīng)驗證收到的鑒別響應(yīng)中的所有必選參數(shù)是否有效,應(yīng)忽略不能識別的響應(yīng)參數(shù)。應(yīng)驗證〈state〉參數(shù)值是否與其在鑒別請求中的〈state〉參數(shù)值是否相同。依賴方向令牌端點發(fā)出包含授權(quán)碼的令牌請求,以獲取訪問令牌。依賴方應(yīng)在請求的主體部分添加如下參數(shù)參數(shù)經(jīng)過編碼后再使用必選]必選]從授權(quán)服務(wù)器獲得的授權(quán)碼;c)〈redirect__uri〉GM/T0069—2019如果依賴方在7.2.3的鑒別請求中包含此參數(shù),則在該請求中也應(yīng)包含此參數(shù)。應(yīng)確保該參數(shù)兩次的值相同;d)〈client_id〉如果依賴方未按照6.2.4的要求進行身份鑒別時,則依賴方應(yīng)在該請求中添加此參數(shù)。授權(quán)服務(wù)器應(yīng):—要求對有保密能力型的依賴方或任何被發(fā)放過依賴方身份憑據(jù)(或被其他鑒別要求所約束)的依賴方進行身份鑒別;—如果需要鑒別該依賴方,則執(zhí)行鑒別流程;—確保發(fā)放授權(quán)碼給正確的依賴方,即通過了身份鑒別的有保密能力型依賴方,或是請求中〈client_id〉參數(shù)所標識的無保密能力型依賴方;—驗證授權(quán)碼是否有效。身份服務(wù)提供方的令牌端點應(yīng)驗證令牌請求,驗證方式如下:a)如果身份服務(wù)提供方發(fā)放了依賴方身份憑據(jù)或者提供了其他鑒別依賴方的方式,則應(yīng)鑒別依賴方;b)確保授權(quán)碼頒發(fā)給能夠通過身份鑒別的依賴方;c)驗證授權(quán)碼的有效性;d)驗證授權(quán)碼未被重復(fù)使用;e)確保redirect_uri參數(shù)值和包含在初始鑒別請求中的redirect_uri參數(shù)值是相同的。如果依賴方只有一個已注冊的redirect_uri值,且redirect_uri參數(shù)值在該請求中不存在,則身份服務(wù)提供方可選擇返回錯誤(因為依賴方在令牌請求中應(yīng)包括該參數(shù)也可選擇繼續(xù)操作(如在此種情況下省略該參數(shù)f)驗證該授權(quán)碼由本標準定義的鑒別成功響應(yīng)返回。當(dāng)驗證來自依賴方的令牌請求是有效的請求之后,身份服務(wù)提供方的令牌端點返回成功的響應(yīng),其中包含ID令牌和訪問令牌。該響應(yīng)使用application/json(見RFC4627)中定義的類型。本標準規(guī)定的響應(yīng)參數(shù)如下:必選]與鑒別會話關(guān)聯(lián)的ID令牌(見8.1.2)。所有包含令牌、憑據(jù)或者其他敏感信息的令牌響應(yīng)中應(yīng)包括表1中HTTP響應(yīng)頭字段和頭字段的值。表1HTTP響應(yīng)的頭字段及其值頭字段頭字段的值Cache-ControlPragma依賴方應(yīng)忽略無法識別的響應(yīng)參數(shù)。必選]授權(quán)服務(wù)器發(fā)放的訪問令牌。必選]GM/T0069—2019身份服務(wù)提供方與依賴方已經(jīng)協(xié)商好的令牌類型,令牌類型的定義和使用不在本標準的規(guī)定范圍內(nèi)。推薦]訪問令牌的生命周期,以秒為單位。例如,“3600”表示該訪問令牌將在響應(yīng)發(fā)出1小時后失效。如果本參數(shù)被省略,授權(quán)服務(wù)器應(yīng)通過其他方式提供失效時間,或公布缺省值。如果該參數(shù)的值與依賴方鑒別請求中的〈scope〉參數(shù)值相同,則該參數(shù)是可選的;其他情況下,該參數(shù)是必選的。f)〈state〉如果依賴方的鑒別請求中含有此參數(shù),則該響應(yīng)中也應(yīng)包含此參數(shù)。該參數(shù)的值與依賴方鑒別請依賴方應(yīng)忽略未識別的響應(yīng)參數(shù)。身份服務(wù)提供方應(yīng)在其服務(wù)文檔中說明其發(fā)放的所有參數(shù)值的長度。如果令牌請求是無效的或未經(jīng)授權(quán)的,授權(quán)服務(wù)器應(yīng)返回錯誤響應(yīng)。HTTP響應(yīng)主體采用appli-見中定義的類型。授權(quán)服務(wù)器返回狀態(tài)碼為的響應(yīng),并在響應(yīng)中包含如下參數(shù):必選]ASCII格式的錯誤代碼,有以下類型:1)invalid_request表示該請求缺失了必選參數(shù),或包含了不被支持的參數(shù)值(但如果是授權(quán)許可是不被支持的類型,返回錯誤碼應(yīng)為invalid_grant或重復(fù)包含了某一參數(shù),或包含了多個憑據(jù),或使用了多種依賴方身份鑒別的方式等。2)invalid_client表示鑒別依賴方的身份失敗。授權(quán)服務(wù)器可返回狀態(tài)碼為401的HTTP響應(yīng),用以表明支持哪些HTTP鑒別方案。3)invalid_grant表示依賴方提供的授權(quán)許可(例如,授權(quán)碼,資源擁有者口令憑據(jù))或刷新令牌是無效的,或過期的,或被撤銷的,或與授權(quán)請求中提供的重定向端點URI不匹配,或發(fā)放給另外的依賴方。4)unauthorized_client表示授權(quán)服務(wù)器不允許該依賴方使用當(dāng)前授權(quán)許可類型。授權(quán)服務(wù)器不支持當(dāng)前使用的授權(quán)許可類型。6)invalid_scope所請求的訪問受保護資源范圍無效、未知、格式有誤或是超出了終端用戶授權(quán)的范圍。參數(shù)的值不應(yīng)包含集合之外的字符??蛇x]終端用戶可讀的關(guān)于錯誤的附加說明,使用ASCII編碼??蛇x]用于標識包含有終端用戶可讀的、關(guān)于該錯誤更多信息的網(wǎng)頁URI。該參數(shù)的值應(yīng)遵循URI-ref-語法并且不應(yīng)包含集合之外的字符。依賴方驗證令牌響應(yīng),驗證規(guī)則如下:a)依賴方應(yīng)驗證所有的必選參數(shù)是否正確、有效,應(yīng)驗證參數(shù)值是否和令牌請求中請求的數(shù)據(jù)一致;GM/T0069—2019c)遵循訪問令牌的驗證規(guī)則(見)。令牌ID令牌的內(nèi)容見8.1.2。當(dāng)使用授權(quán)碼鑒別流程時,ID令牌的聲明需要包括如下擴展要求:可選]訪問令牌的雜湊值。將訪問令牌值的ASCII碼八位位組表示的編碼進行雜湊運算,然后使用Base64url對雜湊值的最左邊一半進行編碼,并作為該參數(shù)值,雜湊算法使用JSON令牌的alg參數(shù)指明的雜湊算法(見8.2)。例如,如果〈alg〉值是SM3,用SM3算法(見GB/T32905—20雜湊值,然后采取最左邊的128位并用Base64url編碼。該〈at_hash〉值是字符串,區(qū)分大小寫。令牌驗證依賴方應(yīng)用下列方式驗證令牌響應(yīng)中的ID令牌:a)如果ID令牌是加密的,使用該依賴方注冊過程中設(shè)置的密鑰和算法,對ID令牌進行解密。依賴方與身份服務(wù)提供方的密鑰協(xié)商,可以在依賴方注冊過程中實現(xiàn),具體實現(xiàn)過程不在本標準的規(guī)定范圍內(nèi)。如果依賴方與身份服務(wù)提供方協(xié)商使用加密的ID令牌,但ID令牌沒有加密,則依賴方應(yīng)拒絕該令牌。b)身份服務(wù)提供方的發(fā)布方標識符(見6.1.3)應(yīng)與〈iss〉參數(shù)完全匹配。c)依賴方應(yīng)驗證ID令牌aud聲明中的client_id值,該client_id值在iss聲明所指定的發(fā)放方注冊。aud聲明可能包含一個數(shù)組,該數(shù)組包含多個依賴方標識符。如果ID令牌沒有把依賴方列為有效的接收方,或者它包含不受依賴方信任的接收方,該ID令牌應(yīng)被拒絕。d)如果ID令牌包含多個接收者,依賴方應(yīng)該驗證該令牌中是否包含azp聲明(見8.1.2)。e)如果azp聲明存在,依賴方應(yīng)該驗證client_id是azp聲明中的接收者列表中的某個元素。f)如果通過依賴方和令牌端點之間直接通信來傳送ID令牌,可以用TLS服務(wù)器驗證身份服務(wù)提供方的身份,從而代替令牌簽名的驗證。依賴方應(yīng)根據(jù)與身份服務(wù)提供方協(xié)商的簽名驗證方式驗證ID令牌的簽名。依賴方應(yīng)使用身份服務(wù)提供方提供的密鑰。依賴方與身份服務(wù)提供方的具體簽名加密協(xié)商過程不在本標準的規(guī)定范圍內(nèi)。參數(shù)值應(yīng)為默認的國家密碼算法或依賴方在注冊過程中定義的參數(shù)所指定的算法。如果令牌的參數(shù)指定使用基于的算法如使用依賴方的cret值的UTF-8編碼作為密鑰,以驗證簽名。i)當(dāng)前時間應(yīng)早于exp參數(shù)見8.1.2所代表的時間。j)iat聲明見8.1.2可以被用來拒絕過于陳舊的令牌,也可以限制nonce的存儲時間以防止被攻擊。該聲明可接受的范圍值由依賴方指定。k)如果請求中包含nonce參數(shù)值,那么nonce參數(shù)在ID令牌中應(yīng)存在,并且要對該值進行檢查,以確認其與請求中的nonce參數(shù)值相同。依賴方應(yīng)檢查該值以防止重放攻擊。用于檢測重放攻擊的方法由依賴方指定。l)如果請求acr聲明,依賴方應(yīng)檢查聲明的值是否合適。本標準不對acr聲明值的含義和處理進行規(guī)定。m)依賴方檢查auth_time參數(shù)值,如果該參數(shù)值表示此終端用戶的最后一次鑒別在很久之前,依賴方應(yīng)要求重新對該終端用戶進行身份鑒別。GM/T0069—2019當(dāng)使用授權(quán)碼鑒別流程時,ID令牌和訪問令牌是從令牌端點返回的。如果ID令牌包含at_hash聲明(見),依賴方可以使用和隱式鑒別流程相同的方式來驗證訪問令牌。7.3隱式鑒別流程本條介紹如何使用隱式鑒別流程進行終端用戶身份的鑒別。隱式鑒別流程主要用于在瀏覽器中使用腳本語言實現(xiàn)的依賴方或本機應(yīng)用程序類型的依賴方。由于這類依賴方不具備安全保存機密信息的能力,因此該流程中的授權(quán)服務(wù)器不執(zhí)行依賴方的身份鑒別。當(dāng)使用隱式鑒別流程時,所有的令牌從授權(quán)端點返回,不使用令牌端點。授權(quán)端點進行終端用戶的鑒別,該過程通過將用戶代理(如瀏覽器)重定向到授權(quán)服務(wù)器的授權(quán)端點進行鑒別和授權(quán)。終端用戶與授權(quán)端點的通信應(yīng)使用GM/T0024—2014中的安全通信協(xié)議。7.3.2隱式鑒別流程步驟隱式鑒別流程的步驟如下:a)依賴方構(gòu)建包含所需請求參數(shù)的鑒別請求;b)依賴方將請求發(fā)送到授權(quán)服務(wù)器;c)授權(quán)服務(wù)器鑒別終端用戶;d)授權(quán)服務(wù)器獲取終端用戶許可/授權(quán);e)授權(quán)服務(wù)器將終端用戶重定向到依賴方,并返回ID令牌,如果請求訪問令牌,則同時返回訪問令牌;f)依賴方驗證ID令牌并獲取終端用戶的主體標識符。當(dāng)使用隱式鑒別流程時,除本節(jié)規(guī)定的差異外,該過程其他部分與授權(quán)碼鑒別流程相同,同7.2.3.1中的定義。必選]用于確定使用的鑒別流程類型。當(dāng)使用隱式鑒別流程時,該參數(shù)值為id_tokentoken或者id_token。當(dāng)值為id_token時不返回訪問令牌,當(dāng)值為id_tokentoken時同時返回ID令牌和訪問令牌。必選]依賴方用于接收身份服務(wù)提供方響應(yīng)消息的URI地址,身份服務(wù)提供方將響應(yīng)發(fā)送到該重定向的URI地址。該URI應(yīng)完全匹配依賴方在身份服務(wù)提供方注冊的重定向URI值,匹配方式采用統(tǒng)一資源標識符(見RFC3986)中定義的匹配方式(如字符串比較)。當(dāng)使用隱式鑒別流程時,重定向的URI不能使用HTTP協(xié)議,除非依賴方是本機應(yīng)用程序,在這種情況下,可能會使用localhost作為http:scheme的主機名。當(dāng)使用隱式鑒別流程時,該過程與授權(quán)碼鑒別流程相同,同中的定義。GM/T0069—20授權(quán)服務(wù)器鑒別終端用戶當(dāng)使用隱式鑒別流程時,鑒別終端用戶的過程與授權(quán)碼鑒別流程相同,同中的定義。授權(quán)服務(wù)器獲取終端用戶許可/授權(quán)當(dāng)使用隱式鑒別流程時,該過程與授權(quán)碼鑒別流程相同,同中的定義。當(dāng)使用隱式鑒別流程時,所有的響應(yīng)參數(shù)添加到重定向URI的片段部分,除非指定了不同的響應(yīng)模式。本標準定義的以下參數(shù)將從授權(quán)端點返回:必選]可選]表示返回訪問令牌,當(dāng)response_type的值為id_token時該參數(shù)不返回??蛇x]身份服務(wù)提供方與依賴方已經(jīng)協(xié)商好的訪問令牌類型,令牌類型的定義和使用不在本標準的規(guī)定范圍內(nèi)當(dāng)?shù)闹禐闀r該參數(shù)不返回。推薦]f)〈state〉參數(shù)所述。當(dāng)使用隱式鑒別流程時,除本條規(guī)定的差異外,該過程其他部分與授權(quán)碼鑒別流程相同,同中的定義。當(dāng)使用隱式鑒別流程時,所有的錯誤響應(yīng)參數(shù)添加到重定向URI的片段部分,除非指定了不同的響應(yīng)模式。片段處理由于響應(yīng)參數(shù)在重定向的URI片段中返回,用戶代理應(yīng)先解析片段的編碼值,再將其傳遞給依賴方。有關(guān)URI片段的處理實現(xiàn),本標準不作規(guī)定。當(dāng)使用隱式鑒別流程時,依賴方應(yīng)按照如下規(guī)定驗證響應(yīng):a)依賴方應(yīng)驗證收到的鑒別響應(yīng)中的所有必選參數(shù)是否正確、有效,應(yīng)忽略不能識別的響應(yīng)參數(shù)。應(yīng)驗證〈state〉參數(shù)值是否與其在鑒別請求中的〈state〉參數(shù)值相同。見除非使用的的值為在使用隱式鑒別流程中,當(dāng)response_type為id_tokentoken時,ID令牌和訪問令牌同時從授權(quán)端GM/T0069—2019點返回的。依賴方對訪問令牌的驗證應(yīng)做到以下幾點:a)將訪問令牌按照ID令牌的〈alg〉參數(shù)中指定的雜湊算法進行雜湊運算。例如,如果〈alg〉是SM3_SM2,所使用的雜湊算法是SM3(見GB/T32905—2016)。b)取雜湊值最左邊的一半,使用Base64url對其進行編碼。c)ID令牌的at_hash參數(shù)值應(yīng)與先前步驟中所產(chǎn)生的值匹配。令牌ID令牌的內(nèi)容見8.1.2。當(dāng)使用隱式鑒別流程時,ID令牌聲明需要提供以下額外參數(shù):a)〈nonce〉隱式鑒別流程中必選。訪問令牌的雜湊值。將訪問令牌值的ASCII碼八位位組表示的編碼進行雜湊運算,然后使用Base64url對雜湊值的最左邊一半進行編碼,并作為該參數(shù)值,雜湊算法使用JSON令牌的alg參數(shù)指明的雜湊算法(見8.2)。例如,如果〈alg〉值是SM3,用SM3算法(見GB/T32905—20雜湊值,然后采取最左邊的128位并用Base64url編碼。該〈at_hash〉值是字符串,區(qū)分大小寫。值的值為ken的情況下,該參數(shù)是必選的。如果response_type的值為id_token,即沒有訪問令牌發(fā)放,該參數(shù)可能不會被使用。令牌驗證當(dāng)使用隱式鑒別流程時,除本條規(guī)定的差異外,ID令牌驗證與授權(quán)碼鑒別流程中ID令牌的驗證相同(見)。本條規(guī)定的ID令牌的驗證包括以下兩點:a)依賴方驗證ID令牌的簽名時,應(yīng)根據(jù)依賴方與身份服務(wù)提供方協(xié)商好的簽名驗證方式進行驗證;注:依賴方與身份服務(wù)提供方協(xié)商簽名驗證的方式不在本標準的規(guī)定范圍內(nèi),依賴方在身份服務(wù)提供方注冊時,可以與身份服務(wù)進行協(xié)商。b)應(yīng)對nonce參數(shù)值進行檢查,確認其和鑒別請求中的nonce值相同。依賴方使用該參數(shù)防止重放攻擊。7.4混合鑒別流程本條介紹如何使用混合鑒別流程進行終端用戶的身份鑒別。當(dāng)使用混合鑒別流程時,有的令牌是從授權(quán)端點返回,有的令牌則從令牌端點返回。對于沒有能力安全保存機密信息的依賴方,不能使用授權(quán)碼換取刷新令牌,因此授權(quán)碼鑒別流程和隱式鑒別流程之外還需要混合鑒別流程?;旌翔b別流程是授權(quán)碼鑒別流程與隱式鑒別流程的結(jié)合,該流程允許依賴方請求ID令牌、訪問令牌和授權(quán)碼的任意組合。例如,在以下情況可使用混合鑒別流程:依賴方需要立即使用ID令牌去訪問終端用戶的身份信息,并且還需要利用授權(quán)碼請求刷新令牌以獲得長期訪問資源的權(quán)限。當(dāng)使用混合鑒別流程時,除7.4指明的差異外,對授權(quán)端點和令牌端點的使用要求與授權(quán)碼鑒別流程中授權(quán)端點和令牌端點的使用要求相同(見7.2.3和7.2.4)。7.4.2混合鑒別流程步驟混合鑒別流程的步驟如下:GM/T0069—2019a)依賴方準備包含所需的請求參數(shù)的鑒別請求;b)依賴方將請求發(fā)送到授權(quán)服務(wù)器;c)授權(quán)服務(wù)器鑒別終端用戶;d)授權(quán)服務(wù)器獲取終端用戶許可/授權(quán);e)授權(quán)服務(wù)器將終端用戶返回到依賴方并攜帶授權(quán)碼,并根據(jù)響應(yīng)類型,返回一個或多個附加參數(shù);f)依賴方使用第e)步收到的授權(quán)碼向令牌端點發(fā)出請求;g)依賴方收到包含ID令牌和訪問令牌的響應(yīng);h)依賴方驗證ID令牌并獲取終端用戶的主體標識符。當(dāng)使用混合鑒別流程時,除本條規(guī)定的差異外,該過程其他部分與授權(quán)碼鑒別流程定義的鑒別請求相同。本條規(guī)定了以下請求參數(shù)的使用方法:必選]當(dāng)使用混合鑒別流程時該值為_或_當(dāng)使用混合鑒別流程時,該過程與授權(quán)碼鑒別流程相同,同中的定義。授權(quán)服務(wù)器鑒別終端用戶當(dāng)使用混合鑒別流程時,該過程與授權(quán)碼鑒別流程相同,同中的定義。授權(quán)服務(wù)器獲取終端用戶許可/授權(quán)當(dāng)使用混合鑒別流程時,該過程與授權(quán)碼鑒別流程相同,同中的定義。當(dāng)使用混合鑒別流程時,除本節(jié)規(guī)定的差異外,該過程其他部分與隱式鑒別流程相同,同中定義。授權(quán)端點返回以下參數(shù):a)〈id__token〉令牌的值為或者時返回該參數(shù)。的值為或者時返回該參數(shù)(type參數(shù)值與此參數(shù)使用相同)。c)〈code〉授權(quán)碼,使用混合鑒別流程時應(yīng)返回該參數(shù)。當(dāng)使用混合鑒別流程時,除本節(jié)規(guī)定的差異外,該過程其他部分與隱式鑒別流程相同,同中的定義。GM/T0069—2019如果終端用戶拒絕請求或終端用戶鑒別失敗,在沒有指定其他響應(yīng)模式的情況下,所有的錯誤響應(yīng)參數(shù)應(yīng)添加到重定向URI的片段部分。片段處理當(dāng)使用混合鑒別流程時,由于響應(yīng)參數(shù)在重定向的URI片段中返回,依賴方需要使用用戶代理解析片段編碼值,并將其傳遞給依賴方的處理邏輯。有關(guān)URI片段的處理實現(xiàn),本標準不做規(guī)定。當(dāng)使用混合鑒別流程時,依賴方應(yīng)按如下方式驗證鑒別響應(yīng):a)依賴方應(yīng)驗證收到的鑒別響應(yīng)中的所有必選參數(shù)是否正確、有效,應(yīng)忽略不能識別的響應(yīng)參數(shù)。應(yīng)驗證〈state〉參數(shù)值是否與其在鑒別請求中的〈state〉參數(shù)值相同;值為或時按照見的值為或見d)按照授權(quán)碼驗證規(guī)則(見0)驗證授權(quán)碼。當(dāng)使用混合鑒別流程時,使用隱式鑒別流程中的訪問令牌驗證方式(見)驗證。為了驗證從授權(quán)端點與ID令牌同時發(fā)出的授權(quán)碼,依賴方應(yīng)做到以下幾點:a)將授權(quán)碼按照ID令牌的alg參數(shù)指定的雜湊算法進行雜湊運算。例如,如果〈alg〉是SM3__SM2,所使用的雜湊算法是SM3(見GB/T32905—2016);b)取雜湊值最左邊的一半,使用Base64url對其進行編碼;c)如果ID令牌中存在c_hash參數(shù)(見1),該參數(shù)的值應(yīng)與先前步驟中所產(chǎn)生的值匹配。令牌ID令牌的內(nèi)容見8.1.2。當(dāng)使用混合鑒別流程時,ID令牌聲明需要有以下擴展的要求:a)〈nonce〉混合鑒別流程中該參數(shù)為必選。訪問令牌的雜湊值。將訪問令牌的ASCII碼八位位組表示的編碼進行雜湊,然后對雜湊值的最左邊一半使用Base64url編碼后的值作為該參數(shù)的值,雜湊算法使用ID令牌的alg參數(shù)對應(yīng)的雜湊算法。例如,如果〈alg〉值是SM3_SM2,用SM3算法(見GB/T32905—2016)計算訪問令牌雜湊值,然后使用最左邊的128位進行Base64url編碼。該〈at_hash〉值是字符串,區(qū)分大小寫。的值為的情況下,該參數(shù)為必選。如果〈response_type〉的值為其他,則該參數(shù)為可選。授權(quán)碼的雜湊值。該值由授權(quán)碼值的ASCII碼八位位組表示的編碼進行雜湊,然后對雜湊值的最左邊一半使用Base64url編碼后的值,雜湊算法使用JSON令牌的alg參數(shù)對應(yīng)的雜湊算法(見8.2)。例如,如果alg是SM3_SM2,用SM3算法(見GB/T32905—2016)計算授權(quán)碼雜湊值,然后采取最左邊的128位并用Base64url編碼。該c_hash值是字符串,區(qū)分大小寫。GM/T0069—2019的值為或者的情況下則該參數(shù)為必選。如果的值為其他則該參數(shù)為可選。令牌驗證當(dāng)使用混合鑒別流程時,應(yīng)以1所述同樣的方式驗證ID令牌。當(dāng)使用混合鑒別流程時,令牌請求與授權(quán)碼鑒別流程相同,同中的定義。當(dāng)使用混合鑒別流程時,令牌請求驗證與授權(quán)碼鑒別流程相同,同中的定義。當(dāng)使用混合鑒別流程時,令牌成功響應(yīng)與授權(quán)碼鑒別流程相同,同中的定義。當(dāng)使用混合鑒別流程時,令牌錯誤響應(yīng)與授權(quán)碼鑒別流程相同,同中的定義。當(dāng)使用混合鑒別流程時,令牌響應(yīng)驗證與授權(quán)碼鑒別流程相同,同中的定義。令牌當(dāng)使用混合鑒別流程時,除本節(jié)規(guī)定的差異外,從令牌端點返回的ID令牌與從授權(quán)端點返回的ID的參數(shù)值為或者deid_tokentoken的情況下,這兩個ID令牌的iss聲明參數(shù)和sub聲明(見8.1.2)參數(shù)應(yīng)是相同的。關(guān)于鑒別事件的所有聲明參數(shù)應(yīng)存在于這兩個ID令牌中。如果任一ID令牌包含有關(guān)終端用戶的聲明,那么這兩個ID令牌應(yīng)該有相同的參數(shù)值。由于隱私的原因,從身份服務(wù)提供方授權(quán)端點可能返回的終端用戶信息不完全包含令牌端點返回的終端用戶信息。令牌端點返回的ID令牌〈at_hash〉聲明參數(shù)值和〈c_hash〉聲明參數(shù)值可以省略,因為從令牌端點返回的ID令牌和訪問令牌已經(jīng)由令牌端點采用GM/T0024—2014中定義的安全通信協(xié)議進行加密。令牌驗證當(dāng)使用混合鑒別流程時,從令牌端點返回的ID令牌應(yīng)以中定義的方式進行驗證。如果訪問令牌同時從授權(quán)端點和令牌端點返回,即〈response_type〉的參數(shù)值為codetoken或者co-deid_tokentoken的情況下,它們的值可以是相同的也可以是不同的。需要注意的是不同的訪問令牌可能由于兩個端點的安全特性不同,從而使得訪問令牌的生命周期和授權(quán)資源不同。當(dāng)使用混合鑒別流程時,應(yīng)遵循中定義的方式對令牌端點返回的訪問令牌進行驗證。GM/T0069—20197.5訪問令牌刷新機制當(dāng)發(fā)送到令牌端點的請求中〈grant_type〉參數(shù)值為refresh_token時,表示使用刷新令牌。本條定義授權(quán)服務(wù)器使用刷新令牌時的流程。要使用刷新令牌,依賴方應(yīng)根據(jù)請求中提供的client_id向令牌端點執(zhí)行鑒別(見6.2.4)。授權(quán)服務(wù)器應(yīng)驗證刷新令牌,驗證該令牌是否應(yīng)發(fā)給該依賴方,并且當(dāng)依賴方存在身份鑒別方法時,應(yīng)驗證依賴方是否通過了身份鑒別。7.5.3刷新成功響應(yīng)刷新令牌驗證成功后,根據(jù)規(guī)定的令牌響應(yīng)進行響應(yīng),但不同的是它可能不包含id_token。如果ID令牌作為令牌刷新請求的結(jié)果,應(yīng)滿足以下要求:a)其iss聲明值應(yīng)與正常鑒別流程發(fā)放的ID令牌相同;b)其sub聲明值應(yīng)與正常鑒別流程發(fā)放的ID令牌相同;c)其iat聲明值應(yīng)代表新的ID令牌發(fā)出的時間;d)其aud聲明值應(yīng)與正常鑒別流程發(fā)放的ID令牌相同;e)如果ID令牌包含auth_time聲明,其值應(yīng)是正常鑒別流程身份鑒別的時間,而不是發(fā)出新的ID令牌的身份鑒別時間;f)azp聲明的值必需與原始鑒別發(fā)生時發(fā)放的ID令牌中對應(yīng)的值相同。如果原始鑒別時發(fā)放的ID令牌中沒有azp聲明,那么azp一定不能出現(xiàn)在新的ID令牌中;g)另外,用刷新令牌獲取ID令牌的規(guī)則需要滿足原始鑒別發(fā)生時發(fā)出ID令牌的規(guī)則。7.5.4刷新錯誤響應(yīng)如果刷新請求是無效的或未經(jīng)授權(quán)的,則授權(quán)服務(wù)器應(yīng)返回在中定義的令牌錯誤響應(yīng)。7.5.5請求和響應(yīng)的安全保護要求針對鑒別請求、令牌請求、刷新請求以及用戶信息請求(見9.3.2),依賴方應(yīng)采取合適的措施,對請求進行保護。依賴方在發(fā)送請求時,應(yīng)對請求進行加密處理,以確保請求的機密性,防止請求泄露??蛇x擇的方法如下:a)采用GM/T0024—2014中的安全通信協(xié)議進行加密傳輸;b)采用合適的密鑰和SM4加密算法(見GB/T32907—2016)對請求中涉及敏感信息的主體部分進行加密。為了防止依賴方否認其發(fā)出過的請求,授權(quán)服務(wù)器應(yīng)要求依賴方對請求進行數(shù)字簽名。服務(wù)器應(yīng)該驗證數(shù)字簽名,以確保該請求是由合法的依賴方發(fā)出,并且確保該請求的完整性。授權(quán)服務(wù)器的響應(yīng)可能包含鑒別數(shù)據(jù)和聲明,鑒別數(shù)據(jù)和聲明中包括有關(guān)依賴方的敏感信息。響應(yīng)內(nèi)容的泄露可導(dǎo)致依賴方易受其他類型的攻擊。本標準要求應(yīng)從以下兩個方面防止服務(wù)器響應(yīng)的泄露:a)使用授權(quán)碼響應(yīng)類型。該響應(yīng)通過GM/T0024—2014保護的通道發(fā)送,在這種方式中依賴進行鑒別。GM/T0069—2019b)對于其他類型的響應(yīng),該響應(yīng)需要先簽名再加密。簽名后的響應(yīng)可以用依賴方的公鑰或共享密鑰加密,以作為用適當(dāng)?shù)拿荑€和加密算法加密的JSON令牌發(fā)送。為了防止授權(quán)服務(wù)器授權(quán)否認其發(fā)出的響應(yīng),授權(quán)服務(wù)器應(yīng)使用對響應(yīng)進行數(shù)字簽名。依賴方應(yīng)驗證該數(shù)字簽名,以確保它是由合法的授權(quán)服務(wù)器發(fā)放,并且確保響應(yīng)的完整性。本標準定義的協(xié)議主要涉及三類令牌:ID令牌、訪問令牌和刷新令牌。其中,ID令牌是在終端用戶成功通過身份鑒別之后,由身份服務(wù)提供方發(fā)放給依賴方的,該令牌包含了終端用戶鑒別結(jié)果的聲明,通常包含簡單的用戶標識,如用戶的主體標識符;訪問令牌也是身份服務(wù)提供方發(fā)放給依賴方的一種憑據(jù),用于依賴方獲取終端用戶的身份信息;刷新令牌是身份服務(wù)提供方發(fā)放給依賴方的,用于重新獲取訪問令牌的憑據(jù)。以上令牌可使用JSON令牌的格式來表述,并結(jié)合密碼技術(shù)來確保安全。令牌ID令牌是包含終端用戶的授權(quán)聲明的JSON令牌,其正文部分是包含終端用戶聲明的JSON對象,關(guān)于聲明的具體內(nèi)容見第9章。下面是ID令牌中所使用的聲明:必選]發(fā)布方標識符。必選]主體標識符。終端用戶在發(fā)布方使用的唯一且不會重新分配的標識符,依賴方使用該標識符,例如它應(yīng)不超過個字符值是字符串,區(qū)分大小寫。必選]ID令牌的接收方。對應(yīng)的依賴方的標示符client_id應(yīng)被列為其中的一個接收方。它可能還包含其他接收方的標識符。在一般情況下,該聲明是區(qū)分大小寫的字符串?dāng)?shù)組。在有且僅有一個接收方的特殊情況下,該值可以是單個字符串,區(qū)分大小寫。必選]ID令牌的有效時間。ID令牌應(yīng)在有效時間內(nèi)使用。實現(xiàn)時,通常會提供不多于幾分鐘的時間差,以應(yīng)對時鐘偏移。聲明值是一個JSON數(shù)字,代表自1970年1月1日0時0分0秒(1970-01-01T0:0:0Z)UTC至到期時間的秒數(shù)。在RFC3339中描述了時間和UTC。必選]ID令牌的發(fā)放時間。聲明值是一個JSON數(shù)字,代表自1970年1月1日0時0分0秒(1970-01-01T0:0:0Z)UTC至發(fā)放時間的秒數(shù)。f)〈auth__time〉鑒別終端用戶的時間。聲明值是一個JSON數(shù)字,代表自1970年1月1日0時0分0秒(1970-01-01T0:0:0Z)UTC至鑒別時間的秒數(shù)。當(dāng)鑒別請求中包含〈max_age〉時,ID令牌中應(yīng)包含該聲明。該參數(shù)用于將ID令牌和依賴方進行關(guān)聯(lián),以避免遭受重放攻擊。參數(shù)值是字符串,區(qū)分大小寫??蛇x]GM/T0069—2019鑒別上下文類引用。該參數(shù)是URI字符串,指定了鑒別上下文類,表示鑒別采用合適的執(zhí)行過程。當(dāng)該參數(shù)值為“0”時,表示終端用戶的鑒別不符合ISO/IEC29115:2013中規(guī)定的1級要求。使用生命周期較長的瀏覽器cookie方式是安全級別為“級別0”的鑒別方法。關(guān)于該參數(shù)值,依賴方和身份服務(wù)提供方應(yīng)進行協(xié)商達成一致?!碼cr〉值區(qū)分大小寫??蛇x]鑒別方法引用。該值是JSON字符串?dāng)?shù)組,該數(shù)組的元素用于表示所使用的身份鑒別方法。對〈amr〉聲明值的定義不在本標準的規(guī)定范圍。關(guān)于該參數(shù)值,依賴方和身份服務(wù)提供方應(yīng)進行協(xié)商達成一致?!碼mr〉值區(qū)分大小寫??蛇x]被授權(quán)方,即被授權(quán)的、接收該ID令牌的依賴方。如果ID令牌包含該參數(shù),則該參數(shù)應(yīng)包含該依賴方ID。當(dāng)ID令牌只有一個接收者并且該接收者與被授權(quán)方不同時,應(yīng)包含該聲明。參數(shù)值是包含StringOrURI的字符串,區(qū)分大小寫。ID令牌可能包含其他聲明(見、和附錄A),未作規(guī)定的聲明應(yīng)忽略。ID令牌應(yīng)簽名,并可選擇簽名然后加密。如果ID令牌是加密的,它應(yīng)先簽名,然后加密,其結(jié)果是嵌套JSON令牌(見8.2.4)。只有當(dāng)響應(yīng)類型中授權(quán)端點不返回ID令牌(例如使用授權(quán)碼流程時)且依訪問令牌是身份服務(wù)提供方發(fā)送給依賴方用于訪問終端用戶身份信息的憑據(jù),代表著終端用戶的授權(quán)。訪問令牌中給出了用戶信息的訪問范圍和訪問有效期,訪問范圍和訪問有效期由終端用戶授權(quán)同意。訪問令牌可作為提取授權(quán)信息的標識符;也可自包含授權(quán)信息,訪問令牌中包含的授權(quán)信息可通過某種方式得到驗證(例如數(shù)字簽名)。本標準要求授權(quán)服務(wù)器應(yīng)先采用SM3算法(見GB/T32905—2016)對訪問令牌進行雜湊運算,再使用SM2算法(見GB/T32918.2—2016)進行簽名,最后使用SM4算法(見GB/T32907—2016)對其加密,將最后簽名加密處理過的
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度2025版木材行業(yè)標準制定合作合同2篇
- 福建省泉州市南安市2024-2025學(xué)年八年級上學(xué)期期末英語試題(無答案)
- 創(chuàng)新創(chuàng)業(yè)-職業(yè)核心能力課件
- 絲印精加工在微型電子設(shè)備制造領(lǐng)域的應(yīng)用考核試卷
- 二零二五年度墓地陵園土地租賃與使用權(quán)轉(zhuǎn)讓合同4篇
- 母嬰行業(yè)2025年度母嬰用品環(huán)保認證服務(wù)合同2篇
- 二零二五版鋼材貨物流動銀行托管運輸合同3篇
- 二零二五年度木制品生產(chǎn)與銷售承包合同3篇
- 2025年公司內(nèi)部競業(yè)保密協(xié)議
- 2025年太陽能光伏電站智能監(jiān)控工程施工合同
- 2024年高純氮化鋁粉體項目可行性分析報告
- 安檢人員培訓(xùn)
- 山東省濰坊市2024-2025學(xué)年高三上學(xué)期1月期末 英語試題
- 危險性較大分部分項工程及施工現(xiàn)場易發(fā)生重大事故的部位、環(huán)節(jié)的預(yù)防監(jiān)控措施
- 《榜樣9》觀后感心得體會四
- 2023事業(yè)單位筆試《公共基礎(chǔ)知識》備考題庫(含答案)
- 化學(xué)-廣東省廣州市2024-2025學(xué)年高一上學(xué)期期末檢測卷(一)試題和答案
- 2025四川中煙招聘高頻重點提升(共500題)附帶答案詳解
- EHS工程師招聘筆試題與參考答案(某大型央企)2024年
- 營銷策劃 -麗亭酒店品牌年度傳播規(guī)劃方案
- 2025年中國蛋糕行業(yè)市場規(guī)模及發(fā)展前景研究報告(智研咨詢發(fā)布)
評論
0/150
提交評論