search
LoginSignup
7

More than 1 year has passed since last update.

posted at

Basic認証とDigest認証

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

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
What you can do with signing up
7