- 追加された行はこの色です。
- 削除された行はこの色です。
「[[マイクロソフト系技術情報 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]]から変更された(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]
**認可エンドポイント [#j07dba0e]
***認可リクエスト [#v2dff676]
-ポイントは
--POSTであること。
--IoTデバイスは、Public Clientに近いので、client_secretは不要。
-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)~
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]]