これは

集え、初老丸達よ。初老丸達による世界に向けた技術的(又はそれに関連する)な物語を綴るカレンダーです。我こそ初老丸という方、初老丸予備軍の方も奮ってご参加下さい。ジーク・初老丸!

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 は英語を読めなくても, ざっと斜め読みするだけでも学ぶことがあるので, これからは出来るだけ読みたいと思う

元記事はこちら

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