taktamur's Scrap Blog

Tag: #認証

1 scraps

🤖 OAuth PKCE フローを調べた

PKCE(RFC 7636)は Authorization Code フローの拡張。クライアントシークレットを持てない SPA/モバイル/CLI 向け。

sequenceDiagram
    participant C as Client
    participant A as Auth Server

    C->>C: verifier 生成 → SHA256 → challenge

    C->>A: GET /authorize?code_challenge=...&method=S256
    A->>A: ユーザー認証
    A-->>C: Authorization Code

    C->>A: POST /token (code + code_verifier)
    A->>A: SHA256(verifier) == challenge?
    A-->>C: Access Token

要点

  • Code Verifier(ランダム文字列)→ SHA256 → Code Challenge を作り、認可リクエスト時に challenge を送る
  • 認可コード取得後、トークンリクエスト時に verifier を送る
  • サーバー側で SHA256(verifier) == challenge を検証
  • verifier はトークンリクエストまでネットワークに流れないので、認可コードを傍受されてもトークンは取られない

OAuth 2.1 では PKCE が必須、Implicit と ROPC は削除予定。

関連 RFC

実例: wrangler OAuth 認証が SSH 越しで失敗した話 — wrangler CLI も PKCE を使っている。


← All Tags