OIDC / OAuth 2.0
← シミュレーター一覧

デバイス認可フロー

入力機能が制限されたデバイス(スマートTV、IoTデバイス、CLIツール等)のためのフロー。ユーザーは別のデバイス(スマートフォン等)のブラウザでコードを入力して認証します。

ステップ 1 / 520%
クライアント
ブラウザ
認可サーバー
リソースサーバー
>1. デバイス認可リクエスト
>2. ユーザーコード表示
>3. ユーザーがブラウザでコード入力・認証
>4. デバイスがポーリング
<5. トークン取得
1

デバイス認可リクエスト

クライアント認可サーバー

デバイスが認可サーバーのデバイス認可エンドポイントにリクエストを送信し、ユーザーコードとデバイスコードを取得します。

リクエスト概要

デバイス認可エンドポイントへのリクエスト

セキュリティ注意事項
  • !device_code はデバイスが保持する秘密の値
  • !user_code はユーザーに表示する短いコード
  • !interval はポーリング間隔(秒)
POST/device/code
Headers
Content-Type: application/x-www-form-urlencoded
Body
client_id=my-tv-app&scope=openid profile

使用すべき場面

  • -スマートTV、ストリーミングデバイス
  • -IoTデバイス、スマートスピーカー
  • -CLIツール(GitHub CLI、AWS CLI等)
  • -入力機能が制限されたデバイス全般

使用すべきでない場面

  • -ブラウザベースのアプリ → 認可コード + PKCE を使用
  • -サーバー間通信 → クライアントクレデンシャルを使用
  • -通常のWebアプリ → 認可コードフローを使用

セキュリティ考慮事項

  • !ユーザーコードは十分なエントロピーを持たせる
  • !device_code の有効期限を適切に設定する
  • !ポーリング間隔を守り、サーバーに過度な負荷をかけない
  • !リモートフィッシング攻撃のリスクに注意
  • !ユーザーコードの入力画面でドメインを確認するよう促す