マイクロソフト系技術情報 Wiki」は、「Open棟梁Project」,「OSSコンソーシアム .NET開発基盤部会」によって運営されています。

目次

概要

http://self-issued.info/?p=1959

と言った理由で、OAuth 2.0 Device Flowから変更された(v15から)。

前提

  1. Device(≒ Public Client)は、
    1. 既にインターネットに接続されている状態。
    2. アウトバウンドHTTPS要求を作成できる。
    3. EndUser?(≒ Resource Owner)にURIとコードを表示できる。
  2. EndUser?(≒ Resource Owner)は、
    セカンダリデバイス(PCやスマホなど)を持っている。

フロー

+----------+                                +----------------+
|          |>---(A)-- Client Identifier --->|                |
|          |                                |                |
|          |<---(B)-- Device Code,      ---<|                |
|          |          User Code,            |                |
|  Device  |          & Verification URI    |                |
|  Client  |                                |                |
|          |  [polling]                     |                |
|          |>---(E)-- Device Code,      --->|                |
|          |          & Client Identifier   |                |
|          |                                |  Authorization |
|          |<---(F)-- Access Token      ---<|     Server     |
+----------+   (& Optional Refresh Token)   |                |
      v                                     |                |
      :                                     |                |
     (C) User Code & Verification URI       |                |
      :                                     |                |
      v                                     |                |
+----------+                                |                |
| End user |                                |                |
|    at    |<---(D)-- End user reviews  --->|                |
|  Browser |          authorization request |                |
+----------+                                +----------------+
  1. ClientはAuthZ(N)Serverからの認可要求にclient_idを含める(A)。
  2. AuthZ(N)Serverは、Clientの認可要求に対して下記を応答する(B)。
    • デバイス・コード
    • エンドユーザ・コード
    • エンドユーザ検証URI
  3. Clientは、EndUser?(≒ Resource Owner)に(別のデバイス上の)User-Agentを使用し、
    エンドユーザ検証URIにアクセスしエンドユーザ・コードを入力するように指示(C)。

  4. User-Agent
    • AuthZ(N)ServerはUser-Agentを介しEndUser?(≒ Resource Owner)を認証。
    • 許可要求に同意した場合、User-Agentからエンドユーザ・コードを入力、AuthZ(N)Serverで検証(D)。
  5. Client
    AuthZ(N)Serverを繰り返しPolling(デバイス・コードとclient_id)(E)

  6. AuthZ(N)Serverは、
    Clientから提供されたデバイス・コードとclient_idを検証し、
    EndUser?(≒ Resource Owner)が、アクセスを、
    • 許可した場合はaccess_tokenで応答し、(F)
    • 拒否した場合はエラーを返す。

詳細

認可エンドポイント

認証リクエストを受け付けて直ちにレスポンスする(以後、非同期的に処理)。

認可リクエスト

認可レスポンス

エラーの返却

POSTのJSON返却なので、Tokenエンドポイントのレスポンス(失敗)と同じ。

ユーザへの指示

Resource Owner(EndUser?)への指示。

※ device_codeは、混乱を招くため、対話中に表示しない。

表示例

手順

  1. Resource Owner(EndUser?)は、AuthZ(N)Server の verification_uri(HTTPS)に移動、
  2. user_codeを入力し、AuthZ(N)Serverに送信(デバイス認可セッションの識別のため)
    ※ user_code入力画面への遷移前のサインアップ、追加のセキュリティ検証などの手順を追加可能。
  3. この後に表示される画面で、同意 / 拒否 を回答して、AuthZ(N)Serverに再送信。
  4. Device(≒ Public Client)はdevice_codeでTokenエンドポイントを継続的にPolling
    • ユーザーが対話を完了するか、
    • コードが期限切れになるか、
    • 別のエラーが発生するまで。

セキュリティ考慮事項

user_code入力の試行回数は、5回(アルファベットで8文字程度)。

Tokenエンドポイント

Tokenリクエスト

デバイス上のプロンプトに表示した後、TokenリクエストのPollingを始める。

Tokenレスポンス

ポイント

その他

メタデータ

セキュリティ考慮事項

参考

2019年8月にDraftからRFC化がされている。

内部リンク

OAuth 2.0 Device Flow

CIBA(Client Initiated Backchannel Authentication)


Tags: :IT国際標準, :認証基盤, :クレームベース認証, :OAuth


トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS