PKCE のバックアップ差分(No.3)


  • 追加された行はこの色です。
  • 削除された行はこの色です。
#author("2021-11-15T03:43:40+00:00","default:k1rou","k1rou")
*PKCE とは [#ea019304]
#author("2022-10-08T15:48:54+09:00","default:k1rou","k1rou")
*PKCE [#ea019304]
**名称 [#ddc1723f]
-Proof Key for Code Exchange by OAuth Public Clients
-ピクシー

**概要 [#mf0ac42e]
-RFC7636
-「ピクシー」
-[[OAuth]]の拡張仕様
--[[OAuth]]の拡張仕様
-認可コード横取り攻撃対策
-パブリッククライアント(主にスマホアプリ)で[[OAuth]] を利用する場合の[[脆弱性]]を防ぐ仕組み

*攻撃手法 [#ra075fbb]
-攻撃者が用意した不正なスマホアプリを誤ってインストールさせる
-正規のスマホアプリからの認可リクエストに対する認可サーバからの認可レスポンスを不正アプリが受信して、認可コードを不正に入手する
--認可レスポンスがブラウザ経由でアプリに連携される際に、ブラウザは送り先のアプリをカスタムスキームとクライアントIDで判別する
--不正アプリは正規のアプリと同じカスタムスキームとクライアントIDを利用することで横取りが成立してしまうことがある

*PKCE の仕組み(攻撃の対策方法) [#d2f523a7]
**使うもの [#t0c85ac7]
-検証コードとチャレンジコードを使う
-検証コード
--ランダムな文字列

-チャレンジコード
--検証コードを元に生成する
---plain(検証コードそのまま)
---S256(Base64-URL(SHA-256(検証コード)))

**フロー [#o4138676]
+スマホアプリが認可サーバに送る認可リクエストにチャレンジコードを追加する
+認可サーバはチャレンジコードを保存する
+スマホアプリが認可サーバに送るトークンリクエストに検証コードを追加する
+認可サーバは検証コードを検証する
++検証コードからチャレンジコードを生成する
++生成したチャレンジコードと保存していたチャレンジコードが一致しているか確認する

*関連用語 [#te149d08]
-[[OAuth]]
-[[OAuth2.0]]
-[[FAPI]]