Skip to main content
インターネットに接続する入力手段が限られたデバイスでは、デバイスがユーザーを直接認証するのではなく、ユーザーにコンピューターやスマートフォンでリンクにアクセスしてデバイスを認可するよう求めます。これにより、テキストを簡単に入力できないデバイスでも、使いにくいユーザー体験を避けられます。これを実現するために、デバイスアプリは Device (OAuth 2.0 で標準化) を使用します。このフローでは、認可プロセスを開始してトークンを取得するために、自身の を渡します。

仕組み

デバイス認可フローには 2 つの異なる経路があります。1 つは認可を要求するデバイス上で行われ、もう 1 つはブラウザーで行われます。ブラウザー内でデバイスコードがセッションに関連付けられるブラウザーフローの経路は、デバイスフローの経路の一部と並行して進みます。
Flows - デバイス認可 - 認可シーケンス図

デバイスフロー

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

ブラウザフロー

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

実装方法

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

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

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

詳細はこちら