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

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

* 目次 [#rfe8abc9]
#contents

*概要 [#db4237a9]
[[OAuth]] 2.0 コア仕様を補足

トークン(refresh_token, access_token)のメタデータ(JSON)を取得するメカニズム(Token Introspection)~
(Token Introspection : Resource ServerがClientから受け取ったTokenのメタデータをAuthorization Serverに要求する方法)

**目的 [#r1c2965c]
以下のトークンのメタデータのセットを判断する。
-期限、無効化
-アクセス権(scope)
-承認者(Issuer)
-対象クライアント(audience)

**ケース [#x50e8cdf]

**シーケンス [#heb04ca7]

*仕様 [#f2899592]
-Authorization Serverに照会することを許可するプロトコルを定義。

-メタデータを取得するメカニズムには、
--[[SAML]], [[JWT]]
--独自のサービス間通信メカニズム

>などの構造化トークンフォーマットの使用が含まれる。

**Introspection Endpoint [#bdbc2f04]
-Authorization Endpointの規則と同様
--HTTP要求の平文認証情報の送信
--SSL/TLS(サーバ証明)の利用
-自動検出など、URLを取得する手段は、この仕様の範囲外

***Request [#m3ad291c]
HTTP POST要求(application/x-www-form-urlencoded)を使用して、~
以下のパラメタをRevocation Endpointに送信する。

-パラメタ
--token(必須):取り消したいトークン
--token_type_hint(オプション):失効のためのトークンのタイプに関するヒント。
---access_token
---refresh_token
---無効なトークン・タイプは無視される。
--その他、必要時応じて拡張可能

-例
--ヘッダ
 POST /introspect HTTP/1.1
 Host: server.example.com
 Accept: application/json
 Content-Type: application/x-www-form-urlencoded
 Authorization: Basic czZCaGRSa3F0MzpnWDFmQmF0M2JW
--ボディ
 token=mF_9.B5f-4.1JqM&token_type_hint=access_token

***Process [#q9f84581]
-クライアント認証
-トークン検証

***Response [#oc1de99e]
-application / json

-成功
--パラメタ
|#|パラメタ|説明|h
|1|iss|発行者|
|2|token_type|トークンのタイプ|
|3|client_id|client_id|
|4|aud|Clientの可読識別子(≠client_id)|
|5|sub|Resource Ownerの機械可読識別子|
|6|username|Resource Ownerの人間可読識別子|
|7|exp|有効期限|
|8|iat|発行日時|
|9|nbf|Not Beforeタイムスタンプ|
|10|active|true, false|
|11|scope|スペース区切りのscopeリスト|
|12|jti|トークン識別子|
--例(有効)
---ヘッダ
 HTTP/1.1 200 OK
 Content-Type: application/json
---ボディ
 {
   "active": true,
   "client_id": "l238j323ds-23ij4",
   "username": "jdoe",
   "scope": "read write dolphin",
   "sub": "Z5O3upPC88QrAjx00dis",
   "aud": "https://protected.example.net/resource",
   "iss": "https://server.example.com/",
   "exp": 1419356238,
   "iat": 1419350238,
   "extension_field": "twenty-seven"
 }
--例(無効)
---ヘッダ
 HTTP/1.1 200 OK
 Content-Type: application/json
---ボディ
 {
   "active": false
 }

-失敗
--ケース
---クライアント認証に失敗
---トークン検証に失敗
--レスポンス
---HTTP 401 (Unauthorized)
---[[OAuth]] 2.0 のError Responseのエラーコードを返す。

*実装 [#l5787600]
-特に問題なく実装できる。
-取り消しについては、[[OAuth 2.0 Token Revocation]]を参考にする。


*参考 [#t88656a7]
-RFC 7662 - OAuth 2.0 Token Introspection~
https://tools.ietf.org/html/rfc7662

-OAuth2.0の備忘録的まとめ - Ari-Press~
http://www.ari-hiro.com/blog/2012/12/30/oauth2-summary
--Manually Build a Login Flow - Facebook Login~
https://developers.facebook.com/docs/facebook-login/manually-build-a-login-flow/v2.4
-RFC7662として発行されたOAuth Token Introspectionとは - r-weblife~
http://d.hatena.ne.jp/ritou/20151021/1445438454

**[[OAuth 2.0 Token Revocation]] [#vcc8a4db]

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

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS