摘要:在驅(qū)動(dòng)開(kāi)發(fā)的今天,針對(duì)的驗(yàn)證授權(quán)越來(lái)越重要,這是保證數(shù)據(jù)安全第一步。部分要?jiǎng)?chuàng)建簽名部分,必須采用已編碼的已編碼的密匙簽名算法。
在API驅(qū)動(dòng)開(kāi)發(fā)的今天,針對(duì)API的驗(yàn)證授權(quán)越來(lái)越重要,這是保證數(shù)據(jù)安全第一步?;趖oken授權(quán)的機(jī)制隨著實(shí)踐的不斷進(jìn)步也推陳出新,其中較為人知的有:
HTTP Basic
API Key
OAuth2
JSON Web Token(JWT)
他們都有各自不同適用場(chǎng)景,此處僅對(duì)JWT進(jìn)行拋磚引玉簡(jiǎn)單介紹。
JWT是Internet Engineering Task Force(IETF)制定的開(kāi)放標(biāo)準(zhǔn),歸檔為RFC 7519
JWT兩大優(yōu)點(diǎn):小巧:由于尺寸較小,JWT可以通過(guò)URL,POST參數(shù)或HTTP標(biāo)頭內(nèi)發(fā)送。另外,尺寸越小意味著傳輸速度越快。
自包含:Token的載荷部分可以包含有關(guān)用戶(hù)的所有必需信息,避免了多次查詢(xún)數(shù)據(jù)庫(kù)的需要
JWT基本結(jié)構(gòu)Header(頭部)
Payload(荷載)
Signature(簽名)
jwt最終形成的字符串結(jié)構(gòu)如:xxxxx.yyyyy.zzzzz,每一部分都是基于base64url編碼的值。
Header部分通常情況下Header部分會(huì)包含兩個(gè)值,typ表示token類(lèi)型,alg表示hash算法,如:
{ "typ": "JWT", "alg": "HS256" }Payload部分
這部分是包含聲明數(shù)據(jù)的有效荷載,共有有三種聲明數(shù)據(jù):Registered、Public、Private,所有的聲明數(shù)據(jù)都不是必須的。
Registered此種類(lèi)型的聲明是預(yù)先定義的,每一個(gè)都有特定的含義。此種類(lèi)型的聲明往往是推薦使用的,因?yàn)樗麄冏孞WT的數(shù)據(jù)更合理。目前已經(jīng)注冊(cè)的類(lèi)型有:
iss:issuer的簡(jiǎn)寫(xiě),表示發(fā)行JWT的主體方
sub:subject的簡(jiǎn)寫(xiě),表示該JWT的主題,該值需在上下文中唯一或全局唯一
aud:audience的簡(jiǎn)寫(xiě),表示該JWT的接收人
exp:expiration的簡(jiǎn)寫(xiě),表示過(guò)期時(shí)間,其值必須為Unix時(shí)間戳
nbf:not before的簡(jiǎn)寫(xiě),表示JWT生效時(shí)間,其值必須為Unix時(shí)間戳
iat:issued at的簡(jiǎn)寫(xiě),表示JWT的發(fā)行時(shí)間
jti:JWT ID的簡(jiǎn)寫(xiě),表示JWT的唯一標(biāo)識(shí)
Public此種類(lèi)型的聲明可由JWT的使用者隨意定義,但通常情況下為了避免沖突,我們需要使用IANA JSON Web Token Registry中已注冊(cè)的,或者被定義為包含抗沖突命名空間的URI。
Private此種類(lèi)型的聲明可由JWT的使用者隨意定義,但通常情況下我們需要使用Registered和Public之外的。
{ "iss": "api", "exp": 1300819380, "email": "[email protected]", "hobby": "basketball" }Signature部分
要?jiǎng)?chuàng)建簽名部分,必須采用已編碼的Header、已編碼的Payload、密匙、簽名算法。
簽名的計(jì)算邏輯:
HMACSHA256(base64UrlEncode(header) + "." + base64UrlEncode(payload), secret)
從上面的計(jì)算方法可以看出,JWT只保證數(shù)據(jù)的不可串改,不保證數(shù)據(jù)不可窺探。假如我們的secret值為‘password",那么由本篇內(nèi)容中羅列的示例數(shù)據(jù)計(jì)算出的最終JWT值為:
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJhcGkiLCJleHAiOjEzMDA4MTkzODAsImVtYWlsIjoidGVzdEBlbWFpbC5jb20iLCJob2JieSI6ImJhc2tldGJhbGwifQ.hKYJybV4u0Rc4oIB7l7LKbHWbKlMM1dkquq53MM5N2Q
我們可以在JWT Debugger進(jìn)行驗(yàn)證.
JWT的使用JWT可以通過(guò)任何方式從客戶(hù)端發(fā)送到服務(wù)器,但通常在API的驗(yàn)證流程中使用HTTP-Bearer
Authorization: Bearer
下圖展示了完整的流程:
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/93470.html
摘要:簡(jiǎn)介為網(wǎng)絡(luò)應(yīng)用環(huán)境間傳遞聲明而執(zhí)行一種基于開(kāi)放標(biāo)準(zhǔn)認(rèn)證用戶(hù)身份信息認(rèn)證成功,才可獲取其它資源,如用戶(hù)登錄最重要作用對(duì)信息防偽的原理一個(gè)由三個(gè)部分組成公共部分私有部分簽名部分。 1.簡(jiǎn)介: (1.1)JWT(Json Web Token): ? ? ? ? ? ? ? 為網(wǎng)絡(luò)應(yīng)用環(huán)境間傳遞聲明...
摘要:通過(guò)這個(gè)鏈接打開(kāi)對(duì)應(yīng)的幫助文檔,可以看到下列七種登錄手段。上圖的圖例描述了部署在云平臺(tái)環(huán)境上的應(yīng)用是如何通過(guò)訪(fǎng)問(wèn)系統(tǒng)上的服務(wù)。用戶(hù)完成登錄操作后,一個(gè)簡(jiǎn)稱(chēng)為被創(chuàng)建,發(fā)送給,并緩存于內(nèi)。將請(qǐng)求通過(guò)轉(zhuǎn)發(fā)給。 ABAP Netweaver 在事務(wù)碼SICF里選擇一個(gè)服務(wù),在明細(xì)頁(yè)面對(duì)Procedure字段點(diǎn)擊F1,查看Logon Procedure的幫助文檔。showImg(https://...
摘要:通過(guò)這個(gè)鏈接打開(kāi)對(duì)應(yīng)的幫助文檔,可以看到下列七種登錄手段。上圖的圖例描述了部署在云平臺(tái)環(huán)境上的應(yīng)用是如何通過(guò)訪(fǎng)問(wèn)系統(tǒng)上的服務(wù)。用戶(hù)完成登錄操作后,一個(gè)簡(jiǎn)稱(chēng)為被創(chuàng)建,發(fā)送給,并緩存于內(nèi)。將請(qǐng)求通過(guò)轉(zhuǎn)發(fā)給。 ABAP Netweaver 在事務(wù)碼SICF里選擇一個(gè)服務(wù),在明細(xì)頁(yè)面對(duì)Procedure字段點(diǎn)擊F1,查看Logon Procedure的幫助文檔。showImg(https://...
摘要:此信息可以通過(guò)數(shù)字簽名進(jìn)行驗(yàn)證和信任。用途授權(quán)和安全傳輸信息的結(jié)構(gòu)通常由兩部分組成令牌的類(lèi)型,即,以及正在使用的散列算法,例如或。加密的數(shù)據(jù)簽名應(yīng)用知道了的用途后,我們就開(kāi)始針對(duì)授權(quán)來(lái)結(jié)合做簡(jiǎn)單的實(shí)現(xiàn)。 JWT簡(jiǎn)介 官方是這樣介紹的: JSON Web Token (JWT) is an open standard (RFC 7519) that defines a compact a...
摘要:今天的文章來(lái)自李貝寧,成都研究院的資深程序猿和架構(gòu)師。是研究院內(nèi)部的教練,也是成都研究院若干內(nèi)部培訓(xùn)課程的講師。而李貝寧,在成都研究院三支分別使用和的開(kāi)發(fā)團(tuán)隊(duì)里都被任命為架構(gòu)師,技術(shù)的全面性不輸于史大郎。 今天的文章來(lái)自李貝寧(Ben),SAP成都研究院的資深程序猿和架構(gòu)師。 作為成都研究院里同時(shí)精通Java, JavaScript和ABAP這三門(mén)編程語(yǔ)言的數(shù)位同事之一,Ben曾經(jīng)先后...
閱讀 2659·2021-11-11 16:55
閱讀 697·2021-09-04 16:40
閱讀 3093·2019-08-30 15:54
閱讀 2635·2019-08-30 15:54
閱讀 2424·2019-08-30 15:46
閱讀 418·2019-08-30 15:43
閱讀 3241·2019-08-30 11:11
閱讀 2995·2019-08-28 18:17