JWT認証方法
JWT : JSON WEB TOKEN
電子署名URL利用可能文字のみからなるJSON
電子署名によるJSONでの改ざんの確認が可能
認証方式と原理
JWT構成
aaaa.bbbb.ccccのような3つの部分に分かれています
各タイトル.payload.署名で構成
Base 64符号化には「+」、「/」、「=」が含まれるが、JWTはURL-SafeのBase 64 url符号化を使用してURIでパラメータとして使用する(+、/、=などの文字は他の文字列に置き換えられる)
Header
構成
{
"typ": "JWT",
"alg": "HS256"
}
Payload
伝達する情報(ex.ユーザid、ロールなど):claimとも呼ばれる
{
"iss": "//sso.tvcf.co.kr",
"iat": 1626308465,
"exp": 1626394865,
"roles": [
"guest",
"user"
],
"userId": "tonydev",
"userName": "tony",
"userType": 3,
"userLevel": 1
}
一般通貨vsクレームよくあるトークンの問題
クレーム(クレーム:クレーム、要求)
signature
暗号化された鍵にはsecret keyが含まれます
トークンへのアクセスとトークンのリフレッシュ
Access token : JWT
Refresh token:tokenにアクセスするタグを取得する
1-1. Local storage
1-2. Cookie
2-1. セッション
2-2. DBに保存
JWTボリューム期間
タイトル(OSEタイトル)
new Buffer('{"alg":"HS256","typ":"JWT"}').toString("base64")
// eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9
payload(JWT Claim Set)
new Buffer('{"iss":"John Doe","exp":1434290400000,"username":"john","age":25,"iat":1434286842654}').toString("base64")
// eyJpc3MiOiJKb2huIERvZSIsImV4cCI6MTQzNDI5MDQwMDAwMCwidXNlcm5hbWUiOiJqb2huIiwiYWdlIjoyNSwiaWF0IjoxNDM0Mjg2ODQyNjU0fQ==
signature
var crypto = require('crypto');
var secretKey = 'secret';
var headerAndClaimSet = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJKb2huIERvZSIsImV4cCI6MTQzNDI5MDQwMDAwMCwidXNlcm5hbWUiOiJqb2huIiwiYWdlIjoyNSwiaWF0IjoxNDM0Mjg2ODQyNjU0fQ';
crypto.createHmac('sha256', secretKey).update(headerAndClaimSet).digest('base64')
// jzvwdy5mQuzkEenNEFeRlSytvB7+X7NVAvtTDr1jP0Q=
JWTプロパティ
誰でも
タグ確認プロセス
Case 1:access tokenとrefresh tokenの両方が期限切れになった場合->エラーが発生します
Case 2:access tokenは期限切れですが、refresh tokenが有効である場合->access tokenの再発行
Case 3:access tokenは有効ですが、refresh tokenが期限切れの場合->refresh tokenを再起動します
Case 4:accesss tokenとrefresh tokenが有効な場合->
セッション-Cookieメソッドとの比較
セッション-Cookie認証方法
セッション-Cookie認証は、ログインで最も一般的な認証方法です.
Cookie(Cookie)
Cookieは
セッション(サーバ上のリポジトリ)
セッションとクッキーの違い
セッション
トークン方式(JWT)とセッション-Cookie方式の違い
適用した項目の復習
jasonwebtokenモジュール(npm i jsonwebtoken)の使用
JAsonwebtokenはアクセストークンとリフレッシュトークンをどのように管理しますか?
//tvcfの分析方法
分析をtvcfに適用する方法
tvcfのコインの満期日は1日です.
refreshトークンはどこに格納されますか?
私が適用したJWT(npm jsonwebtoken)とtvcfで適用した方法の違いを分析する
{
"id": 9,
"iat": 1626355500
}
トークンで送信されるのはuserです.id
n/a.結論
JWT認証の実現方式は多い.
どちらが正解かは言い難い.
クライアントがリクエストを受信するたびにverify候補を送信するミドルウェアを使用して、会社のサーバが論理をどのように構成しているかを知りたいです.
参考文献
Reference
この問題について(JWT認証方法), 我々は、より多くの情報をここで見つけました https://velog.io/@gth1123/JWT-인증-방식テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol