ピクシー。Proof Key for Code Exchange by OAuth Public Clients。OAuth 2.0の
拡張仕様。
一意のcode_challenge を照合することでアクセストークン(認可トークン)の横取り
を防ぐ仕組み。難しそうだが、暗号化と仕組みは似ている。
リダイレクトを挟むので、毎リクエストごとにやるものでもなく、アクセストークンの
取得リクエストに対して実装される
- 画面側で生成したCode_valifier とcode_challenge(code_challenge_methodによって
code_valifierを暗号化したもの)のうち、 code_challenge とcode_challenge_method
をリソースサーバー (ForgeRockなど) に送信 - バックエンドはコールバックに、 要求されたレスポンスではなく、リダイレクトに
より画面ではなく、 APIにレスポンスを返し、 code valifireを改めて送信するよう要
求する。 - APIは、画面側にcode_valifireを要求しそれをリソースサーバーに送信する
- 悪意のあるアプリが間にある場合、 code_valifireを持っていないため返却できな
い。 正しいクライアントはcode_valifireを返すことができるので、リソースサーバ
ーでこれを検証し、もともと要求されていたレスポンスを返す。
参考
ドキュメントに登場する用語
- リソースオーナー:Webサーバー。
- スマホアプリ : ユーザー操作。
- 認可サーバー:keycloakやforgerockなど、アクセストークンを検証するサービス。自作もできる。
- リソースサーバー:最終的に取得したいデータを格納しているサーバー。
コメント