RFC 6749 (The OAuth 2.0 Authorization Framework) で定義されている 4 つの認可フロー、および、リフレッシュトークンを用いてアクセストークンの再発行を受けるフローの図解及び動画です。動画は YouTube へのリンクとなっています。
認可コードフロー
RFC 6749, 4.1. Authorization Code Grant で定義されているフローです。認可エンドポイントに認可リクエストを投げ、応答として短命の認可コードを受けとり、その認可コードをトークンエンドポイントでアクセストークンと交換するフローです。
動画: OAuth 2.0, Authorization Code Flow (in Japanese)
インプリシットフロー
RFC 6749, 4.2. Implicit Grant で定義されているフローです。認可エンドポイントに認可リクエストを投げ、応答として直接アクセストークンを受け取るフローです。
動画: OAuth 2.0, Implicit Flow (in Japanese)
リソースオーナー・パスワード・クレデンシャルズフロー
RFC 6749, 4.3. Resource Owner Password Credentials Grant で定義されているフローです。トークンエンドポイントに認可リクエストを投げ、応答としてアクセストークンを受け取るフローです。OAuth のフローですが、クライアントアプリケーションがユーザーの ID とパスワードを受けとります。このフローについては、「OAuth 2.0 + OpenID Connect のフルスクラッチ実装者が知見を語る」の「Resource Owner Password Credentials Grant について」もご参照ください。
動画: OAuth 2.0, Resource Owner Password Credentials Flow (in Japanese)
クライアント・クレデンシャルズフロー
RFC 6749, 4.4. Client Credentials Grant で定義されているフローです。トークンエンドポイントに認可リクエストを投げ、応答としてアクセストークンを受け取るフローです。このフローでは、ユーザーの認証はおこなわれず、クライアントアプリケーションの認証のみがおこなわれます。
動画: OAuth 2.0, Client Credentials Flow (in Japanese)
リフレッシュトークンフロー
RFC 6749, 6. Refreshing an Access Token で定義されているフローです。事前に発行を受けていたリフレッシュトークンをトークンエンドポイントに提示することにより、アクセストークンの再発行を受けます。
動画: OAuth 2.0, Refresh Token Flow (in Japanese)
まとめ
フロー | 認可エンドポイント | トークンエンドポイント | 特徴 |
---|---|---|---|
認可コード | 使う | 使う | 短命の認可コードの発行を受け、トークンエンドポイントでアクセストークンと交換する。 |
インプリシット | 使う | 使わない | 認可エンドポイントから直接アクセストークンの発行を受ける。 |
リソースオーナー・パスワード・クレデンシャルズ | 使わない | 使う | ユーザーの ID とパスワードをクライアントに渡す。 |
クライアント・クレデンシャルズ | 使わない | 使う | クライアントアプリの認証のみでアクセストークンの発行を受ける。 |
リフレッシュトークン | 使わない | 使う | リフレッシュトークンを提示してアクセストークンの再発行を受ける。 |