ようへいの日々精進XP

よかろうもん

curl で Basic 認証(Authorization ヘッダを利用した場合)

これは

qiita.com

初老丸 Advent Calendar 2017 3 日目になる予定の記事です.

tl;dr

  • ヘッダに付与する認証文字列を Base64エンコードする時にハマったのでメモ

curl で Basic 認証を利用する場合

これは皆さんご存知の書き方.

curl --basic -u $username:$password https://api.example.com/api/sample.json -H "accept: application/json"

Authorization ヘッダ を利用する場合

敢えて前述のオプションを使わずに, リクエストヘッダに Authorization を付与してリクエストする.

curl https://api.example.com/api/sample.json \
  -H "accept: application/json" \
  -H "Authorization:Basic $(echo -n $username:$password | openssl base64)

ユーザー名とパスワードを : でくっつけた文字列を Base64エンコードする必要がある。

echo -n $username:$password | openssl base64

echo -n しておかないと意図しない文字列が生成されるので辛かった.

$ echo "foo:bar" | openssl base64
Zm9vOmJhcgo=
$ echo -n "foo:bar" | openssl base64
Zm9vOmJhcg==

RFC で Authorization ヘッダや Basic 認証周りの情報をチェックしてみた

RFC2617 HTTP Authentication: Basic and Digest Access Authentication

Basic 認証でユーザー名とパスワードを : で繋ぐあたりのことが書かれている.

RFC7235 Hypertext Transfer Protocol (HTTP/1.1): Authentication

Authorization ヘッダの仕様が書かれている.

以上

  • メモでした
  • curl を利用する場合, Authorization ヘッダをわざわざ利用することは無いかもしれないけど
  • RFC は英語を読めなくても, ざっと斜め読みするだけでも学ぶことがあるので, これからは出来るだけ読みたいと思う