LoginSignup
11
7

More than 3 years have passed since last update.

Basic認証とDigest認証

Posted at

Basic認証

  • Webサイトの閲覧に使うプロトコル「HTTP」が備える、簡易的なユーザ認証方式。
  • アクセスの制限されたWebページにアクセスしようとすると、Webブラウザでユーザ名とパスワードの入力を求める。
  • Basic認証はファイルやディレクトリ単位でしか制御できない。
  • Base64でエンコードして送信する。
  • 平文でのやり取りなのでセキュアでない。SSLにすれば別。内部システムの認証によく使われる。

HTTP/1.0", includes the specification for a Basic Access
Authentication scheme. This scheme is not considered to be a secure
method of user authentication (unless used in conjunction with some
external secure system such as SSL [5]), as the user name and
password are passed over the network as cleartext.

実装方法

.htaccessを作成

AuthUserFile /app/.htpasswd
AuthType Basic
AuthName "Restricted Access"
Require valid-user

//IPアドレスによる制限もかける場合は以下を記載
Satisfy Any

Order Allow,Deny
Allow from 192.168.36.0/24
  • AuthType : ユーザー認証の方法を指定します。
  • AuthName : ダイアログに表示される文字列を指定します。
  • Require valid-user : 入力したIDとパスワードが合っていれば誰でもアクセスできるという意味。
  • Satisfy Any:IPアドレス制限とBASIC認証のどちらか一方を満たせばアクセスが許可される。
  • Satisfy All:IPアドレス制限とBASIC認証の両方を満たす場合にアクセスが許可される。

.htpasswdを作成

  • ID:username,PASS:hogeとしたいとすると、username:Mtyb8PH67BU9Yというコードを書く。
  • パスワードは以下サイト等を使って作成する。
  • https://www.luft.co.jp/cgi/htpasswd.php

サーバー再起動

sudo service httpd restart

Digest認証

  • クライアントでユーザー名, パスワード, ランダムな文字列をMD5でハッシュ化し, サーバーに送信する. サーバー側でもハッシュ値を計算し, クライアントから送信されたハッシュ値と合致するかを検証する。
  • ハッシュ値を送信するため, パスワードを平文で送らないという点でBasic認証に比べて盗聴に耐性がある。
  • MD5なので強度はそこまで強くない。

実装方法

パスワードファイルの作成

htdigest -c passwdfile realm username
  • -c : パスワードファイルを作成する。

  • passwordfile : 任意のパスワードファイル名

  • realm : httpd.conf内の「Auth Name」と同様のものを指定する。

  • username : ユーザー名

パスワードの設定

Adding password for user in realm Digest Auth.
New password: 

httpd.confに追記

<Directory  "/var/www/html/">
    AuthType Digest
    AuthName "XXX Zone"
    AuthUserFile "/path/to/documentroot/.htdigest"
    Require valid-user
</Directory>
  • AuthName: 領域名を定義する。領域名が同じならば、画面が変わっても認証されたことになり認証画面は表示されない。
  • AuthName : httpd.conf内の「Auth Name」と同様のものを指定する。
  • AuthUserFile: パスワードファイルの場所をフルパスで指定する。
  • Require valid-user: 入力したIDとパスワードが合っていれば誰でもアクセスできるという意味。

サーバー再起動

sudo service httpd restart
11
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
11
7