Publicité
Publicité

Contenu connexe

Publicité

20220218_JWTについて.pptx

  1. JWTについて 1/7
  2. JSON Web Token(JWT)とは 情報を安全に送受信するためのJSONベースの規格 トークン Email パスワード サービス サーバ ユーザ トークンを用いる情報のやり取りの際、 暗号化したJSONをトークンとして扱うため、 全世界共通のルール「JWT」が定められた。 リクエスト&トークン レスポンス ① ② ③ ④ 2/7
  3. JWTの構造 JWTは3​つの要素から成る。 各プロパティはクレームと呼ばれる ヘッダ ペイロード 署名 署名のアルゴリズムなどを 格納する 任意のクレームを格納する。 標準クレームのほかに カスタムクレームも格納できる エンコードしたヘッダとペイロードを 指定アルゴリズムと秘密鍵で暗号化する これらをそれぞれBase64urlでエンコードし、 「.」でつなげたものがトークンとして扱われる 3/7
  4. JWTの利点 ・サーバの秘密鍵による署名を含めることができるため、 正規のトークンか判別しやすい ・「?」や「=」など、URLに影響を与える文字を含まない (URLセーフ) ・認証情報をJWTとしてユーザ側が保持することで、 複数のサービスへのSSOが容易になる 4/7
  5. JWTによるログイン例 JWT ユーザ 認証サーバ サーバA サーバC JWT Email パスワード 秘密鍵 サーバB 公開鍵 公開鍵 公開鍵 秘密鍵と公開鍵により、複数サーバに同時ログインできる 5/7
  6. JWTによる認証の弱点 ・サーバ側に情報を保持しないため、ユーザ依存の タイミングでトークンの完全無効化はできない ・XSS攻撃や秘密鍵漏洩による情報漏洩への対策が難しい ・サーバ側にJWTの情報を保存することで、上記問題に 対策できるが、スケーラビリティが損なわれる 6/7
  7. JWTをどう使うか? ・ログイン時はJWTを使い、その後のセッション管理は セッションIDで行うか、JWTの情報をサーバに保存する →SSOに便利だが、JWTのステートレスの利点が失われる ・LocalStorageとCookie​のどちらに保存するべきか →クライアント単体で保持する以上、どちらもリスクがある ・そもそも認証には使わない方がいいか →JWTは安全な送受信のための規格なので、 認証以外にも使い道はたくさんあると思われる 7/7
Publicité