JWT (Json Web Token)
認証と承認
資格認定
要求されたクライアントが、主張されているユーザーと同じかどうかを確認します.
承認
ターゲット・クライアントは、リクエスト・オペレーションがクライアントに許可されているかどうかを確認します.
以前は、データベースに直接アクセスするセッション(Session)を使用して認証を行いました.
この方法は、同時ユーザが多い場合、サーバがオーバーロードする可能性があるため、問題があります.
これらの問題はJWTで簡単に解決できます.
(最初のログイン時にtokenを使用して次の権限をすばやく処理)
pythonはPyJWTライブラリでサポートされています.
JWT
JWTは、ヘッダー(Header)、ペイロード(Payload)、署名(Sinature)の3つの部分に分かれています.Base64
符号化には「+」、「/」、「=」が含まれるが、JWTはURL−SafeのBase64url
符号化を使用してURIでパラメータとして使用する.
たとえば、access_token = jwt.encode({'id': 19}, 'secret', algorithm='HS256')
eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpZCI6MTl9.oJPc2ULv5OUuJkMUr7-tE9YZJKzU2broxWw_oB6x1yw
上記tokenは、PyJWTライブラリによって生成されます.
見出し
{
"typ": "JWT",
"alg": "HS256"
}
Headerはトークンタイプとハッシュ暗号化アルゴリズムからなる.
上記情報をBase64url
と符号化するとeyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9
となる.
内容
{
"id": 19
}
Payloadは、その中に含まれる情報の1つの「破片」をクレームと呼び、name / value
対から構成されています.
コインには複数のクレームが含まれます.
クレームの情報には、登録されたクレーム、公開されたクレーム、非公開のクレームの3種類があります.
同様に、符号化がBase64url
であれば、eyJpZCI6MTl9
である.
に署名
最後に、署名は鍵を含む暗号化されます.HMACSHA256(
base64UrlEncode(header) + "." +
base64UrlEncode(payload),
your-256-bit-secret
) secret base64 encoded
上記の構成からなる.Base64url
で符号化されたタイトルとコンテンツに加えて、秘密鍵(同様に符号化)も含まれる.
対応するアルゴリズム(HS256
)を用いてハッシュを行い、値を生成する.
だからこの秘密の鍵が露出されなければ、
Payloadを偽造して送信することも署名によって許可されます.
このtokenの詳細については、jwtサイトを参照してください.
リファレンス
( https://kibua20.tistory.com/83 )
( http://www.opennaru.com/opennaru-blog/jwt-json-web-token/ )
Reference
この問題について(JWT (Json Web Token)), 我々は、より多くの情報をここで見つけました
https://velog.io/@cmin95/JWT-Json-Web-Token
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
JWTは、ヘッダー(Header)、ペイロード(Payload)、署名(Sinature)の3つの部分に分かれています.
Base64
符号化には「+」、「/」、「=」が含まれるが、JWTはURL−SafeのBase64url
符号化を使用してURIでパラメータとして使用する.たとえば、
access_token = jwt.encode({'id': 19}, 'secret', algorithm='HS256')
eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpZCI6MTl9.oJPc2ULv5OUuJkMUr7-tE9YZJKzU2broxWw_oB6x1yw
上記tokenは、PyJWTライブラリによって生成されます.見出し
{
"typ": "JWT",
"alg": "HS256"
}
Headerはトークンタイプとハッシュ暗号化アルゴリズムからなる.上記情報を
Base64url
と符号化するとeyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9
となる.内容
{
"id": 19
}
Payloadは、その中に含まれる情報の1つの「破片」をクレームと呼び、name / value
対から構成されています.コインには複数のクレームが含まれます.
クレームの情報には、登録されたクレーム、公開されたクレーム、非公開のクレームの3種類があります.
同様に、符号化が
Base64url
であれば、eyJpZCI6MTl9
である.に署名
最後に、署名は鍵を含む暗号化されます.
HMACSHA256(
base64UrlEncode(header) + "." +
base64UrlEncode(payload),
your-256-bit-secret
) secret base64 encoded
上記の構成からなる.Base64url
で符号化されたタイトルとコンテンツに加えて、秘密鍵(同様に符号化)も含まれる.対応するアルゴリズム(
HS256
)を用いてハッシュを行い、値を生成する.だからこの秘密の鍵が露出されなければ、
Payloadを偽造して送信することも署名によって許可されます.
このtokenの詳細については、jwtサイトを参照してください.
リファレンス
( https://kibua20.tistory.com/83 )
( http://www.opennaru.com/opennaru-blog/jwt-json-web-token/ )
Reference
この問題について(JWT (Json Web Token)), 我々は、より多くの情報をここで見つけました https://velog.io/@cmin95/JWT-Json-Web-Tokenテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol