Basic認証とは|Apacheでの設置方法3つと注意点3つなど多数紹介

Basic認証とは|Apacheでの設置方法3つと注意点3つなど多数紹介
基本情報技術者試験の試験対策はこちら>>

Apacheエンジニア 案件・求人一覧はこちら

Basic認証とは


Basic認証とは、特定の利用者にのみwebコンテンツを利用してもらうための、最も簡単で基本的な認証方法の1つです。basic認証を設置するには、ApacheというWebサーバの設定ファイルである.htaccessというものを作成して設定する必要があります。今回は初心者向けの設置方法ということで、自力で.htaccessファイルを作成してBasic認証を設置する方法だけではなく、サーバの設定パネルを操作してBasic認証を設置する方法も解説します。

Basic認証の仕組み

具体的には、ユーザーがBasic認証でアクセス制限されたコンテンツにリクエストを送ると、サーバ側は401というエラーを返します。これはユーザーのIDとパスワードの送信を要求するエラーです。ユーザーは、ブラウザに表示されたIDとパスワードの入力フォームに、決められたIDとパスワードを入力してサーバー側へと送信します。すると、サーバー側は保存された情報とID・パスワードを照合してアクセスを許可もしくは拒否するという仕組みです。

Basic認証の脆弱性

Basic認証は、古くから用いられている簡単な方法なので、セキュリティレベルがあまり高くありません。通信途中で第三者に見られてしまう可能性もあります。原因は、認証情報が暗号化やハッシュ化がされていないからです。そのため、Basic認証を暗号化するために、暗号化ツールを使用することをおすすめします。暗号化ツール自体は、無料のWebサービスとしてさまざまなものがネット上に存在します。

Basic認証の活用場面


特定のWebページやファイルにアクセス制限をかけられるBasic認証ですが、具体的にどのような場面で活用することができるのでしょうか。ここではBasic認証の活用場面2つをご紹介します。

特定のメンバーとだけ共有したいとき

Basic認証はセキュリティレベルがあまり高くないですが、特定のメンバーとファイルやページを共有したい場合など、セキュリティに関してはそこまで気にする必要がない場面で利用されます。

関係者のみが閲覧できるようにしたいとき

Basic認証ではIDとパスワードがわからなければページはエラーになり、表示できません。その性質を利用して、公開前のWebサイトなど、クライアントなどの関係者にのみ閲覧できるようにするためにBasic認証を利用するケースがあります。

Basic認証の特徴3つ


Basic認証は他のアクセス制限と比較すると、簡易的な機能を提供するものです。それでは、Basic認証にはどのような特徴があるのでしょうか。

ここではBasic認証の特徴3つをご紹介しますので、ぜひ参考にしてみてください。

1:ブラウザを閉じるまで再認証なしが可能

Basic認証は正しいIDとパスワードによってユーザーが認証に成功した場合、ブラウザを閉じるまでは再認証を行わずにWebページを閲覧することが可能です。そのため、ブラウザを閉じなければ認証なしでいつでも再アクセスを行えます。

2:認証後はユーザー名とパスワードが記憶される

一度認証に成功したブラウザにはIDとパスワードが記録されるため、再度アクセスする際には入力を行わなくてもアクセスすることが可能です。ただしWebブラウザを変えた場合やスマホでのアクセスでは保存されないケースもあります。

3:特定の領域にアクセスを制限できる

Basic認証によってアクセス制限を設定できる範囲はディレクトリ単位となっています。そのため、Basic認証を設定した場合は同じディレクトリの別のURLにアクセスする場合でもIDとパスワードが求められることになります。

ApacheでのBasic認証を設置する方法3つ


本記事では、ApacheというWebサーバの設定ファイルである.htaccessを使った、自力での実装方法について解説します。Apache以外の、さまざまなWebサーバでもBasic認証を活用することは可能です。

1:htaccessが使えるかどうかを調べる

まずは.htaccessファイルが使用可能なレンタルサーバかどうかを調べましょう。有料のレンタルサーバであれば大抵の場合は使用可能です。ほとんどの場合、サーバのヘルプページなどに記載があります。見つからない場合は、サーバの管理会社へ直接連絡をして調べてみることをおすすめします。

