Json web token (JWT), 是為了在網(wǎng)絡(luò)應(yīng)用環(huán)境間傳遞聲明而執(zhí)行的一種基于JSON的開(kāi)放標(biāo)準(zhǔn)((RFC 7519).該token被設(shè)計(jì)為緊湊且安全的跑芳,特別適用于分布式站點(diǎn)的單點(diǎn)登錄(SSO)場(chǎng)景。JWT的聲明一般被用來(lái)在身份提供者和服務(wù)提供者間傳遞被認(rèn)證的用戶身份信息直颅,以便于從資源服務(wù)器獲取資源博个,也可以增加一些額外的其它業(yè)務(wù)邏輯所必須的聲明信息,該token也可直接被用于認(rèn)證功偿,也可被加密盆佣。
JWT的構(gòu)成
第一部分我們稱它為頭部(header),第二部分我們稱其為載荷(payload, 類似于飛機(jī)上承載的物品),第三部分是簽證(signature).
header
jwt的頭部承載兩部分信息:
聲明類型械荷,這里是jwt
聲明加密的算法 通常直接使用 HMAC SHA256
載荷就是存放有效信息的地方共耍。這個(gè)名字像是特指飛機(jī)上承載的貨品,這些有效信息包含三個(gè)部分
標(biāo)準(zhǔn)中注冊(cè)的聲明
公共的聲明
私有的聲明
signature
jwt的第三部分是一個(gè)簽證信息吨瞎,這個(gè)簽證信息由三部分組成:
header (base64后的)
payload (base64后的)
secret
jwt應(yīng)用場(chǎng)景:
Authorization (授權(quán)) : 這是使用JWT的最常見(jiàn)場(chǎng)景痹兜。一旦用戶登錄,后續(xù)每個(gè)請(qǐng)求都將包含JWT关拒,允許用戶訪問(wèn)該令牌允許的路由佃蚜、服務(wù)和資源庸娱。單點(diǎn)登錄是現(xiàn)在廣泛使用的JWT的一個(gè)特性,因?yàn)樗拈_(kāi)銷很小谐算,并且可以輕松地跨域使用熟尉。