雰囲気OAuthシリーズ第一弾
■ 誰に向けた本か
ぜんぜんわからない。俺たちは雰囲気で OAuth をやっている。
そんなエンジニアに向けてこの本を書きました。
具体的には以下の質問に答えられないエンジニア です。
• スコープとはなんですか?
• 認可コード (Authorization code) は何が行われた証ですか?
• Webアプリケーションの場合、どのフローを使うべきですか?
■この本を読むメリット
• OAuth2.0 に関わる概念を整理して理解できます。
• 具体的なソフトウェアプロジェクトの構成要素を OAuth2.0 のロールにマッピングできるようになります。
• 自分のソフトウェアプロジェクトで利用すべきフローを判断できるようになります。
• 利用したい API の OAuth 関連資料やOAuth2.0 の標準仕様を読みこなすための
地図が頭の中にできます。
■ この本の特徴
• Google PhotoのAPIを使った画像編集アプリの例を頻繁に挙げることで、具体的にイメージしやすい説明を試みています。
• チュートリアルの章では、curlとブラウザを使って実際に手を動かしながら学べます
• OAuthの仕様で決められているオプションについては網羅的に説明するのではなく、オーソドックスな一つの例を基に説明しています。
■この本は何の本ではないか
• この本は OpenID Connect については説明していません。 OAuth2.0 と OpenID Connect を並行して学ぶと混乱するからです。まずは OAuth2.0 についてしっかり と理解し、その後、 OpenID Connect との差分を理解する、というのが OAuth2.0 と OpenID Connect の両方を理解するの最短の道だと考えています。
• この本は OAuth1.0 と 2.0 の違いについては説明していません。 OAuth1.0 を利用 するケースはほとんどないためです。
• この本は OAuth2.0 に関する攻撃手段については説明していません。ターゲット読 者がいきなり攻撃手段の話を理解するのは難しいためです 。
■ 目次
第1章 はじめに
1.1 OAuthとはなにか
1.2 OAuthはなぜ必要か
第2章 OAuthのロール
2.1 リソースオーナー
2.2 クライアント
2.3 リソースサーバー
2.4 認可サーバー
2.5 4つのロールの関係
第3章 OAuthのトークン
3.1 アクセストークン
3.2 リフレッシュトークン
3.3 認可コード
第4章 OAuthのエンドポイント
4.1 認可エンドポイント
4.2 トークンエンドポイント
4.3 リダイレクトエンドポイント(リダイレクトURI)
第5章 OAuthのグラントタイプ
5.1 クライアントの登録
5.2 認可コードグラント
5.3 インプリシットグラント
5.4 クライアントクレデンシャルグラント
5.5 リソースオーナーパスワードクレデンシャルグラント
5.6 リフレッシュトークンによるアクセストークン再発行
5.7 認可コードグラント + PKCE
第6章 チュートリアル
6.1 クライアントの登録
6.2 認可コードグラント
6.3 認可コードグラント + PKCE
6.4 インプリシットグラント
付録A OAuth認証について
A.1 認証のためのプロトコルという誤解
A.2 OAuth認証の仕組み
付録B S256でのcode_challengeの算出
付録C OAuth関連用語の英語と日本語の対応