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