【べーしっくにんしょう】

Basic認証 とは?

💡 ユーザー名とパスワードを送るだけのシンプル認証
📌 このページのポイント
Basic認証の流れ ブラウザ (クライアント) サーバー (認証チェック) GET /secret リクエスト 401 Unauthorized Authorization: Basic dXNlcjpwYXNz 200 OK コンテンツ返却 ※ Base64は暗号化ではないため、必ずHTTPSと併用すること
Basic認証のイメージ
ひよこ ひよこ

Basic認証ってどういう仕組みなの?

ペンギン先生 ペンギン先生

すごくシンプルだよ。ユーザー名とパスワードを『:』でつなげて、Base64でエンコードして、HTTPリクエストのAuthorizationヘッダに入れて送るだけなんだ。サーバー側はそれをデコードして検証するよ。

ひよこ ひよこ

Base64でエンコードするなら安全なの?

ペンギン先生 ペンギン先生

ここが重要なポイントで、Base64は暗号化じゃなくて単なるエンコードなんだ。誰でも簡単にデコードできる。だからBasic認証を使うときは必ずHTTPSと組み合わせないと、パスワードが丸見えになっちゃうよ。

ひよこ ひよこ

ブラウザでBasic認証にアクセスすると、ダイアログが出るよね?

ペンギン先生 ペンギン先生

そうそう。サーバーが401ステータスと一緒にWWW-Authenticateヘッダを返すと、ブラウザが自動的にユーザー名・パスワードの入力ダイアログを表示してくれるんだ。この仕組みはHTTPの標準だから特別な実装は不要だよ。

ひよこ ひよこ

今でもBasic認証は使われているの?

ペンギン先生 ペンギン先生

本番サービスのユーザー認証にはあまり使われないけど、開発・ステージング環境のアクセス制限やCI/CDAPI認証なんかでは今でも現役だよ。NginxApacheで数行の設定で有効にできる手軽さが重宝されているんだ。

ひよこ ひよこ

もっと安全な認証方式はあるの?

ペンギン先生 ペンギン先生

OAuthJWTを使ったトークンベースの認証が主流だね。Basic認証と違って、パスワード自体をリクエストごとに送る必要がないし、権限のスコープも細かく制御できるよ。

ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「Basic認証」って出てきたら「IDとパスワードをヘッダに乗せて送るシンプルな認証」と思えればだいたいOK!
📖 おまけ:英語の意味
「Basic Authentication」 = 基本認証
💬 HTTPの仕様で最初に定義された認証方式だから『Basic(基本)』という名前なんだよ
← 用語集にもどる