Basic認証

Basic認証とは



Basic認証(ベーシックにんしょう)は、HTTPプロトコルで定義されている認証方式の一つです。基本認証とも呼ばれます。
WebサイトやWebサービスへのアクセス制御に用いられ、ユーザーがリソースにアクセスする際に、ユーザー名とパスワードによる認証を要求します。

Basic認証の仕組み



Basic認証では、ユーザー名とパスワードをコロン「:」で連結し、Base64という方式でエンコードしてHTTPヘッダーに含めて送信します。
具体的には、以下のような流れで認証が行われます。

1. クライアントのリクエスト: クライアントが認証を必要とするリソース(ページなど)をサーバーにリクエストします。
2. サーバーの応答: サーバーは、そのリソースへのアクセスに認証が必要であることを示す「401 Unauthorized」というHTTPステータスコードと、認証方式(Basic認証)や認証領域(realm)をクライアントに返します。
3. クライアントによる認証情報の提示: クライアントは、受け取った認証領域の情報をユーザーに提示し、ユーザー名とパスワードの入力を促します。
4. 認証情報の送信: ユーザーが入力したユーザー名とパスワードBase64エンコードし、HTTPヘッダーに含めて、再度サーバーにリクエストを送信します。
5. サーバーの応答: サーバーは、送信された認証情報を検証し、認証に成功した場合はリソースをクライアントに返します。認証に失敗した場合は、再度「401 Unauthorized」を返します。

Basic認証の例



以下に、認証が成功した場合のHTTPリクエストとレスポンスの例を示します。

1. 認証を伴わないリクエスト


GET /index.html HTTP/1.1
Host: example.com


2. 認証が必要であることを示すサーバーのレスポンス


HTTP/1.1 401 Unauthorized
WWW-Authenticate: Basic realm="My Realm"


3. クライアントによる提示、およびユーザーによる入力
(通信は行われません)

4. 認証を伴うリクエスト (ユーザー名 "root", パスワード "password")


GET /index.html HTTP/1.1
Host: example.com
Authorization: Basic cm9vdDpwYXNzd29yZA==


- `cm9vdDpwYXNzd29yZA==`は、`root:password`をBase64でエンコードしたものです。

5. サーバーのレスポンス


HTTP/1.1 200 OK
...(リソースの内容)


Basic認証の課題



Basic認証は、ユーザー名とパスワードBase64でエンコードするだけで暗号化は行わないため、盗聴によって容易に認証情報が漏洩する危険性があります。
また、中間者攻撃によって、認証情報を改ざんされる可能性もあります。
そのため、Basic認証を使用する際は、HTTPSなどの暗号化通信と組み合わせて利用することが強く推奨されます。

Digest認証



Basic認証の脆弱性を改善するために、Digest認証というより安全な認証方式も存在します。
Digest認証では、ユーザー名とパスワードをハッシュ化して送信することで、盗聴による漏洩のリスクを低減しています。

関連事項



  • - HTTP[[認証]]: HTTPプロトコルで定義されている認証方式全般を指します。
  • - Base64: データをテキスト形式で表現するためのエンコード方式です。
  • - Digest認証: Basic認証の課題を解決するために開発された認証方式です。

参考資料




旧規定


もう一度検索

【記事の利用について】

タイトルと記事文章は、記事のあるページにリンクを張っていただければ、無料で利用できます。
※画像は、利用できませんのでご注意ください。

【リンクついて】

リンクフリーです。