rfc7519-JSON Web Token

概述

JSON Web令牌(JWT)是一個(gè)緊湊的采用URL安全表示方法的聲明,用于在兩方之間傳輸。JWT的聲明被編碼為一個(gè)JSON對(duì)象,作為一個(gè)JSON Web Signature(JWS)結(jié)構(gòu)的有效載荷或作為一個(gè)JSON Web Encryption(JWE)結(jié)構(gòu)的明碼文本,允許聲明被數(shù)字簽名和進(jìn)行完整性檢查,通過消息認(rèn)證碼(MAC)或者加解密。

備忘錄狀態(tài)

這是一個(gè)因特網(wǎng)標(biāo)準(zhǔn)跟蹤文檔。

本文檔是互聯(lián)網(wǎng)工程任務(wù)組(IETF)的產(chǎn)品。它代表了IETF社區(qū)的共識(shí)。已獲得公眾意見審查,并獲準(zhǔn)由互聯(lián)網(wǎng)工程指導(dǎo)小組(IESG)出版。有關(guān)因特網(wǎng)標(biāo)準(zhǔn)的更多信息,請(qǐng)參考RFC 5741第二節(jié)

版權(quán)聲明

Copyright (c) 2015 IETF Trust和認(rèn)證的文檔作者。版權(quán)所有。

1 介紹

JSON Web令牌(JWT)是一種緊湊的聲明表示格式,適用于空間受限的環(huán)境,如HTTP授權(quán)標(biāo)頭和URI查詢參數(shù)。JWT的聲明被編碼為一個(gè)JSON對(duì)象,作為一個(gè)JSON Web Signature(JWS)結(jié)構(gòu)的有效載荷或作為一個(gè)JSON Web Encryption(JWE)結(jié)構(gòu)的明碼文本,允許聲明被數(shù)字簽名和進(jìn)行完整性檢查,通過消息認(rèn)證碼(MAC)或者加解密。JWT總是使用JWS Compact Serialization或JWE Compact Serialization來表示。

JWT的建議發(fā)音與英文單詞“jot”相同。

1.1 公共標(biāo)識(shí)

關(guān)鍵字"MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", 和"OPTIONAL"將被解釋為“用于指示要求級(jí)別的關(guān)鍵詞”RFC2119描述的那樣。只有當(dāng)術(shù)語出現(xiàn)在所有大寫字母中時(shí)才應(yīng)用該解釋。

2 術(shù)語

"JSON Web Signature (JWS)", "Base64url Encoding", "Header Parameter", "JOSE Header", "JWS Compact Serialization", "JWS Payload", "JWS Signature", 和"Unsecured JWS"在JWS規(guī)范JWS里定義。

"JSON Web Encryption (JWE)", "Content Encryption Key (CEK)", "JWE Compact Serialization", "JWE Encrypted Key", 和"JWE Initialization Vector"在JWE規(guī)范JWE里定義。

"Ciphertext", "Digital Signature", "Message Authentication Code (MAC)", and "Plaintext"在"Internet Security Glossary, Version 2"RFC4949里定義。

這些術(shù)語由本說明書定義:
JSON Web Token (JWT)
A string representing a set of claims as a JSON object that is encoded in a JWS or JWE, enabling the claims to be digitally signed or MACed and/or encrypted.

JWT Claims Set
A JSON object that contains the claims conveyed by the JWT.

Claim
A piece of information asserted about a subject. A claim is represented as a name/value pair consisting of a Claim Name and a Claim Value.

Claim Name
The name portion of a claim representation. A Claim Name is always a string.

Claim Value
The value portion of a claim representation. A Claim Value can be any JSON value.

Nested JWT
A JWT in which nested signing and/or encryption are employed. In Nested JWTs, a JWT is used as the payload or plaintext value of an enclosing JWS or JWE structure, respectively.

Unsecured JWT
A JWT whose claims are not integrity protected or encrypted.

Collision-Resistant Name
A name in a namespace that enables names to be allocated in a manner such that they are highly unlikely to collide with other names. Examples of collision-resistant namespaces include: Domain Names, Object Identifiers (OIDs) as defined in the ITU-T X.660 and X.670 Recommendation series, and Universally Unique IDentifiers (UUIDs) [RFC4122]. When using an administratively delegated namespace, the definer of a name needs to take reasonable precautions to ensure they are in control of the portion of the namespace they use to define the name.

