[11] [DFN[[RUBYB[[[署名基底文字列]]]@en[signature base string]]]]は、
[[OAuth 1.0]] で[[署名]]される対象となる[[文字列]]で、
[[要求メソッド]]、[[対象URL]]、[[要求引数]]が含まれています。

* 仕様書

[REFS[
- [1] [CITE@en[RFC 5849 - The OAuth 1.0 Protocol]] ([TIME[2014-12-28 14:19:21 +09:00]] 版) <http://tools.ietf.org/html/rfc5849#section-3.4.1>
]REFS]

* 定義

[2] [DFN[[RUBYB[[[署名基底文字列]]]@en[signature base string]]]]は、
[[HTTP要求]]から次の[[文字列]]を連結したものです [SRC[>>1]]。
[FIG(list)[
= [3] [[要求メソッド]]を[[大文字]]にし、[[OAuth 1.0パーセント符号化]]したもの
= [4] [CODE[[[&]]]]
= [5] [[基底文字列URL]]を[[OAuth 1.0パーセント符号化]]したもの
= [6] [CODE[[[&]]]]
= [7] [[要求引数]]を[[正規化]]し、[[OAuth 1.0パーセント符号化]]したもの
]FIG]

;; [10] [[要求メソッド]]は[[大文字・小文字不区別]]ではありませんが、
一律で[[大文字]]化するようです。

;; [12] [[基底文字列URL]]に[[パーセント符号化]]が含まれていることがありますし、
[[要求引数]]も既に[[パーセント符号化]]したものですが、ここで更にもう一度[[パーセント符号化]]されます。

* 文脈

[9] [[署名基底文字列]]は、 [CODE(HTTP)@en[[[HMAC-SHA1]]]] や [CODE(HTTP)@en[[[RSA-SHA1]]]]
の[[署名]]の計算に用います。

* 例

[EG[
[8] [[HTTP要求]]
[PRE(HTTP code)[
POST /request?b5=%3D%253D&a3=a&c%40=&a2=r%20b HTTP/1.1
Host: example.com
Content-Type: application/x-www-form-urlencoded
Authorization: OAuth realm="Example",
               oauth_consumer_key="9djdj82h48djs9d2",
               oauth_token="kkk9d7dh3k39sjv7",
               oauth_signature_method="HMAC-SHA1",
               oauth_timestamp="137131201",
               oauth_nonce="7d8f3e4a",
               oauth_signature="bYT5CMsGcbgUdFHObYMEfcx6bsw%3D"

c2&a3=2+q
]PRE]
... の[[署名基底文字列]]は、
[PRE(HTTP code)[
POST&http%3A%2F%2Fexample.com%2Frequest&a2%3Dr%2520b%26a3%3D2%2520q%26a3%3Da%26b5%3D%253D%25253D%26c%2540%3D%26c2%3D%26oauth_consumer_key%3D9djdj82h48djs9d2%26oauth_nonce%3D7d8f3e4a%26oauth_signature_method%3DHMAC-SHA1%26oauth_timestamp%3D137131201%26oauth_token%3Dkkk9d7dh3k39sjv7
]PRE]
... です [SRC[>>1]]。
]EG]