なお、有料サーバの場合、自力で.htaccessファイルを作成しなくてもサーバパネルを使ってBasic認証を設置できる場合があります。本記事でもXサーバの設定方法について後述していますので、Xサーバをご利用の方はそちらをご覧ください。

2:.htaccessファイルの作成と記述

次に.htaccessファイルの作成と記述を行います。.htaccessファイルはWebサーバーの内容を設定するためのファイルです。ここでは.htaccessファイルの作成方法と記述内容についてご紹介します。

.htaccessファイルを新規作成する

Basic認証を設定したいディレクトリへ移動したら、メモ帳などのテキストエディタを起動して、新規ファイルの作成を行います。また、文字コードはANSIのまま変更せず、ファイル名は「.htaccess」にしましょう。

.htaccessの記述内容と記述例

先に記述例をご提示します。そのままコピー&ペーストを使用して貼り付けて頂いても構いません。AuthUserFileだけは、正しい位置をフルパスで指定してあげる必要がありますのでご注意ください。

(記述例)AuthType BasicAuthName “ID/PASS”AuthUserFile “/home/www/.htpasswd“require valid-userAuthTypeは、認証方法の宣言です。そのままBasicと入力すれば問題ありません。AuthNameは、認証時に表示される文言を指定する項目です。日本語以外を入力する方が無難であるとされているので、英文字で入力することをおすすめします。

AuthUserFileは、htpasswdがどこに置かれているのかを指定する項目です。指定はフルパスで入力しましょう。requireは.htaccessに記載されたIDのうち認証を求めるユーザーを定義する項目です。こちらもvalid-userをそのまま入力して問題ありません。valid-userと指定すると、すべてのユーザーを対象にできます。

3:.htpasswdファイルの作成と記述

次に.htpasswdファイルの作成と記述を行いましょう。.htpasswdファイルはBasic認証で必要なIDとパスワードを格納するためのファイルです。ここでは.htpasswdファイルの作成方法と記述内容についてご紹介します。

.htpasswdのファイルを新規作成する

先ほど作成した.htaccesファイル内に記述しているパスのディレクトリへ移動して、メモ帳などのテキストエディタで.htpasswdという名前のファイルを新規作成します。

htpasswdの記述内容と注意点

続いて.htpasswdの記述内容をお伝えします。こちらはたった1行で使えるようになります。記述量が少ないので難しくはないでしょう。記述例は以下のようになります。

(記述例)ユーザーIDがadmin、パスワードがtestの場合。admin:test上記のように記述しますが、注意点もあります。そのままパスワードを入力すると第三者に読み取られてしまう危険性があり、サーバーのセキュリティによってBasic認証が機能しなくなる可能性があるという点です。脆弱性については後の章でも解説しています。

対策として、パスワードを暗号化しておくことをおすすめします。暗号化するためのツールは、Google検索で「Basic認証 暗号化」と検索するとたくさん出てきます。そちらを使って暗号化されたパスワードを記述するようにしましょう。

(暗号化した場合の記述例)admin:$apr1$8juKi4oI$6U6yL5yg2mqLBE2AD8SJq1

下記のリンクに暗号化ツールの一例を提示します。出力されたパスワードをそのままコピー&ペーストで貼り付けるだけで使用可能です。また、.htaccessで指定した場所に正しく.htpasswdを設置するようにしましょう。指定したパスと.htpasswdの設置場所が一致していないとBasic認証が機能しません。

Apacheのベーシック認証用パスワード発行フォーム

パスワードを暗号化する

パスワードを暗号化する場合は、Basic認証用に無料でパスワード作成ツールを提供しているサイトがあるため、使いやすそうなものを選ぶと良いでしょう。暗号化したIDとパスワードを.htpasswdファイルに記述したら、保存して完了です。

ApacheでのBasic認証を設置する際の注意点3つ


Basic認証を設定する場合、正しい手順で設定を行ったつもりでもエラーになってしまうことがあります。ここでは最後にApacheでのBasic認証を設置する際の注意点3つをご紹介しますので、ぜひ参考にしてみてください。

1:アップロードを忘れずに行う

.htaccessファイルも.htpasswdファイルも、正しいパスにアップロードしておく必要があります。.htaccessファイルはBasic認証を設定するディレクトリ、.htpasswdファイルは.htaccessに記述したパスの場所にアップロードしましょう。

