マイクロソフト系技術情報 Wiki」は、「Open棟梁Project」,「OSSコンソーシアム .NET開発基盤部会」によって運営されています。

目次

概要

Redirectエンドポイントへ渡る応答パラメタ群を入れる場所を
制御するためのパラメタとして、response_mode=form_post が追加された。
OpenID Connect の登場により、この仕様が OAuth 2.0 に追加された)。

response_mode

  • response_mode=query
    とするとクエリー部に応答パラメタ群が入る(code)。
  • response_mode=fragment
    とするとフラグメント部に応答パラメタ群が入る(token)。
  • response_mode=form_post
    • とすると200 OK + HTTP POST を自動実行する HTMLに応答パラメタ群が入る。
    • codeで使用すると、より安全に、codeをClientのRedirectエンドポイントに送信できる。

補足

  • なお、セキュリティ・レベルが下がるため、デフォルトが、
    response_mode=fragment・response_mode=form_postなものを、
    response_mode=queryに変更してはいけない(逆はOK)。

仕様

通常は、response_type=codeで使用するが、
以下は、response_type=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

参考

OAuth 2.0 Multiple Response Type Encoding Practices

関連する仕様


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


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2018-10-10 (水) 18:18:33 (8d)