■ はじめに
本書はAuth 屋の「雰囲気OAuth シリーズ」第一弾である「雰囲気でOAuth 2.0 を使っているエンジニアがOAuth 2.0 を整理して、手を動かしながら学べる本」をベースにOAuth 2.1 にあわせて大幅に加筆修正したものになります。まずは本書でOAuth の基本的な用語・概念を学び、「認可のプロトコル」の意味するところを理解していただければと思います。
■ OAuth 2.1/2.0 の扱いについて
本書ではOAuth 2.1 をベースに解説します。OAuth 2.1 はOAuth 2.0 の仕様(RFC6749) およびPKCEなどの拡張仕様から要素を取捨選択したベストプラクティスなので、OAuth 2.0 とOAuth 2.1 で共通する点も多くあります。OAuth 2.0とOAuth 2.1 の差分が大きいところについては両者の違いを明確に解説します。
OAuth 2.1 は2025 年11 月04 日現在ドラフト段階ですが、主要な仕様は安定しています。今後、大きな変更があった場合は、本書を改訂して追随する予定です。
■ 誰に向けた本か
「ぜんぜんわからない。俺たちは雰囲気でOAuth を使っている。」または「OAuthまわりはライブラリーにまかせているので、パラメーターを設定するくらいしかやっていない。どんなやりとりが行われているのかわかってない。」というエンジニアに向けてこの本を書きました。具体的には、次の質問に答えられないエンジニアです。
• スコープとはなんですか?
• 認可コードは何が行われた証ですか?
• OAuth 2.1 で必須化されたPKCE とはなんですか?
さらに、「OAuth 2.0 は把握しているが、最新のベストプラクティスであるOAuth
2.1 についても把握したい。」という方にもお役にたちます。なお、多くの認可サー
バーはまだOAuth 2.0 ベースで運用されているため、OAuth 2.0 について知りたい
という方もいると思います。本書ではOAuth 2.0 とOAuth 2.1 の差分についても
解説しており、付録にはOAuth 2.1 で削除されたOAuth 2.0 の2 つのグラントに
ついても解説しているので、OAuth 2.0 を知りたいという方にもお役に立つ内容に
なっています。
■ この本を読むメリット
• OAuth に関わる概念を整理して理解できます。
• 具体的なソフトウェアプロジェクトの構成要素をOAuth のロールにマッピン
グできるようになります。
• OAuth のベストプラクティスであるOAuth 2.1 の仕様を理解できます。
• 利用したいAPI のOAuth 関連資料やOAuth の仕様を読みこなすための地
図が頭の中にできます。
■ この本の特徴
• Google Photos のAPI を使った画像編集アプリの例を頻繁に挙げることで、具体的にイメージしやすい説明を試みています。
• チュートリアルの章では、curl とブラウザーを使って実際に手を動かしながら学べます。
• OAuth の仕様で決められているオプションについては網羅的に説明するのではなく、オーソドックスな1 つの例を基に説明しています。
■ この本は何の本ではないか
• この本はOAuth1.0 については説明していません
• この本はOpenID Connect については説明していません。OAuth とOpenIDConnect を並行して学ぶと混乱するからです。まずはOAuth についてしっかりと理解し、その後、OpenID Connect との差分を理解する、というの
がOAuth とOpenID Connect の両方を理解するの最短の道だと考えています。
• この本はOAuth に関する攻撃手段についてはほとんど説明していません。
Auth屋の本の評判: https://togetter.com/li/1477483
認可のプロトコルであるOAuth2.0と認証の関係を理解するための本です。OpenID Connectの入門書でもあります。
■ 2024年版として以下の項目を追加しました。
4.6 OpenID Configuration」
コラム: OpenID Connect は OAuth の拡張だ が、OAuth ができてから仕様策定が始 まったわけではない」
「4.3.4 ペ イロード」、「4.4 UserInfo エンドポイン ト」、「4.5.3 インプリシットフロー」に ID トークンにプロフィール情報が含まれる 場合についての解説
■ 想定読者
以下のいずれかに当てはまるエンジニア
• OAuthと認証の関係を理解したい
• 「SNSアカウントでログイン」の仕組みを知りたい
• OpenID Connectを理解したい
■ この本を読むメリット
「OAuth は認可のプロトコルなのになぜ OAuth"認証"という言葉が使われているのか」
「OAuth 認証と『OAuth を認証に使えるように拡張した OpenID Connect』は何が違うのか」
この本はこの問に自信をもって答えられるようになります。
この本を読めば、以下のそれぞれでOAuth、OAuth認証、OpenID Connectのうち
何が使われているのかを理解できます。
• サードパーティアプリで Google Photo の画像をダウンロードする場合
• サードパーティアプリに Facebookアカウント でログインする場合
• サードパーティアプリに Googleアカウント でログインする場合
• サードパーティアプリに Googleアカウント でログインして Google Photo から画像をダウンロードする場合
■ この本の特徴
• OpenID Connectの流れをcurlとブラウザで手を動かしながら学べるチュートリアル付き
• 厳密性より、最もオーソドックスな一例を理解できることをめざしています
• 本文は100ページを超えていますが、図が多いのでサクサク読めます
■ はじめに
本書は Auth 屋の「雰囲気 OAuth シリーズ」第三弾であり、OAuth と OpenID Connect への攻撃と対策についての本です。攻撃全般ではなく、攻撃対象として一番狙われる「リダイレクト 部分への攻撃」に特化した内容になっています。リダイレクト部分への攻撃の仕組 みと、state、nonce をはじめとした対策についての仕組みを理解すれば、雰囲気 OAuth使い を脱したと言えるでしょう。
■ 想定読者
• OAuth・OIDC について用語、概念、仕組みはだいたい理解してる(Auth 屋 の前著は読んだ!)
• state、nonce、PKCE、c_hash、at_hashは聞いたことはある。理解はして ない。
• クライアント、リライング・パーティとしてアプリを作るかもしれない
■ 本書の狙い
本書の狙いは、読者がこの本を読み終わった後「下記の攻撃を防ぐためにクライア ント、リライング・パーティとしてなすべきこと」を理解できていることです。
攻撃
• クロスサイトリクエストフォージェリ • リプレイ攻撃
• 認可コード横取り攻撃
• コードインジェクション
• トークンインジェクション
対策
• state
• nonce
• PKCE
• c_hash
• at_hash
■ 本書の特徴
• OAuth・OIDC の各フローのやり取りを一つずつ追いながら解説することで、 容易に攻撃と対策の仕組みがわかる
• 攻撃と対策をビジュアルで理解できる
• 本文 100 ページ程度なので 1 日で読める