PKCE備忘録

ピクシー。Proof Key for Code Exchange by OAuth Public Clients。OAuth 2.0の
拡張仕様。

一意のcode_challenge を照合することでアクセストークン(認可トークン)の横取り
を防ぐ仕組み。難しそうだが、暗号化と仕組みは似ている。

リダイレクトを挟むので、毎リクエストごとにやるものでもなく、アクセストークンの
取得リクエストに対して実装される

  1. 画面側で生成したCode_valifier とcode_challenge(code_challenge_methodによって
    code_valifierを暗号化したもの)のうち、 code_challenge とcode_challenge_method
    をリソースサーバー (ForgeRockなど) に送信
  2. バックエンドはコールバックに、 要求されたレスポンスではなく、リダイレクトに
    より画面ではなく、 APIにレスポンスを返し、 code valifireを改めて送信するよう要
    求する。
  3. APIは、画面側にcode_valifireを要求しそれをリソースサーバーに送信する
  4. 悪意のあるアプリが間にある場合、 code_valifireを持っていないため返却できな
    い。 正しいクライアントはcode_valifireを返すことができるので、リソースサーバ
    ーでこれを検証し、もともと要求されていたレスポンスを返す。

参考

ドキュメントに登場する用語

  • リソースオーナー:Webサーバー。
  • スマホアプリ : ユーザー操作。
  • 認可サーバー:keycloakやforgerockなど、アクセストークンを検証するサービス。自作もできる。
  • リソースサーバー:最終的に取得したいデータを格納しているサーバー。

コメント

タイトルとURLをコピーしました