「Basic認証」は、Webサイトにおける認証方法の1つです。
シンプルで手軽に取り入れやすい反面、セキュリティ面など不安も少なくありません。Basic認証を取り入れる場合、仕組みやデメリットなども含めた基本事項を理解することが大切です。
本稿では「Basic認証とは何か」をテーマに、基本事項を詳しく解説します。Basic認証の仕組みや設定方法も紹介しますので、ぜひ参考にしてください。
- もくじ
1.Basic認証とは
Basic認証とは、「ユーザーID」と「パスワード」を用いたシンプルな認証方式のことです。
ユーザーが指定されたWebページにアクセスを試みた際に、認証を求めるポップアップを表示します。正しい認証情報が送信された場合のみアクセスを許可する仕組みです。
Basic認証の主な目的は、Webページへのアクセスを特定のユーザーに制限することです。あらかじめ許可するユーザーIDとパスワードの組み合わせを定義しておくことで、意図しないユーザーによる不正アクセスを防止できます。
Basic認証は、HTTPプロトコルにもとづく認証方式であり、Web通信における基本的な認証手段の1つです。
2.Basic認証を利用するメリット
WebサイトにBasic認証を取り入れる場合、利用によって得られるメリットを知っておきましょう。Basic認証を利用するメリットは、主に次の2つです。
2-1 手軽に設定できる
Basic認証はシンプルで、手軽に設定できるのが大きなメリットです。
たとえば、WebサーバーがApacheを利用している場合は「.htaccess」と「.htpasswd」の2ファイル(詳細は後述)を作成・設定するだけで、シンプルな認証機能を追加できます。
特別なソフトウェアの導入やプログラミングの知識が不要なため、熟練したエンジニアでなくても取り入れやすいでしょう。短期間でWebサイトへのアクセス制限をかけたい場合に適した認証方法です。
ただし、利用しているWebサーバーソフトウェアによってBasic認証の設定方法は変わってきます。本記事では、広く採用されているApacheを前提として解説していきます。
2-2 Webページ単位で細かく設定できる
Apacheなどを利用しているWebサーバーにおけるBasic認証 であれば、Webページ単位で細かく設定できるメリットもあります。
設定ファイルは各Webページに対応したディレクトリへ個別に配置でき、それぞれに異なる設定を適用可能です。そのため、アクセス制限の必要性や許可したいユーザーをWebページごとに設定でき、柔軟なアクセス制御を実現できます。
3.Basic認証を利用するデメリット
Basic認証は万能というわけではなく、いくつかのデメリットもあります。Basic認証を利用するデメリットは、主に次の2つです。
3-1 セキュリティ面で不安がある
Basic認証は決して万全な認証方法とは言えず、セキュリティ面での不安があります。
Basic認証では、ユーザーIDとパスワードを「Base64」と呼ばれる形式でエンコード(変換)しますが、これは暗号化ではありません。
そのため、「HTTPS」などの暗号化通信を使用しない場合、ユーザーIDやパスワードが盗まれるリスクが高まります。認証情報が第三者に知られると、不正アクセスを許すことになりかねません。
3-2 SEO上の不利益が生じるケースがある
Basic認証を利用する場合、SEO(検索エンジン最適化)の面で不利益が生じるケースがあります。
多くの検索エンジンやSNSは、Webサイトへ「クローラー」を巡回させ、表示順序の決定に必要な情報を収集します。
しかし、WebページにBasic認証が設定されていると、クローラーの情報収集も制限されます。その結果、クローラーが自社のWebサイトを正しく認識できず、検索結果での上位表示が難しくなることも考えられます。
4.Basic認証の仕組み
Basic認証は、ユーザーが利用するブラウザと、Webサイトの中枢であるサーバーの間で情報のやり取りを行う認証方法です。
ここからは、Basic認証で行われる4ステップのやり取りを、時系列順に見ていきましょう。
- ブラウザ:Webページへのアクセス
- サーバー:認証情報の要求
- ブラウザ:認証情報の送信
- サーバー:認証情報の検証
なお、ここでもApacheをWebサーバーに利用している前提で解説していきます。別のWebサーバーソフトウェアを利用している場合は手順が異なるためご注意ください。
① ブラウザ:Webページへのアクセス
ユーザーがWebページへアクセスを試みると、ブラウザはサーバーへリクエスト(要求)を送信します。そのWebページにBasic認証が設定されている場合、ここからBasic認証の手続きが始まります。
② サーバー:認証情報の要求
リクエストを受け取ったサーバーは、設定ファイル(.htaccess)を参照し、Basic認証の設定をチェックします。Basic認証が有効な場合、サーバーは認証情報の入力を求めるレスポンスを返します。具体的には、HTTPのステータスコード401(Unauthorized)や認証方式(Basic認証)などをレスポンス(応答)のヘッダーに含めることが一般的です。ステータスコード401は、必要な認証がまだ済んでいないことを意味します。
③ ブラウザ:認証情報の送信
ブラウザは、サーバーからのレスポンスでBasic認証を要求されると、ユーザーIDとパスワードを入力する認証画面を表示します。認証画面のデザインや仕様はブラウザに依存し、細かいカスタマイズは行えません。ユーザーが認証情報を入力して送信ボタンを押すと、ブラウザはBase64でエンコードした認証情報をリクエストのヘッダーに含め、サーバーへ送信します。
④ サーバー:認証情報の検証
認証情報を含むリクエストを受け取ったサーバーは、ユーザー名とパスワードが正しいか検証します。検証の内容は、設定ファイル(.htpasswd)を参照し、事前に設定された認証情報と照合することです。一致すれば認証成功と判断し、最初にリクエストされたWebページを表示します。認証に失敗した場合は、ステータスコード401を返して再認証を求めます。なお、Apache以外のWebサーバーソフトウェアを用いる場合は.htpasswdファイルを用いないケースもあります。
5.Basic認証の設定方法
ApacheをWebサーバーに利用した場合、Basic認証の設定に用いるのは 「.htaccess」と「.htpasswd」の2ファイルです。ここでは、これら2ファイルの設定方法について、簡単に紹介します。
5-1 .htaccessの設定
「.htaccess」には、Basic認証の基本的な設定情報を記述します。Basic認証を適用したいディレクトリごとに.htaccessを作成し、必要な設定を記述しましょう。Basic認証の要否は、この.htaccessの有無で判断されます。主な設定項目は次のとおりです。
設定項目 | 概要 |
---|---|
AuthType [認証方式] | 認証方式を指定する。Basic認証は"Basic"で良い。 |
AuthName [メッセージ] | 認証画面に表示する任意のメッセージを指定する。 |
AuthUserFile [絶対パス] | .htpasswdファイルの格納場所を絶対パスで指定する。 |
require [認証条件] | アクセス許可の条件を指定する。"valid-user"とすると.htpasswdで指定されたユーザーのみを許可。 |
なお、Apacheで.htaccessによるBasic認証の設定を行うためには、Apacheの大本の設定ファイルも設定が必要です。
具体的には、「AllowOverride」の設定値を「AuthConfig」または「All」とする必要があります。Apacheのインストール直後は「None」に設定されているケースがあるため、この設定も必ず確認しましょう。
5-2 .htpasswdの作成
「.htpasswd」では、Basic認証に用いるユーザーIDとパスワードを管理します。
前述の.htaccessで指定した格納場所に.htpasswdを作成し、適切な認証情報を記述しましょう。Basic認証の成否は、この.htpasswdに登録された内容をもとに判断されます。
各ユーザーの認証情報は、ユーザーID:暗号化されたパスワード、という形式で1行ずつ記述します。パスワードは平文(そのままの文字列)ではなく、暗号化したものを記述してください。暗号化用のツールやコマンドを使用すると良いでしょう。
6.Basic認証以外にも検討したい認証方法
Basic認証は手軽に取り入れられる認証方法ですが、決して万全とは言えません。Basic認証以外にも検討したい認証方法として、次の2つを知っておくと良いでしょう。
6-1 Digest認証
「Digest認証」とはBasic認証の改良版で、パスワードをハッシュ化(一定のルールに沿って変換)して送信する認証方法です。
ハッシュ化されたデータは元に戻せない性質があるため、平文で送信するBasic認証よりはパスワードの悪用リスクが低下します。ただし、Webページごとに認証情報を送信する点はBasic認証と同じのため、セキュリティ上の懸念はゼロではありません。
6-2 トークン認証
「トークン認証」とは、サーバーが発行する一意なトークン(ランダムな文字列)を用いる認証方法です。
ユーザーは、サーバーから受け取ったトークンを入力・送信することで、自身が正当なユーザーであることを証明します。トークンには有効期限が設定されているため、万が一盗まれたとしても被害を少なく抑えられるのが強みです。「Google Authenticator」などの認証アプリも、トークン認証の仕組みを用いています。
まとめ
Basic認証とは、「ユーザーID」と「パスワード」を用いたシンプルな認証方式のことです。
手軽に設定できるメリットがありますが、認証情報が暗号化されないといったデメリットもあります。セキュリティを重視する場合は、ほかの認証方法も検討しましょう。
Basic認証は、公開前・テスト段階のWebサイトで簡易的にアクセス制限をかけたいケースや、社内専用サイトなどユーザーが限定されるケースでは有効な認証手段です。Webサイトに認証機能を実装する際には、今回の内容をぜひ参考にしてください。