StringOrURI
A JSON string value, with the additional requirement that while arbitrary string values MAY be used, any value containing a ":" character MUST be a URI [RFC3986]. StringOrURI values are compared as case-sensitive strings with no transformations or canonicalizations applied.

NumericDate
A JSON numeric value representing the number of seconds from 1970-01-01T00:00:00Z UTC until the specified UTC date/time, ignoring leap seconds. This is equivalent to the IEEE Std 1003.1, 2013 Edition [POSIX.1] definition "Seconds Since the Epoch", in which each day is accounted for by exactly 86400 seconds, other than that non-integer values can be represented. See RFC 3339 [RFC3339] for details regarding date/times in general and UTC in particular.

3 JSON Web令牌(JWT)概述

JWT表示一組以JWS和/或JWE結(jié)構(gòu)編碼的JSON對(duì)象的聲明。 這個(gè)JSON對(duì)象是JWT聲明集。 根據(jù)RFC 7159 [RFC7159]的第4節(jié),JSON對(duì)象由零個(gè)或多個(gè)名稱/值對(duì)(或成員)組成,其中名稱是字符串,值是任意的JSON值。 這些成員是由JWT代表的聲明。 根據(jù)RFC 7159 [RFC7159]的第2節(jié),此JSON對(duì)象可能在任何JSON值或結(jié)構(gòu)字符之前或之后包含空格和/或換行符。

JWT聲明集中的成員名稱稱為聲明名稱。 相應(yīng)的值稱為聲明值。

JOSE標(biāo)題的內(nèi)容描述了應(yīng)用于JWT聲明集的加密操作。 如果JOSE標(biāo)頭用于JWS,則JWT被表示為JWS,聲明是數(shù)字簽名或MACed,JWT聲明集是JWS有效載荷。 如果JOSE標(biāo)頭用于JWE,則JWT被表示為JWE,聲明被加密,JWT聲明集是由JWE加密的明文。 JWT可以封裝在另一個(gè)JWE或JWS結(jié)構(gòu)中,以創(chuàng)建嵌套的JWT,從而實(shí)現(xiàn)嵌套簽名和加密。

JWT表示為由句點(diǎn)('.')字符分隔的URL安全部分的序列。 每個(gè)部分都包含一個(gè)base64url編碼的值。 JWT中的部件數(shù)量取決于使用JWS Compact Serialization或JWE使用JWE Compact Serialization的結(jié)果JWS的表示。

3.1 JWT示例

以下示例JOSE Header聲明編碼對(duì)象是JWT,JWT是使用HMAC SHA-256算法進(jìn)行MACed的JWS:

{"typ":"JWT",
 "alg":"HS256"}

為了消除上述JSON對(duì)象表示中的潛在模糊性,上面的JOSE標(biāo)頭在此示例中使用的實(shí)際UTF-8表示的八位字節(jié)序列也包含在下面。 (請(qǐng)注意,由于換行符(CRLF對(duì)LF)的不同平臺(tái)表示,行的開始和結(jié)束處的不同間距,最后一行是否具有終止換行符,以及其他原因,可能會(huì)導(dǎo)致模糊。 在這個(gè)例子中,第一行沒有前導(dǎo)或者后面的空格,在第一行和第二行之間出現(xiàn)一個(gè)CRLF換行符(13,10),第二行有一個(gè)前導(dǎo)空格(32),沒有尾隨空格,最后一行 沒有終止換行符。)在此示例中使用JOSE標(biāo)頭的UTF-8表示形式的八位字節(jié)(使用JSON數(shù)組符號(hào))為:

[123, 34, 116, 121, 112, 34, 58, 34, 74, 87, 84, 34, 44, 13, 10, 
   32, 34, 97, 108, 103, 34, 58, 34, 72, 83, 50, 53, 54, 34, 125]

Base64url編碼JOSE頭的UTF-8表示的八位字節(jié)產(chǎn)生這個(gè)編碼的JOSE標(biāo)頭值:

eyJ0eXAiOiJKV1QiLA0KICJhbGciOiJIUzI1NiJ9

以下是JWT聲明集的示例:

{"iss":"joe",
 "exp":1300819380,
 "http://example.com/is_root":true}

以下八位位組序列是JWT聲明集合在此示例中使用的UTF-8表示形式,是JWS有效載荷:

