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