「[[マイクロソフト系技術情報 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のレスポンスに追加のパラメタが付与されているイメージ。
--従って、authorization codeではなく、ImplicitとHybrid Flowの中で使用される。
-詳細

--[[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]
**関連仕様 [#b31d91f0]
-OAuth & OpenID Connect 関連仕様まとめ - Qiita~
https://qiita.com/TakahikoKawasaki/items/185d34814eb9f7ac7ef3

***[[OAuth 2.0 Form Post Response Mode]] [#ud5245c1]
***[[JWT Secured Authorization Response Mode for OAuth 2.0 (JARM)]] [#zaf2ec74]

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

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