[123, 34, 105, 115, 115, 34, 58, 34, 106, 111, 101, 34, 44, 13, 10,
   32, 34, 101, 120, 112, 34, 58, 49, 51, 48, 48, 56, 49, 57, 51, 56,
   48, 44, 13, 10, 32, 34, 104, 116, 116, 112, 58, 47, 47, 101, 120, 97,
   109, 112, 108, 101, 46, 99, 111, 109, 47, 105, 115, 95, 114, 111,
   111, 116, 34, 58, 116, 114, 117, 101, 125]

編碼JWS有效載荷的Base64url產(chǎn)生這個(gè)編碼的JWS有效載荷(僅用于顯示目的):

eyJpc3MiOiJqb2UiLA0KICJleHAiOjEzMDA4MTkzODAsDQogImh0dHA6Ly
9leGFtcGxlLmNvbS9pc19yb290Ijp0cnVlfQ

使用HMAC SHA-256算法計(jì)算編碼的JOSE標(biāo)題的MAC和編碼的JWS有效載荷,并以[JWS]中指定的方式對(duì)HMAC值進(jìn)行base64url生成此編碼的JWS簽名:

dBjftJeZ4CVP-mB92K27uhbUJU1p1r_wW1gFWFOEjXk

按照這個(gè)順序?qū)⑦@些編碼部分連接在部件之間的周期('.')字符之間產(chǎn)生這個(gè)完整的JWT(僅用于顯示目的):

eyJ0eXAiOiJKV1QiLA0KICJhbGciOiJIUzI1NiJ9
.
eyJpc3MiOiJqb2UiLA0KICJleHAiOjEzMDA4MTkzODAsDQogImh0dHA6Ly9leGFt
cGxlLmNvbS9pc19yb290Ijp0cnVlfQ
.
dBjftJeZ4CVP-mB92K27uhbUJU1p1r_wW1gFWFOEjXk

該計(jì)算在[JWS]的附錄A.1中有更詳細(xì)的說明。 有關(guān)加密JWT的示例,請(qǐng)參見附錄A.1。

4 JWT 聲明

JWT聲明集代表一個(gè)JSON對(duì)象,其成員是JWT傳達(dá)的聲明。 JWT聲明集中的聲明名稱必須是唯一的; JWT解析器必須拒絕具有重復(fù)的聲明名稱的JWT,或者使用JSON語法分析器,該語法僅返回最后一個(gè)重復(fù)的成員名稱,如ECMAScript 5.1 ECMAScript第15.12節(jié)(“JSON對(duì)象”)中所述。

JWT必須包含被認(rèn)為有效的一組聲明是上下文相關(guān)的,超出了本規(guī)范的范圍。 JWT的具體應(yīng)用將需要實(shí)現(xiàn)以特定方式理解和處理一些聲明。 然而,在沒有這樣的要求的情況下,實(shí)現(xiàn)中不了解的所有聲明必須被忽略。

有三類JWT索賠名稱:注冊(cè)索賠名稱,公開聲明名稱和私人聲明名稱。

4.1 注冊(cè)請(qǐng)求名稱

以下聲明名稱已注冊(cè)在由10.1節(jié)建立的IANA“JSON Web令牌聲明”注冊(cè)表中。 以下定義的所有權(quán)利要求都不意味著在所有情況下使用或?qū)嵤┦菑?qiáng)制性的,而是為一組有用的,可互操作的索賠提供了起點(diǎn)。 使用JWT的應(yīng)用程序應(yīng)該定義使用哪些特定聲明,何時(shí)需要或可選。 所有的名稱都很短,因?yàn)镴WT的核心目標(biāo)是使其表現(xiàn)得很緊湊。

4.1.1 "iss" (Issuer) 聲明

"iss" (issuer) 請(qǐng)求確定發(fā)出JWT的委托人。 這種說法的處理通常是具體的應(yīng)用。 “iss”值是一個(gè)包含StringOrURI值的區(qū)分大小寫的字符串。 使用此聲明是可選的。

4.1.2 " sub" (Subject) 聲明

"sub" (Subject)請(qǐng)求確定作為JWT主題的委托人。JWT中的請(qǐng)求通常是關(guān)于該主題的陳述。 主體值必須在發(fā)行者的上下文中被限定為本地唯一的,或者是全局唯一的。 這種說法的處理通常是具體的應(yīng)用。 “sub”值是一個(gè)包含StringOrURI值的區(qū)分大小寫的字符串。 使用此聲明是可選的。

