社内で使用するwikiで認証設定をした時の備忘録。今回はhtaccessでのベーシック認証を用いてみました。
ベーシック認証とは
Basic認証(ベーシックにんしょう、Basic Authentication)とは、HTTPで定義される認証方式の一つ。基本認証と呼ばれることも。
簡単に書くと「サイトにアクセスした際にIDとパスワードの入力が求められ、合致するとページにアクセスできるようになる」というイメージでしょうか。通信の流れについても引用させていただくと
典型的なBasic認証におけるHTTPクライアントとHTTPサーバの間の通信を紹介する。 だいたいの流れは以下のようになる。
1.クライアントは認証が必要なページをリクエストする。しかし、通常ここではユーザ名とパスワードを送っていない。なぜならばクライアントはそのページが認証を必要とするか否かを知らないためである。
2.サーバは401レスポンスコードを返し、認証領域 (authentication realm) や認証方式 (Basic認証) に関する情報をクライアントに知らせる。
3.それを受けたクライアントは、認証領域(通常は、アクセスしているコンピュータやシステムの簡単な説明)をユーザに提示して、ユーザ名とパスワードの入力を求める。ユーザはここでキャンセルすることもできる。
4.ユーザによりユーザ名とパスワードが入力されると、クライアントはリクエストに認証ヘッダを追加して再度送信する。
5.認証に成功すると、サーバは認証の必要なページのリクエストを処理する。一方、ユーザ名やパスワードが間違っていた時には、サーバは再び401レスポンスコードを返す。それによりクライアントは再びユーザにユーザ名とパスワードの入力を求める。
認証部分の設定をhtaccessで行います。
htaccessとは
.htaccess(ドットエイチティーアクセス)とは、Apacheを用いたWebサーバにおいて、ディレクトリ単位で設置及び設定を行える設定ファイルである。
Apacheではhttpd.confという設定ファイルでApacheの設定を行うが、Webサーバの要となる設定ファイルであるため、Webサーバの管理者でないと設定を変更することができない。.htaccessはhttpd.confで.htaccessの利用を許可している場合、Webサーバ管理者のみならずウェブサイトの管理者レベルでApacheの一部設定を行えるようにしたものである。
引用部分にもあるように、ウェブサイトの管理者レベルで設定を行えるのが特徴といっても過言じゃないですね。ただ、サーバーによってはApacheの設定確認が必要なものもあったり、レンタルサーバーによってはうまく機能しないこともあったりしますので、そのあたりの確認も忘れずに行いたいところです。
htaccessファイルを作成する
.htaccessファイルは、以下のように書きます。
AuthType Basic AuthUserfile /(フルパス)/.htpasswd AuthName "Please input ID and password" require valid-user
今回はベーシック認証なので「AuthType Basic」
idやパスワードを記述した.htpasswdファイルを用意します。その置き場所を「AuthUserfile」で指定しておきます
「AuthName」でID、パスワードを入力する際に表示される文章を書きます。半角英数字が無難
最後にIDとパスワードが正しければすべてのユーザーがアクセスできるようにするために「require valid-user」と書きます
htpasswdを作成する
書き方は
ID:エンコードしたパスワード
とします。パスワードをエンコードしてくれるサイトはいろいろとあります。こことか。
作成したふたつのファイルをアップロードする
作成したファイルをアップロードします。アップロードしたファイルはそれぞれ「.htaccess」「.htpasswd」というファイル名にして、パーミッションを604(サーバーによっては644とかもあるっぽいです)にします。
まとめ
今回は備忘録もかねてなので淡泊に終了しますが、もちろんこれにプラスしてhtファイル自体にアクセスできないような記述を追加したり、特定のIP以外は弾くようにしたりして、アクセス制限を強固に設定したりもできます。手軽な認証方法なので、試してみてはいかがでしょうか?