OAuth 2.0 全フローの図解と動画

  • 1007
    いいね
  • 0
    コメント

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)
RFC6749-4_1-authorization_code_flow-Japanese.png

インプリシットフロー

RFC 6749, 4.2. Implicit Grant で定義されているフローです。認可エンドポイントに認可リクエストを投げ、応答として直接アクセストークンを受け取るフローです。

動画: OAuth 2.0, Implicit Flow (in Japanese)
RFC6749-4_2-implicit_flow-Japanese.png

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

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)
RFC6749-4_3-resource_owner_password_credentials_flow-Japanese.png

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

RFC 6749, 4.4. Client Credentials Grant で定義されているフローです。トークンエンドポイントに認可リクエストを投げ、応答としてアクセストークンを受け取るフローです。このフローでは、ユーザーの認証はおこなわれず、クライアントアプリケーションの認証のみがおこなわれます。

動画: OAuth 2.0, Client Credentials Flow (in Japanese)
RFC6749-4_4-client_credentials_flow-Japanese.png

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

RFC 6749, 6. Refreshing an Access Token で定義されているフローです。事前に発行を受けていたリフレッシュトークンをトークンエンドポイントに提示することにより、アクセストークンの再発行を受けます。

動画: OAuth 2.0, Refresh Token Flow (in Japanese)
RFC6749-6-refresh_token_flow-Japanese.png

まとめ

フロー 認可エンドポイント トークンエンドポイント 特徴
認可コード 使う 使う 短命の認可コードの発行を受け、トークンエンドポイントでアクセストークンと交換する。
インプリシット 使う 使わない 認可エンドポイントから直接アクセストークンの発行を受ける。
リソースオーナー・パスワード・クレデンシャルズ 使わない 使う ユーザーの ID とパスワードをクライアントに渡す。
クライアント・クレデンシャルズ 使わない 使う クライアントアプリの認証のみでアクセストークンの発行を受ける。
リフレッシュトークン 使わない 使う リフレッシュトークンを提示してアクセストークンの再発行を受ける。