4.1.3 "aud" (Audience) 聲明

"aud" (audience)聲明識(shí)別JWT所針對(duì)的收件人。旨在處理JWT的每個(gè)主體都必須在受眾聲明中確定自己的價(jià)值。 如果索賠的主要處理在本聲明存在的情況下并未標(biāo)明“aud”索賠中的值,那么JWT必須被拒絕。 在一般情況下,“aud”值是一個(gè)區(qū)分大小寫的字符串?dāng)?shù)組,每個(gè)字符串都包含一個(gè)StringOrURI值。 在JWT有一個(gè)觀眾的特殊情況下,“aud”值可以是包含StringOrURI值的單個(gè)區(qū)分大小寫的字符串。 觀眾價(jià)值觀的解釋一般是具體的應(yīng)用。 使用此聲明是可選的。

4.1.4 "exp" (Expiration Time)請(qǐng)求

"exp" (expiration time)標(biāo)識(shí)JWT不得接受處理之前或之后的到期時(shí)間。處理"exp"請(qǐng)求要求當(dāng)前日期/時(shí)間必須在“exp”索賠中列出的到期日期/時(shí)間之前。實(shí)施者可能會(huì)提供一些小的余地,通常不超過幾分鐘來解決時(shí)鐘偏差。 其值必須是包含NumericDate值的數(shù)字。 使用此聲明是可選的。

4.1.5 "nbf" (Not Before) 請(qǐng)求

"nbf" (not before)請(qǐng)求標(biāo)識(shí)JWT不得接受處理的時(shí)間。處理“nbf”請(qǐng)求要求當(dāng)前日期/時(shí)間必須在“nbf”索賠中列出的未來日期/時(shí)間之前或之后。實(shí)施者可能會(huì)提供一些小的余地,通常不超過幾分鐘來解決時(shí)鐘偏差。其值必須是包含NumericDate值的數(shù)字。 使用此聲明是可選的。

4.1.6 "iat" (Issued At)請(qǐng)求

"iat"(issued at)請(qǐng)求確定發(fā)布JWT的時(shí)間。該索賠可用于確定JWT的年齡。 其值必須是包含NumericDate值的數(shù)字。 使用此聲明是可選的。

4.1.7 "jti" (JWT ID)請(qǐng)求

"jwi"(JWT ID)請(qǐng)求為JWT提供唯一的標(biāo)識(shí)符。必須以確保相同值被意外分配給不同數(shù)據(jù)對(duì)象的可能性很小的方式來分配標(biāo)識(shí)符值;如果應(yīng)用程序使用多個(gè)發(fā)行者,則必須在不同發(fā)行者產(chǎn)生的值之間防止沖突。“jti”請(qǐng)求可用于防止JWT重播。“jti”值是區(qū)分大小寫的字符串。 使用此聲明是可選的。

4.2 公開聲明名稱

4.3 私有聲明名稱

5 JOSE頭

5.1 "typ"(Type)頭參數(shù)

5.2 "cty"(Content Type)頭參數(shù)

5.3 復(fù)制請(qǐng)求作為頭參數(shù)

6 無擔(dān)保的JWT

為了支持JWT內(nèi)容通過除JWT內(nèi)的簽名和/或加密之外的方式來保護(hù)的用例(例如包含JWT的數(shù)據(jù)結(jié)構(gòu)上的簽名),JWT也可以在沒有簽名或加密的情況下創(chuàng)建。不安全的JWT是使用“alg”頭參數(shù)值“none”的JWS,并且具有JWA規(guī)范[JWA]中定義的JWS簽名值的空字符串; 它是一個(gè)不安全的JWS,JWT聲明集合作為其JWS有效載荷。

6.1 無擔(dān)保的JWT示例

以下示例JOSE Header聲明編碼對(duì)象是Unsecured JWT:

{"alg":"none"}

Base64url編碼JOSE頭的UTF-8表示的八位字節(jié)產(chǎn)生這個(gè)編碼的JOSE標(biāo)頭值:

eyJhbGciOiJub25lIn0

以下是JWT聲明集的示例:

     {"iss":"joe",
      "exp":1300819380,
      "http://example.com/is_root":true}

