【curl】認証とセッション管理、APIキー・トークン・Cookieの扱い方

【curl】認証とセッション管理、APIキー・トークン・Cookieの扱い方

多くのAPIやWebサービスでは、リクエスト時に認証情報が必要になります。ここでは`curl`で主要な認証方式を扱う方法と、Cookieを使ったセッション管理の基本を整理します。

curl #セキュリティ#curl#備忘録

【curl】認証とセッション管理、APIキー・トークン・Cookieの扱い方

サムネイル

多くのAPIやWebサービスでは、リクエスト時に認証情報が必要になります。ここでは`curl`で主要な認証方式を扱う方法と、Cookieを使ったセッション管理の基本を整理します。

更新日: 7/24/2025

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をやり取りする方法です。curlでは、サーバーから受け取ったCookieをファイルに保存し、次のリクエストでそのファイルを読み込んで送信できます。

ログインエンドポイントにPOSTリクエストを送り、レスポンスのCookieをcookies.txtに保存します。

# ログインしてセッションCookieを保存
curl -c cookies.txt -d "username=user&password=pass" https://example.com/login

保存した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を利用できます。

検索

検索条件に一致する記事が見つかりませんでした