仕組み

デバイスフロー
- ユーザーがデバイス上でアプリを起動します。
-
デバイスアプリは、自身の Client ID を使用して Auth0 Authorization Server に認可をリクエストします (
/oauth/device/codeエンドポイント) 。 -
Auth0 Authorization Server は、
device_code、user_code、verification_uri、verification_uri_complete、expires_in(device_codeとuser_codeの有効期間 (秒) ) 、およびポーリング間隔を示すintervalを返します。 -
デバイスアプリは、ユーザーにコンピューターまたはスマートフォンを使って有効化するよう求めます。アプリでは、次のいずれかの方法でこれを行えます。
- これらの値を画面に表示し、ユーザーに
verification_uriにアクセスしてuser_codeを入力するよう求める verification_uri_completeから生成された、ユーザーコードが埋め込まれた QR Code または短縮 URL のいずれかをユーザーに操作してもらう- ブラウザベースのデバイスで Native に実行されている場合は、
verification_uri_completeを使用して、ユーザーコードが埋め込まれた確認ページに直接移動する
- これらの値を画面に表示し、ユーザーに
-
デバイスアプリは、
intervalで指定された間隔で、直前のポーリング request への応答を受け取った時点から時間を数え、アクセストークンを取得するために Auth0 Authorization Server の /oauth/token エンドポイントへのポーリングを開始します。デバイスアプリは、ユーザーがブラウザフローを完了するか、ユーザーコードの有効期限が切れるまでポーリングを続けます。 -
ユーザーがブラウザフローを正常に完了すると、Auth0 Authorization Server はアクセストークン (必要に応じてリフレッシュトークンも) を返します。
device_codeは期限切れになるため、デバイスアプリはこの時点で破棄する必要があります。 - デバイスアプリは、アクセストークンを使って API を呼び出し、ユーザーに関する情報にアクセスできます。
- API は、リクエストされたデータを返します。
ブラウザフロー
- ユーザーはコンピューターで
verification_uriにアクセスし、user_codeを入力したうえで、有効化するデバイスに同じuser_codeが表示されていることを確認します。ユーザーが別の方法 (QR コードをスキャンするなど) でverification_uri_completeにアクセスした場合は、デバイスの確認だけで済みます。 - 必要に応じて、Auth0 Authorization Server がユーザーをログイン画面と同意プロンプトにリダイレクトします。
- ユーザーは設定済みのログインオプションのいずれかを使って認証し、デバイスアプリを認可するための同意ページが表示されることがあります。
- デバイスアプリによる API へのアクセスが認可されます。