Base64url編碼JWT聲明集合的UTF-8表示形式的八位字節(jié)產(chǎn)生此編碼的JWS有效載荷(僅用于顯示目的)

     eyJpc3MiOiJqb2UiLA0KICJleHAiOjEzMDA4MTkzODAsDQogImh0dHA6Ly9leGFt
     cGxlLmNvbS9pc19yb290Ijp0cnVlfQ

編碼的JWS簽名是空字符串。

按照這個(gè)順序?qū)⑦@些編碼部分連接在部件之間的周期('.')字符之間產(chǎn)生這個(gè)完整的JWT(僅用于顯示目的)

     eyJhbGciOiJub25lIn0
     .
     eyJpc3MiOiJqb2UiLA0KICJleHAiOjEzMDA4MTkzODAsDQogImh0dHA6Ly9leGFt
     cGxlLmNvbS9pc19yb290Ijp0cnVlfQ
     .

7 創(chuàng)建和驗(yàn)證JWT

7.1 創(chuàng)建JWT

要?jiǎng)?chuàng)建JWT,執(zhí)行以下步驟。 在步驟的輸入和輸出之間沒有依賴關(guān)系的情況下,步驟的順序不重要。

  1. 創(chuàng)建包含所需聲明的JWT聲明集。 注意,在表示中明確允許空格,并且在編碼之前不需要執(zhí)行規(guī)范化。
  2. 讓消息成為JWT聲明集的UTF-8表示的八位字節(jié)。
  3. 創(chuàng)建一個(gè)包含所需的頭參數(shù)集的JOSE頭。 JWT必須符合[JWS]或[JWE]規(guī)范。 注意,在表示中明確允許空格,并且在編碼之前不需要執(zhí)行規(guī)范化。
  4. 根據(jù)JWT是JWS還是JWE,有兩種情況:
    • 如果JWT是JWS,則使用Message作為JWS有效負(fù)載創(chuàng)建JWS; 必須遵循用于創(chuàng)建JWS的[JWS]中指定的所有步驟。
    • 否則,如果JWT是JWE,則使用Message作為JWE的明文創(chuàng)建一個(gè)JWE; 必須遵循[JWE]中為創(chuàng)建JWE而指定的所有步驟。
  5. 如果將執(zhí)行嵌套簽名或加密操作,請(qǐng)將消息作為JWS或JWE,并使用該步驟中創(chuàng)建的新JOSE頭中的“cty”(內(nèi)容類型)值“JWT”返回到步驟3。
  6. 否則,讓JWT成為JWS或JWE。

7.2 驗(yàn)證JWT

驗(yàn)證JWT時(shí),執(zhí)行以下步驟。 在步驟的輸入和輸出之間沒有依賴關(guān)系的情況下,步驟的順序不重要。 如果任何列出的步驟失敗,則JWT必須被拒絕 - 也就是被應(yīng)用程序視為無效輸入。

  1. 驗(yàn)證JWT是否包含至少一個(gè)句點(diǎn)('.')。

  2. 讓編碼的JOSE標(biāo)題在第一個(gè)('.')字符之前成為JWT的一部分。

  3. Base64url解碼編碼的JOSE標(biāo)題,遵循不使用換行符,空格或其他附加字符的限制。

  4. 驗(yàn)證結(jié)果八位字節(jié)序列是符合RFC 7159 RFC7159的完全有效的JSON對(duì)象的UTF-8編碼表示形式。 讓JOSE Header成為這個(gè)JSON對(duì)象。

  5. 驗(yàn)證生成的JOSE頭只包含其語法和語義都被理解和支持的參數(shù)和值,或者在不明白的情況下被指定為被忽略。

  6. 使用JWE第9節(jié)中描述的任何方法確定JWT是JWS還是JWE。

  7. 根據(jù)JWT是JWS還是JWE,有兩種情況:

    • 如果JWT是JWS,請(qǐng)按照JWS中指定的步驟驗(yàn)證JWS。 讓消息是base64url解碼JWS有效載荷的結(jié)果。
    • 否則,如果JWT是JWE,請(qǐng)按照JWE中指定的步驟驗(yàn)證JWE。 讓消息成為明文。
  8. 如果JOSE標(biāo)頭包含“cty”(內(nèi)容類型)值“JWT”,則該消息是作為嵌套簽名或加密操作主題的JWT。 在這種情況下,返回步驟1,使用Message作為JWT。

  9. 否則,base64url解碼消息,遵循沒有換行符,空格或其他附加字符的限制。

  10. 驗(yàn)證結(jié)果八位字節(jié)序列是符合RFC 7159 [RFC7159]的完全有效的JSON對(duì)象的UTF-8編碼表示形式。 讓JWT聲明集成為這個(gè)JSON對(duì)象。

