「[[マイクロソフト系技術情報 Wiki>http://techinfoofmicrosofttech.osscons.jp/]]」は、「[[Open棟梁Project>https://github.com/OpenTouryoProject/]]」,「[[OSSコンソーシアム .NET開発基盤部会>https://www.osscons.jp/dotNetDevelopmentInfrastructure/]]」によって運営されています。 -戻る --[[OAuth 2.0 拡張]] --[[OpenID Connect]] * 目次 [#xa78ef67] #contents *概要 [#y68e6070] 認可Request中のresponse_typeパラメタに新しいパラメタが追加された。 -「code, id_token, token の任意の組み合わせ」か、もしくは none、となった。~ ([[OpenID Connect]] の登場により、この仕様が OAuth 2.0 に追加された)。 -[[code token(Hybrid Flow)>OpenID Connect#l565139a]]などでは、token置換攻撃を防ぎ、安全性を高める。 *仕様 [#ne944a81] **追加された値 [#ib867201] ***none [#ffc1317c] ユーザーが市場からアプリケーションを購入したい場合など。 -Clientが保護リソースへのアクセス許可を登録するようにAuthorization Serverに要求する。 -その時点でClientに返されるアクセス資格情報を必要としない。 -Clientが最終的にアクセス資格情報を取得する手段は、未定義。 ***id_token [#i7829fdd] [[Multiple-Valued>#k3f4b733]]の中で使用される。 **Multiple-Valued [#k3f4b733] -概要~ Implicitのレスポンスに追加のパラメタが付与されているイメージ。 -詳細 --[[response_mode>#ud5245c1]] ---既定の[[response_mode>#ud5245c1]]=fragment ---[[response_mode>#ud5245c1]]=queryは使用不可 --レスポンス・パラメタ ---token_type(response_typeにtokenが含まれる場合) ---access_token(response_typeにtokenが含まれる場合) ---id_token(response_typeにid_tokenが含まれる場合) ---code(response_typeにcodeが含まれる場合) ***id_token token [#acf7c917] [[OpenID Connect]]の[[Implicit Flow>OpenID Connect#e7adf5c2]]を参照。 -概要~ Implicitのレスポンスにid_tokenが付いてるイメージ。 -リクエスト・レスポンスの例 --リクエスト・ヘッダ GET /authorize? response_type=id_token%20token &client_id=s6BhdRkqt3 &redirect_uri=https%3A%2F%2Fclient.example.org%2Fcb &state=af0ifjsldkj HTTP/1.1 Host: server.example.com --レスポンス・ヘッダ HTTP/1.1 302 Found Location: https://client.example.org/cb# access_token=SlAV32hkKG &token_type=bearer &id_token=eyJ0 ... NiJ9.eyJ1c ... I6IjIifX0.DeWt4Qu ... ZXso &expires_in=3600 &state=af0ifjsldkj ***code token [#b2e32c62] [[OpenID Connect]]の[[Hybrid Flow>OpenID Connect#l565139a]]を参照。 -概要~ Implicitのレスポンス・パラメタにcodeが付いてるイメージ。 -リクエスト・レスポンスの例 --リクエスト・ヘッダ GET /authorize? response_type=code%20token &client_id=s6BhdRkqt3 &redirect_uri=https%3A%2F%2Fclient.example.org%2Fcb &state=af0ifjsldkj HTTP/1.1 Host: server.example.com --レスポンス・ヘッダ HTTP/1.1 302 Found Location: https://client.example.org/cb# access_token=2YotnFZFEjr1zCsicMWpAA &token_type=Bearer &code=SplxlOBeZQQYbYS6WxSbIA &state=af0ifjsldkj &expires_in=3600 ***code id_token [#j3ac4a55] [[OpenID Connect]]の[[Hybrid Flow>OpenID Connect#l565139a]]を参照。 -[[code token>#b2e32c62]]のaccess_tokenが、id_tokenに変わったもの。 -この場合、token_typeパラメタのレスポンスは不要。 ***code id_token token [#h3012e4e] [[OpenID Connect]]の[[Hybrid Flow>OpenID Connect#l565139a]]を参照。 -[[code token>#b2e32c62]]のaccess_tokenに加え、id_tokenが追加される。 *セキュリティ考慮事項 [#y3124949] **Query Stringにエンコード [#fb291c98] Query StringはHTTP Refererヘッダから第三者に漏洩する。 -codeをQuery Stringにエンコードすることは安全 -その他のトークンはQuery Stringにエンコードしてはならない。 -デフォルトの応答モードがフラグメントエンコーディングであるレスポンスは、~ Query Stringにエンコードされるべきではない([[response_mode>#ud5245c1]]=query)。 *参考 [#mfbbf39a] -Final: OAuth 2.0 Multiple Response Type Encoding Practices~ http://openid.net/specs/oauth-v2-multiple-response-types-1_0.html -OpenID Connect 全フロー解説 - Qiita~ https://qiita.com/TakahikoKawasaki/items/4ee9b55db9f7ef352b47 -OAuth 2.0 の Response Type 全パターン - OAuth.jp~ http://oauth.jp/blog/2015/01/06/oauth2-multiple-response-type/ **[[OAuth 2.0 Form Post Response Mode]] [#ud5245c1] **[[JWT Secured Authorization Response Mode for OAuth 2.0 (JARM)]] [#zaf2ec74] ---- Tags: [[:IT国際標準]], [[:認証基盤]], [[:クレームベース認証]], [[:OAuth]]