5
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Token認証についてちゃんと理解すべきときがきた① 〜Tokenとはなんぞや〜

Posted at

なんとなくだった認証まわりのことをしっかり理解しなければいけない時が来たのでちゃんと調べてみたので自分用にまとめてみました。
まずは基本的なところからから。

Tokenとはなんなのか?

結論: 認証・認可の証明

Token認証と言っておきながら、Tokenは主に認可に使用されます。

認証と認可

  • 認証(Authentication)
    「誰であるか」を確認する仕組み。
    例:ユーザー名+パスワード、OAuthログインなど。

  • 認可(Authorization)
    「何をして良いか」を決める仕組み。
    認証後に権限を判定し、利用できる機能を制御します。


ホテルに例えると

  • サーバー → ホテルそのもの
    ホテルという建物や設備全体に相当します。宿泊者はホテル(サーバー)が提供する部屋やサービスを利用します。
    受付(セッション管理)やカードキー(トークン)も、このホテルの仕組みの一部として機能します。

  • セッション → ホテルの「受付」
    サーバー側(受付)が宿泊者の情報を一括管理します。
    宿泊者はチェックイン時に本人確認を行い、以後は受付が滞在情報を保持します。
    状態管理も行うため、ルームサービスの注文履歴問い合わせ内容現在の宿泊日数清掃依頼の有無なども記録されます。

  • トークン → 「カードキー」や「朝食券」
    宿泊者が持ち歩く権利を証明するもの。提示すれば特定のサービスを利用できます。

    • カードキー:部屋の入室やエレベーター利用
    • 朝食券:朝食会場の入場許可
      ただし盗難や紛失時には、第三者による不正利用が可能です。

トークンの種類と役割

  • アクセストークン(AT)
    APIアクセスの利用許可証(短期有効)。
  • リフレッシュトークン(RT)
    アクセストークンの再発行権(長期有効)。
  • CSRFトークン
    リクエストの正当性検証用。

誰が生成して誰が持つか

トークンを生成するのはサーバーです。Cookieも同様にサーバーによって生成され、
生成したものをクライアントが保持することで、認可・認証の証明となっています。
TokenCookie.png


保存先の種類と特徴

保存先 特徴 セキュリティ
メモリ ページ閉じると破棄。リロードで消える。 短命で比較的安全だが、JSからアクセス可能
ローカルストレージ 永続化可能。JSからアクセス可能。 XSS攻撃で盗まれるリスク大
Cookie 自動送信可能。属性で制御できる。 HttpOnlySecureSameSiteでXSS/CSRF対策可能

基本的な運用例

トークン種別 保存先 理由
AT メモリ(Bearer) 短期有効。永続化せず盗難リスク低減
RT Cookie(HttpOnly) 長期有効。JSからアクセスできないようにする
CSRF Cookie SameSiteやDouble Submit CookieでCSRF防止

Cookieのセキュリティ設定

  • HttpOnly
    JavaScript(document.cookie)から参照不可にする。XSSによるCookie窃取を防止。
  • Secure
    HTTPS通信時のみCookieを送信。平文盗聴リスクを低減。
  • SameSite
    他サイトからのリクエスト時にCookieを送信するかを制御。
    • Strict:同一サイトのみ送信
    • Lax:安全なメソッドでのナビゲーション時は送信(デフォルト)
    • None:クロスサイトでも送信(Secure必須)

トークン検証フロー(ざっくり)


まとめ

  • トークンは認可・認証の証明
  • サーバーが生成しクライアントが保持
  • メモリ・LocalStorage・Cookieのいずれかで持つ
  • ATRT CSRF Tokenがある
  • CookieはHttpOnly、Scure、SameSiteなどがよく使われる
5
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?