最后,請(qǐng)注意,在給定的上下文中可以使用哪種算法。 即使JWT可以成功驗(yàn)證,除非JWT中使用的算法可以被應(yīng)用程序所接受,否則它應(yīng)該拒絕JWT。

7.3 字符串比較規(guī)則

處理JWT不可避免地需要將已知字符串與JSON對(duì)象中的成員和值進(jìn)行比較。 例如,在檢查算法的情況下,將根據(jù)JOSE標(biāo)頭中的成員名稱檢查Unicode UNICODE字符串編碼“alg”,以查看是否存在匹配的標(biāo)題參數(shù)名稱。

RFC 7159第8.3節(jié)描述了進(jìn)行成員名稱比較的JSON規(guī)則。 由于執(zhí)行的唯一的字符串比較操作是相等和不等式,因此可以使用相同的規(guī)則來比較成員名稱和成員值與已知字符串的比較。

這些比較規(guī)則必須用于所有的JSON字符串比較,除非成員的定義顯式地調(diào)用不同的比較規(guī)則用于該成員值。 在本規(guī)范中,只有“typ”和“cty”成員值不使用這些比較規(guī)則。

一些應(yīng)用程序可能包含區(qū)分大小寫的值中的不區(qū)分大小寫的信息,例如將DNS名稱作為“iss”(發(fā)行者)聲明值的一部分。 在這些情況下,應(yīng)用程序可能需要為規(guī)范情況定義一個(gè)約定,用于表示不區(qū)分大小寫的部分,例如,如果多個(gè)方可能需要生成相同的值才能進(jìn)行比較,比如縮小它們。 (但是,如果所有其他方都消費(fèi)生產(chǎn)者逐字排出的價(jià)值,而不嘗試將其與獨(dú)立產(chǎn)生的價(jià)值進(jìn)行比較,則生產(chǎn)者使用的情況并不重要。)

8 實(shí)施要求

本節(jié)定義了本規(guī)范的哪些算法和功能是必須實(shí)現(xiàn)的。 使用此規(guī)范的應(yīng)用程序可以對(duì)其使用的實(shí)現(xiàn)施加額外的要求。 例如,一個(gè)應(yīng)用程序可能需要支持加密的JWT和嵌套JWT,而另一個(gè)應(yīng)用程序可能需要使用P-256曲線和SHA-256散列算法(“ES256”)來支持使用橢圓曲線數(shù)字簽名算法(ECDSA)簽名JWT。

在JSON Web算法JWA中指定的簽名和MAC算法中,只有HMAC SHA-256(“HS256”)和“none”必須通過符合JWT實(shí)現(xiàn)來實(shí)現(xiàn)。 推薦實(shí)現(xiàn)還使用SHA-256哈希算法(“RS256”)和使用P-256曲線和SHA-256哈希算法(“ES256”)的ECDSA支持RSASSA-PKCS1-v1_5。 支持其他算法和密鑰大小是可選的。

支持加密的JWT是可選的。 如果一個(gè)實(shí)現(xiàn)提供加密功能,在JWA中指定的加密算法中,只有具有2048位密鑰(“RSA1_5”)的RSAES-PKCS1-v1_5,具有128位和256位密鑰的AES密鑰包(“A128KW”和 “A256KW”),使用AES-CBC和HMAC SHA-2(“A128CBC-HS256”和“A256CBC-HS512”)的復(fù)合認(rèn)證加密算法必須通過一致的實(shí)現(xiàn)來實(shí)現(xiàn)。 建議實(shí)現(xiàn)還支持使用橢圓曲線Diffie-Hellman臨時(shí)靜態(tài)(ECDH-ES)來同意用于包裝內(nèi)容加密密鑰(“ECDH-ES + A128KW”和“ECDH-ES + A256KW”)的密鑰,以及 具有128位和256位密鑰(“A128GCM”和“A256GCM”)的伽羅瓦/計(jì)數(shù)器模式(GCM)的AES。 支持其他算法和密鑰大小是可選的。

