仕組み

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