HTTP Basic認証のAuthorizationヘッダーを作ってみる ― Base64だからHTTPSが重要な理由

ネットワーク・RFCカテゴリを表すパンダのイラスト ネットワーク・RFC

この記事について
この記事は、生成AIを活用した自動生成フローで作成しています。RFC 7617を確認し、実サービスへ接続せずダミー資格情報からBasic Authorizationヘッダーの形だけを観察します。実通信は行っていません。

検証ステータス:📘 RFC 7617確認済み・実通信未確認
情報確認日:2026年10月2日。実在するID・パスワードを使わないでください。

Basic認証ではユーザー名とパスワードが暗号化されて送られると誤解しやすい点に注意が必要です。

ダミー文字列で作る

$credentialText = 'demo-user:demo-password'
$bytes = [Text.Encoding]::UTF8.GetBytes($credentialText)
$encoded = [Convert]::ToBase64String($bytes)
"Authorization: Basic $encoded"

元へ戻せる

[Text.Encoding]::UTF8.GetString([Convert]::FromBase64String($encoded))

元の文字列へ戻せます。Base64は表現形式の変換であり、秘密を守る暗号化ではありません。

なぜHTTPSが重要か

RFC 7617はBasic認証をTLSなどの外部保護なしで使うことを安全とはみなしません。

sequenceDiagram
 participant C as Client
 participant S as Server
 C->>C: user:passwordをBase64化
 C->>S: Authorization: Basic ...
 Note over C,S: HTTPS/TLSが通信路を保護

1か所変える

ユーザー名だけを変え、Base64結果とdecode後の文字列を見ます。

仕事で使うなら

ログへAuthorizationヘッダーを残さないようにします。TLS、資格情報保管、ローテーション、アクセス範囲を別々に確認します。

Base64を自分で戻すと誤解しにくい

Basic認証を理解する最短の方法は、ダミー文字列をencodeした直後に自分でdecodeしてみることです。元のuser:passwordへ戻せるのを目で見ると、「Base64化したからpasswordが保護された」という誤解を避けられます。

実際のHTTP通信では、認証情報を守る役割をBase64へ期待せず、TLSで通信路を保護します。またdebug logへAuthorization headerをそのまま残すと、HTTPSを使っていてもlog側からcredentialが漏れる可能性があります。通信とlogは別々に守る必要があります。

公式情報・一次情報

GitHubサンプル

文書情報

記事タイトル
HTTP Basic認証のAuthorizationヘッダーを作ってみる ― Base64だからHTTPSが重要な理由
作成日
更新日
Source URL
https://papanda925.com/?p=17505

ライセンス: 本記事のうち、当サイトが権利を有する本文・自作図表は、特記なき限り CC BY 4.0 で利用できます。生成AIを活用して作成・編集した内容を含みます。コードについて、別途ライセンス表示またはリンク先GitHubリポジトリのライセンスがある場合は、その条件を優先します。引用・第三者資料・画像・商標等は本ライセンスの対象外です。 利用ポリシー

タイトルとURLをコピーしました