2:記述の誤りや特殊な記号に注意する

IDやパスワードに特殊な記号を使用している場合、文字コードの問題によって正しく認識されずにエラーが発生するケースがあります。また、記述が誤っていても当然エラーが発生するため、できるだけ記号は避け、正しいログイン情報を入力しましょう。

3:パスワードが暗号化されているか確認する

本記事でもパスワードは暗号化して記述することをご紹介しましたが、パスワードが暗号化されていないと認証されないケースがあります。そのため、Basic認証が上手く行かない場合はパスワードが暗号化された状態で記述できているか確認しましょう。

XサーバでのBasic認証を設置する方法


より初心者向けに、サーバが用意しているサーバパネルを使用した設置方法も解説します。ここでは、幅広く利用されているXサーバで、Basic認証を設置する方法について解説します。Basic認証の設置は、大きく分けて4手順で完了します。

手順としては、①アクセス制限をクリック、②使用するドメイン名を選択する、③アクセス制限をONにする、④アクセス制限のユーザーを設定する、です。

これらの手順は、Xサーバのサーバパネルにログインして操作します。手順①から順番に解説していきます。まずは、サーバパネルの中にある「ホームページ」という項目群の中にある「アクセス制限」ボタンをクリックして下さい。

続いて手順②の解説です。「アクセス制限」をクリックすると、ドメイン名を選択する画面へ移行します。お使いのドメインを選択して次の画面へ移行してください。

手順③の解説です。フォルダ名、現在の状態、アクセス制限、ユーザー設定という項目が表示されています。フォルダ名をクリックし、現在のURLに表示されているアドレスを確認します。アクセス制限をかけたいURLと相違がなければ、アクセス制限のラジオボタンをONにしましょう。フォルダのアイコンに赤い鍵マークが付与されます。

最後の手順④です。アクセス制限をかけたフォルダの「ユーザー設定」をクリックして画面を移行させましょう。移行先の画面で、IDとパスワードを設定します。「確認画面へ進む」のボタンを押すと、入力内容の確認画面が表示されます。内容に問題がなければ「追加する」をクリックします。これでBasic認証の設置は完了です。アクセス制限をかけたページへ実際にアクセスをしてみて、無事Basic認証が反映されていることを確認してみましょう。

Basic認証とはどのような認証なのかを理解して設定しよう


結論としては「.htaccess」と「.htpasswd」を設置することで、初心者でも簡単にアクセス制限をかけられるのがBasic認証です。Xサーバーなどでは、それよりも簡単にサーバパネルを操作して設置することもできます。公開したWebコンテンツを悪用されないようにするためにも、管理画面などにはBasic認証を設置してみましょう。また、Basic認証を設置したページは、Google検索にも登録されなくなりますので、テスト用に作成したコンテンツに設置するのも有効です。本記事を参考に、ぜひ挑戦してみてください。

Apacheエンジニア 案件・求人一覧はこちら

インフラエンジニア専門の転職サイト「FEnetインフラ」

FEnetインフラはサービス開始から10年以上『エンジニアの生涯価値の向上』をミッションに掲げ、多くのエンジニアの就業を支援してきました。

転職をお考えの方は気軽にご登録・ご相談ください。

合わせて読みたい

Apache Sparkを導入するメリットはある?構成要素と活用事例も紹介... hbspt.cta.load(20723875, '98846537-0466-4c76-be2d-021ffd87ac5c', {"useNewLoader":"true","region":"na1"}); Apache Sparkとは? Apache Sparkは、巨大なデータを高...
ApacheとPHPはどういうもの?基本的な構成方法を紹介... hbspt.cta.load(20723875, '98846537-0466-4c76-be2d-021ffd87ac5c', {"useNewLoader":"true","region":"na1"}); ApacheとPHPとは? ApacheとPHPは、どちらもwebサーバーに...
Apacheとは?導入方法とメリットについて解説... hbspt.cta.load(20723875, '98846537-0466-4c76-be2d-021ffd87ac5c', {"useNewLoader":"true","region":"na1"}); Apacheとは? Apache(アパッチ)は、Apache HTTP Se...