- 電子本¥ 1,400
- 物理本+電子本¥ 1,600
- 物理本+電子本+ステッカー¥ 1,630
※ 2023年改定: 全体まとめを最新の議論にそったものに変更しました。 ※ 電子版はpdfとepubをダンロードできます。 Auth屋の本の評判: https://togetter.com/li/1477483 本書の書評: https://dev.classmethod.jp/articles/tech-book-oauth-oidc-redirect/ ステッカーは「OAuth完全に理解した!」ステッカーです。 トップの画像を参照ください。 ================= ■ はじめに 本書は Auth 屋の「雰囲気 OAuth シリーズ」第三弾であり、OAuth と OpenID Connect への攻撃と対策についての本です。攻撃全般ではなく、攻撃対象として一番狙われる「リダイレクト 部分への攻撃」に特化した内容になっています。リダイレクト部分への攻撃の仕組 みと、state、nonce をはじめとした対策についての仕組みを理解すれば、雰囲気 OAuther を脱したと言えるでしょう。 ■ 想定読者 • OAuth・OIDC について用語、概念、仕組みはだいたい理解してる(Auth 屋 の前著は読んだ!) • state、nonce、PKCE、c_hash、at_hashは聞いたことはある。理解はして ない。 • クライアント、リライング・パーティとしてアプリを作るかもしれない もし OAuth・OIDC についての理解があやしいようであれば、ぜひ、以下の前著も合わせてお読みください。 • OAuth本 [ https://booth.pm/ja/items/1296585 ] • OpenID Connect本 [ https://booth.pm/ja/items/1550861 ] ■ 本書の狙い 本書の狙いは、読者がこの本を読み終わった後「下記の攻撃を防ぐためにクライア ント、リライング・パーティとしてなすべきこと」を理解できていることです。 - 攻撃 • クロスサイトリクエストフォージェリ • リプレイ攻撃 • 認可コード横取り攻撃 • コードインジェクション • トークンインジェクション - 対策 • state • nonce • PKCE • c_hash • at_hash ■ 本書の特徴 • OAuth・OIDC の各フローのやり取りを一つずつ追いながら解説することで、 容易に攻撃と対策の仕組みがわかる • 攻撃と対策をビジュアルで理解できる • 本文 100 ページ程度なので 1 日で読める
目次
第1章 OAuth・OIDC のおさらい 1.1 OAuth・OIDCの用語の整理 1.2 リダイレクトが狙われる 第2章 CSRF 2.1 CSRFとは 2.2 state による対策 2.3 まとめ コラム: 効率的に CSRF を行う方法 第3章 リプレイ攻撃 3.1 リプレイ攻撃とは 3.2 nonceによるタイ草 3.3 まとめ 第4章 リプレイ攻撃 リプレイ攻撃とは nonceによる対策 まとめ 第5章 トークンインジェクション 5.1 トークンインジェクションとは 5.2 OAuthでの対策 5.3 at_hashによる対策 5.4 まとめ コラム: OAuth 認証とトークンインジェクション コラム: トークンはどこからもれるのか? 第6章 コードインジェクション 6.1 コードインジェクションとは 6.2 PKCE による対策 6.3 nonce による対策 6.4 c_hash による対策 6.5 まとめ 第7章 全体整理 7.1 PKCE、nonceによるCSRF対策 7.2 OAuth 認可コードフロー (サーバーサイドアプリ):"code" 7.3 OAuth 認可コードフロー (ネイティブアプリ):"code" 7.4 OAuthインプリシットフロー:"token" 7.5 OAuth ハイブリッドフロー (JS アプリ):"code token" 7.6 OIDC 認可コードフロー (サーバーサイドアプリ):"code" 7.7 OIDC 認可コードフロー (サーバーサイドアプリ):"code id_token" 7.8 OIDC 認可コードフロー (ネイティブアプリ):"code" 7.9 OIDC 認可コードフロー (ネイティブアプリ):"code id_token" 7.10 OIDC インプリシットフロ (JS アプリ):"token id_token" 7.11 OIDC ハイブリッドフロー (ネイティブアプリ):"code id_token" 7.12 OIDC ハイブリッドフロー (JS アプリ):"code token" 7.13 OIDC ハイブリッドフロー (JS アプリ):"token id_token" 7.14 OIDC ハイブリッドフロー (JS アプリ):"token code id_token" コラム:ハイブリッドフローでのパラメータ共有について