メインコンテンツへスキップ
インターネットに接続する入力に制約のあるデバイスでは、デバイスがユーザーを直接認証する代わりに、コンピューターやスマートフォンでリンク先にアクセスしてデバイスを認可するようユーザーに求めます。これにより、テキストを簡単に入力できないデバイスで生じる使い勝手の悪さを避けられます。これを実現するため、デバイスアプリは (OAuth 2.0 で標準化) を使用します。このフローでは、 を渡して認可プロセスを開始し、トークンを取得します。

仕組み

デバイス認可フロー には、2 つの異なるフローがあります。1 つは認可を要求するデバイス上で実行され、もう 1 つはブラウザーで実行されます。ブラウザーでは、device code がそのブラウザーのセッションに関連付けられるフローが、デバイスフローの一部と並行して進行します。
フロー - Device Authorization - 認可シーケンス図

デバイスフロー

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

ブラウザフロー

  1. ユーザーはコンピューターで verification_uri にアクセスし、user_code を入力したうえで、有効化しようとしているデバイスに同じ user_code が表示されていることを確認します。ユーザーが別の方法 (QRコードのスキャンなど) で verification_uri_complete にアクセスした場合は、デバイスの確認のみが必要です。
  2. 必要に応じて、Auth0 認可サーバーはユーザーをログインおよび同意のプロンプトにリダイレクトします。
  3. ユーザーは設定済みのログインオプションのいずれかで認証し、デバイスアプリの認可を求める同意ページが表示される場合があります。
  4. デバイスアプリに API へのアクセス権が付与されます。

実装方法

デバイス認可フロー を実装する最も簡単な方法は、次のチュートリアルに従うことです。デバイス認可フロー を使用して API を呼び出す

デバイスの再認可を強制する

ユーザーにデバイスの再認可を強制するには、そのデバイスに紐付けられているを失効させる必要があります。手順については、ユーザーからデバイスのリンクを解除するを参照してください。なお、現在のの有効期限が切れ、アプリケーションが失効済みのリフレッシュトークンを使用しようとするまでは、そのデバイスに再認可は強制されません。リフレッシュトークンの詳細については、リフレッシュトークンを参照してください。

詳しく見る