デバイス・コードおよびユーザー・コードの生成(OAuthデバイス・フロー)
/oauth2/v1/device
リクエスト
- application/x-www-form-urlencoded
object
- client_id: string
クライアントの一意のID例:
a5bf5db7f6c43b47b1eae399c68319c4
- response_type: string
サーバーからのレスポンスのタイプ(device_code)例:
device_code
- scope: string
デバイス・コードおよびユーザー・コードがリクエストされるスコープ。例:
http://abccorp.com/quote
レスポンス
- application/json
200レスポンス
object
- device_code: string
アクセス・トークンの取得に使用されるデバイス・コード
- expires_in: number
デバイス・コードおよびユーザー・コードの有効期限(秒)
- user_code: string
OAuthデバイス・フローを承認するためにユーザーが使用するユーザー・コード。
- verification_uri: string
ユーザーがユーザー・コードを認証および承認する検証URI。
400レスポンス
object
- error: string
OAuth仕様に基づいたエラー値
- error_description: string
詳細なエラー・メッセージ
401レスポンス
object
- error: string
OAuth仕様に基づいたエラー値
- error_description: string
詳細なエラー・メッセージ
例
デバイス・コード権限付与タイプ・フローを使用してデバイス・コードをリクエストし、アクセス・トークンを取得してユーザーがリソースにアクセスできるようにするには、いくつかのステップが必要です。 デバイス・フローは、デジタル画像フレーム、ゲーム・コンソール、ストリーミング・メディア・プレーヤ(たとえば、Roku)など、データの入力方法が簡単でないデバイスでOAuth 2.0クライアントが実行され、クライアントが認可サーバーからの受信リクエストを受信できない場合に適しています。
クライアントは、ユーザーのストリーミング・メディア・プレーヤまたはデジタル画像フレームと対話するかわりに、別のコンピュータまたはデバイス(デスクトップ・コンピュータ、スマートフォンまたはタブレット)を使用して、認可サーバーに接続し、アクセス・リクエストを承認するようにユーザーに指示します。 クライアントは受信リクエストを受信できないため、ユーザーが承認プロセスを完了するまで認可サーバーを繰り返しポーリングします。
次の例では、cURLを使用してRESTリソースに対するPOSTリクエストを発行することによって、デバイス・コードを取得してから、アクセス・トークンを取得する方法を示しています。 cURLの詳細は、「cURLの使用」を参照してください。 「許可のタイプ」の詳細については、「承認の管理」セクションを参照してください。
ノート:
アクセス・トークンで許可される一連のリソースおよび操作を具体的に定義するための、様々なスコープの使用方法の詳細は、「スコープ」を参照してください。ノート:
これらの例のコマンドでは、URL構造https://tenant-base-url/resource-path
を使用しており、tenant-base-url
はアイデンティティ・サービスURLを示し、リソース・パスはアイデンティティ・サービスAPIを示しています。 使用する適切なURL構造の詳細は、「リクエストの送信」を参照してください。
デバイス・コードの取得
デバイス・コードを取得するリクエストと返されるレスポンスの例を次に示します:
リクエストの例
デバイス・クライアントは、認証されていないコールを/oauth2/v1/device
エンドポイントに対して実行します:
curl -i -k
-H 'Content-Type: application/x-www-form-urlencoded; charset=utf-8'
--request POST 'https://tenant-base-url/oauth2/v1/device' -d 'response_type=device_code&scope=http://tenant-base-url/quotes&client_id=<client-id>'
レスポンスの例
{
"expires_in": 300,
"device_code": "4d03f7bc-f7a5-4795-819a-5748c4801d35",
"user_code": "SDFGHJKL",
"verification_uri": "http://tenant-base-url/ui/v1/device"
}
デバイス・コード権限付与タイプのリクエストとレスポンスの例
ユーザーがクライアントのリクエストを認可(または拒否)している間、クライアントはトークン・エンドポイント(oauth2/v1/token)
で認可サーバーを繰り返しポーリングして、ユーザーの認可ステップが完了したかどうかを確認します。 クライアントは、リクエストに検証コードとそのクライアント識別子を含めます。