「[[マイクロソフト系技術情報 Wiki>http://techinfoofmicrosofttech.osscons.jp/]]」は、「[[Open棟梁Project>https://github.com/OpenTouryoProject/]]」,「[[OSSコンソーシアム .NET開発基盤部会>https://www.osscons.jp/dotNetDevelopmentInfrastructure/]]」によって運営されています。

-[[戻る>OAuth 2.0 拡張]]

* 目次 [#kdf99992]
#contents

*概要 [#je6ed00d]
http://self-issued.info/?p=1959

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

**前提 [#vc86ddcd]
+Deviceは、既にインターネットに接続されている状態。
+Deviceは、アウトバウンド&color(red){HTTPS};要求を作成できる。
+Deviceは、UserにURIとコードを表示または通信できる。
+Userは、セカンダリデバイス(PCやスマホなど)を持っている。

**フロー [#eaa50cf2]
      +----------+                                +----------------+
      |          |>---(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 |                |
      +----------+                                +----------------+


+ClientはAuthZ(AuthN)からの認可要求にclient_idを含める(A)。
+AuthZ(AuthN)は、Clientの認可要求に対して下記を応答する(B)。
--デバイス・コード
--エンドユーザ・コード
--エンドユーザ検証URI
+Clientは、Resource Owner(EndUser)に(別のデバイス上の)User-Agentを使用し、~
エンドユーザ検証URIにアクセスしエンドユーザ・コードを入力するように指示(C)。
+User-Agent
--AuthZ(AuthN)はUser-Agentを介しResource Owner(EndUser)を認証。
--許可要求に同意した場合、User-Agentからエンドユーザ・コードを入力、AuthZ(AuthN)で検証(D)。
+Client~
AuthZ(AuthN)を繰り返しポーリング(デバイス・コードとclient_id)
+AuthZ(AuthN)は、Clientから提供されたデバイス・コードとclient_idを検証し、~
Resource Owner(EndUser)が、アクセスを、
--許可した場合はaccess_tokenで応答し、
--拒否した場合はエラーを返す。

*詳細 [#x1cbd2e0]

*参考 [#j86047dc]
**認可エンドポイント [#j07dba0e]

**[[OAuth 2.0 Device Flow]] [#nd8fe690]
***認可リクエスト [#v2dff676]
-ポイントは
--POSTであること。
--IoTデバイスは、Public Clientに近いので、client_secretは不要。

**RFC [#y4893f12]
-HTTP電文
 POST /device_authorization HTTP/1.1
 Host: server.example.com
 Content-Type: application/x-www-form-urlencoded

>
 client_id=459691054427

***認可レスポンス [#g6f8bd1d]
-パラメタ

--device_code
---必須。
---デバイス・コード~
デバイスを検証するコード。

--user_code
---必須。
---エンドユーザー確認コード。

--validation_uri
---必須
---承認のエンドユーザー検証URI
---手動入力可能なように短く。

--validation_uri_complete
---オプション。
---QueryStringにuser_codeを含むvalidation_uri

--expires_in
---必須
---device_code、user_codeの有効期間(秒)。

--間隔
---オプション。
---ポーリング間隔~
最小の待機時間(秒)~
デフォルトは5(秒)

-HTTP電文
      HTTP/1.1 200 OK
      Content-Type: application/json
      Cache-Control: no-store

      {
        "device_code": "GmRhmhcxhwAzkoEqiMEg_DnyEysNkuNhszIySk9eS",
        "user_code": "WDJB-MJHT",
        "verification_uri": "https://example.com/device",
        "verification_uri_complete":
            "https://example.com/device?user_code=WDJB-MJHT",
        "expires_in": 1800,
        "interval": 5
      }

**Tokenエンドポイント [#jc7072d2]

***ポイント [#r8317089]
-ポーリングなので、過負荷にならないように注意する。

-自動的ではなく、デバイス上のプロンプトに~
表示された場合にのみデバイス認証要求を開始するなど。

***クライアント認証 [#v4725417]

*参考 [#j86047dc]
-OAuth 2.0 Device Authorization Grant~
(draft-ietf-oauth-device-flow-15)~
https://tools.ietf.org/html/draft-ietf-oauth-device-flow-15
(draft-ietf-oauth-device-flow)~
https://tools.ietf.org/html/draft-ietf-oauth-device-flow

**内部リンク [#e46addd7]
***[[OAuth 2.0 Device Flow]] [#nd8fe690]
***[[CIBA(Client Initiated Backchannel Authentication)]] [#r107e952]

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


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