OAuth 2.0 グラントフロー


OAuth 2.0 (RFC 6749) が定義するグラントフローのアニメーションです。各フローがどのように動作するかを、順を追って説明しています。

主要な 3 種類のグラントフロー

認可コードグラントフロー

Watch on YouTube

最も広く使われているグラントフローです。

リソースオーナー(エンドユーザー)の同意に基づいて認可サーバーから発行された「認可コード」を用いて、クライアントは認可サーバーからアクセストークンを取得します。

リフレッシュトークングラントフロー

Watch on YouTube

発行されたアクセストークン(およびリフレッシュトークン)の更新(リフレッシュ)を行うためのグラントフローです。

クライアントは、別のグラントフローの実行結果として取得済みの「リフレッシュトークン」を用いて、認可サーバーからアクセストークン(およびリフレッシュトークン)を取得します。

クライアントクレデンシャルズグラントフロー

Watch on YouTube

ユーザーが関与しないクライアント向けに定義されたグラントフローです。

リソースオーナー(エンドユーザー)ではなく、クライアントが自身のクレデンシャル(例: クライアント ID / クライアントシークレットの組、公開鍵証明書、SAML アサーション) を用いて、認可サーバーからアクセストークンを取得します。

Authlete との連携によるグラントフロー

認可コードグラントフロー + Authlete

Watch on YouTube

Authlete を用いた場合の認可コードグラントフローです。

認可サーバーは、同グラントフローにおける「認可リクエスト」「トークンリクエスト」の内容を、 そのまま Authlete に「丸投げ」します。 Authlete はそのリクエストの内容に応じて処理を行い、認可サーバーに「次に何をすべきか」を回答します。 これにより、認可サーバーは OAuth 2.0 のリクエスト・レスポンス処理の実装や、 アクセストークンの管理を外部化できるようになります。

標準化されたが現在は非推奨のグラントフロー

インプリシットグラントフロー

Watch on YouTube

Web ブラウザー上で動作するクライアント向けに定義された(しかし現在は非推奨となっている)グラントフローです。

リソースオーナー(エンドユーザー)の同意に基づいて、認可サーバーは、そのリソースオーナーが利用する Web ブラウザー上のクライアントにアクセストークンを発行します。

リソースオーナーパスワードクレデンシャルズグラントフロー

Watch on YouTube

ユーザー ID とパスワードに基づいて API アクセス制御を行っているサービスを、OAuth 2.0 に移行させるために定義された(しかし現在は非推奨となっている)グラントフローです。

クライアントは、リソースオーナー(エンドユーザー)から受け取った ID とパスワードを用いて、認可サーバーからアクセストークンを取得します。