マイクロソフト系技術情報 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=form_postの仕様。
  • なお、セキュリティ・レベルが下がるため、デフォルトが、
    response_mode=fragment・response_mode=form_postなものを、
    response_mode=queryに変更してはいけない(逆はOK)。

詳細

通常、response_mode=form_postは、
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

JWT Secured Authorization Response Mode for OAuth 2.0 (JARM)


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


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2019-06-25 (火) 18:28:42 (23d)