Basic認証
Basic認証は、ユーザー名とパスワードをコロン(:
)で連結して送信するシンプルな認証方式です。curl
では -u オプションで簡単に指定できます。
# ユーザー名とパスワードを指定してリクエスト
curl -u daniel:secret https://api.example.com/secure/data
この方式は認証情報が平文に近い形で送信されるため、必ずHTTPS通信と組み合わせて使用する必要があります。
Bearer Token / APIキー認証
現代のAPIで広く使われているのが、トークンやAPIキーをHTTPヘッダーに含めて送信する方法です。-H オプションでAuthorization
ヘッダーや、サービスが指定するカスタムヘッダーを追加します。
Bearer Tokenは、OAuth 2.0などで利用される一般的な形式です。
# Bearer TokenをAuthorizationヘッダーで送信
curl -H "Authorization: Bearer YOUR_TOKEN" https://api.example.com/data
サービスによっては、APIキーをx-api-key
のような独自のヘッダーで要求する場合もあります。
# カスタムヘッダーでAPIキーを送信
curl -H "x-api-key: YOUR_API_KEY" https://api.example.com/data
Cookieを使ったセッション管理
ログイン後の状態を維持するために、サーバーとクライアント間でCookieをやり取りする方法です。curl
では、サーバーから受け取ったCookieをファイルに保存し、次のリクエストでそのファイルを読み込んで送信できます。
Cookieをファイルに保存する
ログインエンドポイントにPOSTリクエストを送り、レスポンスのCookieをcookies.txt
に保存します。
# ログインしてセッションCookieを保存
curl -c cookies.txt -d "username=user&password=pass" https://example.com/login
ファイルからCookieを送信する
保存したcookies.txt
を-b
オプションで指定し、ログインが必要なページにアクセスします。
# Cookieを送信してマイページにアクセス
curl -b cookies.txt https://example.com/dashboard
セキュリティ上の注意点
パスワードやAPIキーをコマンドラインに直接入力すると、シェルの履歴ファイル(例: .bash_history
)に機密情報が残ってしまい、危険です。
悪い例:
# パスワードが履歴に残ってしまう
curl -u user:MyPassword123 https://api.example.com
対策として、環境変数に機密情報をセットし、コマンドではその変数を参照する方法が安全です。
良い例:
# 1. 環境変数にトークンをセット
export API_TOKEN="your-secret-token-here"
# 2. 環境変数を参照してcurlを実行
curl -H "Authorization: Bearer $API_TOKEN" https://api.example.com/data
この方法なら、スクリプト内に機密情報を直接記述することなく、安全にcurl
を利用できます。