對(duì)嵌套JWT的支持是可選的。

9 聲明Content是JWT的URI

該規(guī)范注冊(cè)URN“urn:ietf:params:oauth:token-type:jwt”供應(yīng)用程序使用,該應(yīng)用程序使用URI聲明內(nèi)容類型(而不是例如媒體類型)來表示所引用的內(nèi)容是JWT。

10 IANA注意事項(xiàng)

10.1 JSON Web令牌聲明注冊(cè)表

本節(jié)為JWT聲明名稱建立IANA“JSON Web令牌聲明”注冊(cè)表。 注冊(cè)表記錄了聲明名稱和對(duì)定義它的規(guī)范的引用。 本節(jié)記錄第4.1節(jié)中定義的聲明名稱。

根據(jù)一個(gè)或多個(gè)指定專家的建議,在jwt-reg-review@ietf.org郵件列表上進(jìn)行為期三周的審查期后,值將以規(guī)范要求RFC5226進(jìn)行注冊(cè)。 然而,為了允許在出版之前分配價(jià)值,指定專家一旦確信這樣的規(guī)范將被公布,就可以批準(zhǔn)注冊(cè)。

發(fā)送到郵件列表進(jìn)行審查的注冊(cè)請(qǐng)求應(yīng)使用適當(dāng)?shù)闹黝}(例如“請(qǐng)求注冊(cè)聲明:示例”)。

在審查期內(nèi),指定專家將批準(zhǔn)或拒絕注冊(cè)請(qǐng)求,將此決定通知審查清單和IANA。 拒絕應(yīng)該包括解釋,如果適用的話,應(yīng)該提出如何使請(qǐng)求成功的建議。 長(zhǎng)達(dá)21天以上未注冊(cè)的注冊(cè)請(qǐng)求可以通過IESG的注意(使用iesg@ietf.org郵件列表)進(jìn)行解決。

指定專家應(yīng)適用的標(biāo)準(zhǔn)包括確定提議的注冊(cè)是否與現(xiàn)有功能重復(fù),是否可能具有一般適用性,還是僅對(duì)單個(gè)應(yīng)用程序有用,以及注冊(cè)描述是否明確。

IANA只能接受指定專家的注冊(cè)表更新,并應(yīng)將所有注冊(cè)請(qǐng)求引導(dǎo)到審閱郵件列表。

建議指定多名指定專家,使用本規(guī)范能夠代表不同應(yīng)用的觀點(diǎn),以便能夠?qū)ψ?cè)決策進(jìn)行廣泛的了解。

如果注冊(cè)決定可能被認(rèn)為是為特定專家造成利益沖突的情況,該專家應(yīng)該依照其他專家的判斷。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,156評(píng)論 6 531
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 98,401評(píng)論 3 415
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 176,069評(píng)論 0 373
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我,道長(zhǎng),這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,873評(píng)論 1 309
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 71,635評(píng)論 6 408
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 55,128評(píng)論 1 323
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼。 笑死,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,203評(píng)論 3 441
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 42,365評(píng)論 0 288
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 48,881評(píng)論 1 334
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 40,733評(píng)論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 42,935評(píng)論 1 369
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,475評(píng)論 5 358
  • 正文 年R本政府宣布,位于F島的核電站,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 44,172評(píng)論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,582評(píng)論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,821評(píng)論 1 282
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 51,595評(píng)論 3 390
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 47,908評(píng)論 2 372

推薦閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 134,781評(píng)論 18 139
  • 未完待續(xù) JWT是什么? JWT是JSON Web Token的縮寫,即JSON Web令牌。 JWT規(guī)范 中對(duì)其...
    sladeliu閱讀 8,190評(píng)論 0 12
  • 什么是JWT Json web token (JWT), 是為了在網(wǎng)絡(luò)應(yīng)用環(huán)境間傳遞聲明而執(zhí)行的一種基于JSON的...
    Dearmadman閱讀 1,061,553評(píng)論 214 1,021
  • 家里光照條件不好,卻也想種出一面花墻,把花養(yǎng)成花海?嗯~今天肉多多就給花友們推薦一些在光照不好的室內(nèi)也能養(yǎng)成瀑布的...
    橙子的秘密花園閱讀 291評(píng)論 0 0