JWT-JSON Web Token 簡介

JWT-JSON Web Token 是一個用來加密傳輸的方案,如果你要用到google api ,就非得走這樣的協定

一個完整的 JWT 應具備以下內容:


{Base64url encoded header}.{Base64url encoded claim set}.{Base64url encoded signature}

第一部分是 Header,此部份用來指示 JWT 所使用的演算法及類型
{
“alg”: “RS256”,
“typ”: “JWT”
}
第二部分是 Claim set,此部份是 JWT 的主要資料部分

{
“iss” => “http://example.org”,
“aud” => “http://example.com”,
“iat” => 1356999524,
“nbf” => 1357000000
}
沒有規定要怎麼寫,可以自己設定,或是按照對方的api規範去做

第三部分是 Signature,主要會是透過JOSE Header中的演算法去對JOSE Header和JWT Claims Set做Hash,看了幾個做法可以放key在裡面

HMACSHA256(
base64UrlEncode(header) + “.” +
base64UrlEncode(payload)

)

 

傳出去的結果會向這樣
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaGRkZGRkZG4gRG9lIiwiYWRtaW4iOnRydWV9.U13LyelAx_1e6eYw8NT670iAbiJBotozF7W8HkVuWcY

這個”.”是負責連結三個字串的

JOSE = Javascript Object Signing and Encryption

範例
請參考
https://github.com/firebase/php-jwt

 

註1.通常Claim set會被描述成payload

註2.JOSE是Javascript Object Signing and Encryption的縮寫

發佈留言