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

Basic認証 とは?

最終更新:
💡 ユーザー名とパスワードを送るだけのシンプル認証

HTTPの標準的な認証方式の一つ。ユーザー名とパスワードをBase64で表し、Authorizationヘッダーに入れて送信する。Base64自体には暗号化の効果はない。

📌 このページのポイント
認証の要求に、IDとパスワードで応答クライアントサーバー1 リクエスト2 401 + 認証の要求WWW-Authenticate3 Basic認証情報を送る4 確認できたら応答HTTPSなどで、通信を保護する
HTTPの要求と応答を左右の通信相手に接続した例。2はWWW-AuthenticateでBasicを要求し、3はAuthorizationヘッダーで認証情報を送ります。Base64は暗号化ではありません。
ひよこ ひよこ
Basic認証ってどういう仕組みなの?
ペンギン先生 ペンギン先生
ユーザー名とパスワードを「:」でつなぎ、Base64で表して、HTTPリクエストのAuthorizationヘッダーに入れるよ。例えばuser:passなら、Authorization: Basic dXNlcjpwYXNzとなる。サーバーが受け取った認証情報を確認するんだ
ひよこ ひよこ
Base64にするなら安全なの?
ペンギン先生 ペンギン先生
Base64は表し方を変えるだけで、暗号化ではないよ。元の情報に戻せるので、HTTPSなどで通信を保護する必要がある。HTTPSを使っても、弱いパスワードやサーバー側の管理まで解決するわけではないね
ひよこ ひよこ
サーバーはどうやって認証を要求するの?
ペンギン先生 ペンギン先生
401応答のWWW-AuthenticateヘッダーでBasicとrealmを指定するよ。realmは認証の対象範囲を示す名前だね。クライアントが認証情報を付けて再送し、サーバーが確認する。画面の表示方法はクライアントによるんだ
ひよこ ひよこ
サーバー側には何が必要?
ペンギン先生 ペンギン先生
ヘッダーを返すだけでなく、受け取ったユーザー名とパスワードを確認して、アクセスを許可するか決める処理が必要だよ。Webサーバーやアプリが持つ認証機能を使う場合も、認証情報と通信の保護を設定するんだ
ひよこ ひよこ
OAuthやJWTも同じ種類なの?
ペンギン先生 ペンギン先生
役割が違うよ。OAuth 2.0は、利用者の代わりなどに限られたアクセスを許可する仕組み。JWTは、情報をコンパクトに表すトークンの形式だね。どちらも名前だけでBasic認証より安全と決められるものではなく、目的と実装に合わせて考えるんだ
ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「Basic認証」って出てきたら「IDとパスワードをヘッダーに入れて送るHTTPの認証」と思えばだいたいOK!
📖 おまけ:英語の意味
「Basic Authentication」 = 基本認証
💬 Basicは基本的な、Authenticationは認証という意味だよ。HTTPの認証方式の名前なんだ

参考資料

← 用語集にもどる