「[[マイクロソフト系技術情報 Wiki>http://techinfoofmicrosofttech.osscons.jp/]]」は、「[[Open棟梁Project>https://github.com/OpenTouryoProject/]]」,「[[OSSコンソーシアム .NET開発基盤部会>https://www.osscons.jp/dotNetDevelopmentInfrastructure/]]」によって運営されています。 -戻る --[[OAuth 2.0 拡張]] --[[OpenID Connect]] * 目次 [#hdb80567] #contents *概要 [#a8050399] Redirectエンドポイントへ渡る応答パラメタ群を入れる場所を~ 制御するためのパラメタとして、response_mode=form_post が追加された。~ ([[OpenID Connect]] の登場により、この仕様が OAuth 2.0 に追加された)。 **response_mode [#ec44f72f] -response_mode=query~ とするとクエリー部に応答パラメタ群が入る(code)。 -response_mode=fragment~ とするとフラグメント部に応答パラメタ群が入る(token)。 -response_mode=form_post --とすると200 OK + HTTP POST を自動実行する HTMLに応答パラメタ群が入る。 --codeで使用すると、より安全に、codeをClientのRedirectエンドポイントに送信できる。 **補足 [#s1fa2486] -response_mode=query, =fragmentの仕様は、~ [[OAuth 2.0 Form Post Response Mode]]ではなく、~ [[OAuth 2.0 Multiple Response Type Encoding Practices>#c535d880]]で定義されている。 -なお、セキュリティ・レベルが下がるため、デフォルトが、~ response_mode=fragment・response_mode=form_postなものを、~ response_mode=queryに変更してはいけない(逆はOK)。 *仕様 [#w120fd49] 通常、response_mode=form_postは、~ [[response_type>#c535d880]]=codeで使用するが、以下は、~ [[response_type>#c535d880]]=id_tokenで使用したケース。 -リクエスト(認可エンドポイント) --ヘッダ GET /authorize? response_type=id_token &response_mode=form_post &client_id=some_client &scope=openid &redirect_uri=https%3A%2F%2Fclient.example.org%2Fcallback &state=DcP7csa3hMlvybERqcieLHrRzKBra &nonce=2T1AgaeRTGTMAJyeDMN9IJbgiUG HTTP/1.1 Host: server.example.com -レスポンス(認可エンドポイント) --ヘッダ HTTP/1.1 200 OK Content-Type: text/html;charset=UTF-8 Cache-Control: no-cache, no-store Pragma: no-cache --ボディ <html> <head><title>Submit This Form</title></head> <body onload="javascript:document.forms[0].submit()"> <form method="post" action="https://client.example.org/callback"> <input type="hidden" name="state" value="DcP7csa3hMlvybERqcieLHrRzKBra"/> <input type="hidden" name="id_token" value="eyJhbGciOiJSUzI1NiIsImtpZCI6IjEifQ.eyJzdWIiOiJqb2huIiw iYXVkIjoiZmZzMiIsImp0aSI6ImhwQUI3RDBNbEo0c2YzVFR2cllxUkIiLC Jpc3MiOiJodHRwczpcL1wvbG9jYWxob3N0OjkwMzEiLCJpYXQiOjEzNjM5M DMxMTMsImV4cCI6MTM2MzkwMzcxMywibm9uY2UiOiIyVDFBZ2FlUlRHVE1B SnllRE1OOUlKYmdpVUciLCJhY3IiOiJ1cm46b2FzaXM6bmFtZXM6dGM6U0F NTDoyLjA6YWM6Y2xhc3NlczpQYXNzd29yZCIsImF1dGhfdGltZSI6MTM2Mz kwMDg5NH0.c9emvFayy-YJnO0kxUNQqeAoYu7sjlyulRSNrru1ySZs2qwqq wwq-Qk7LFd3iGYeUWrfjZkmyXeKKs_OtZ2tI2QQqJpcfrpAuiNuEHII-_fk IufbGNT_rfHUcY3tGGKxcvZO9uvgKgX9Vs1v04UaCOUfxRjSVlumE6fWGcq XVEKhtPadj1elk3r4zkoNt9vjUQt9NGdm1OvaZ2ONprCErBbXf1eJb4NW_h nrQ5IKXuNsQ1g9ccT5DMtZSwgDFwsHMDWMPFGax5Lw6ogjwJ4AQDrhzNCFc 0uVAwBBb772-86HpAkGWAKOK-wTC6ErRTcESRdNRe0iKb47XRXaoz5acA"/> </form> </body> </html> -リクエスト(リダイレクト・エンドポイント) --ヘッダ POST /callback HTTP/1.1 Host: client.example.org Content-Type: application/x-www-form-urlencoded --ボディ id_token=eyJhbGciOiJSUzI1NiIsImtpZCI6IjEifQ.eyJzdWIiOiJqb2huIiwiYX VkIjoiZmZzMiIsImp0aSI6ImhwQUI3RDBNbEo0c2YzVFR2cllxUkIiLCJpc 3MiOiJodHRwczpcL1wvbG9jYWxob3N0OjkwMzEiLCJpYXQiOjEzNjM5MDMx MTMsImV4cCI6MTM2MzkwMzcxMywibm9uY2UiOiIyVDFBZ2FlUlRHVE1BSnl lRE1OOUlKYmdpVUciLCJhY3IiOiJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTD oyLjA6YWM6Y2xhc3NlczpQYXNzd29yZCIsImF1dGhfdGltZSI6MTM2MzkwM Dg5NH0.c9emvFayy-YJnO0kxUNQqeAoYu7sjlyulRSNrru1ySZs2qwqqwwq -Qk7LFd3iGYeUWrfjZkmyXeKKs_OtZ2tI2QQqJpcfrpAuiNuEHII-_fkIuf bGNT_rfHUcY3tGGKxcvZO9uvgKgX9Vs1v04UaCOUfxRjSVlumE6fWGcqXVE KhtPadj1elk3r4zkoNt9vjUQt9NGdm1OvaZ2ONprCErBbXf1eJb4NW_hnrQ 5IKXuNsQ1g9ccT5DMtZSwgDFwsHMDWMPFGax5Lw6ogjwJ4AQDrhzNCFc0uV AwBBb772-86HpAkGWAKOK-wTC6ErRTcESRdNRe0iKb47XRXaoz5acA& state=DcP7csa3hMlvybERqcieLHrRzKBra *参考 [#g67d5a16] -Final: OAuth 2.0 Form Post Response Mode~ http://openid.net/specs/oauth-v2-form-post-response-mode-1_0.html -OAuth & OpenID Connect 関連仕様まとめ - Qiita~ https://qiita.com/TakahikoKawasaki/items/185d34814eb9f7ac7ef3 **[[OAuth 2.0 Multiple Response Type Encoding Practices]] [#c535d880] 関連する仕様 ---- Tags: [[:IT国際標準]], [[:認証基盤]], [[:クレームベース認証]], [[:OAuth]]