XAMPP環境でApache2を動かし、Basic認証とDigest認証が有効なwebページを作る

# はじめに
組み込み向けボードで動くRTOS上のhttpクライアントの機能をもつサンプルプログラムのテストのため、検証環境としてwebサーバを立てる必要があったのでその時の環境構築手順を記録しておきます。

#環境
* Ubuntu 20.04
* XAMPP 7.4.6-0

では具体的な手順を説明していきます。

# Ubuntu 20.04にXAMPP 7.4.6-0をインストール
[Ubuntu 20.04にXAMPP 7.4.6-0をインストールする方法](https://qiita.com/louis_c_novel/items/546481d48fa224b142df)を参考にしながら、インストーラ[xampp-linux-x64-7.4.6-0-installer.run](https://www.apachefriends.org/xampp-files/7.4.6/xampp-linux-x64-7.4.6-0-installer.run)をダウンロードし、実行しXAMPPをインストールしてください。
### [上記の参考ページに対する私なりの補足]
* 11項目目「XAMPPを起動」にて、「Manage Server」タブから「Start All」をクリックする方法もあり。
* 12項目目「セキュリティの設定をする」は英語が簡単なのでちゃんと読んで設定してください。

# basic認証が有効なページを作成する
### .htaccessファイルの作成
まず、ドキュメントルート/opt/lampp/htdocs以下にbasic_authというディレクトリを作成してください。このbasic_authディレクトリ内でbasic認証を有効にする設定を行っていきます。

まず、basic_authに以下の内容で「.htaccess」というファイルを作成します。

```
<Files ~ “^\.(htaccess|htpasswd)$”>
Deny from all
</Files>
AuthType Basic
AuthUserFile /opt/lampp/htdocs/basic_auth/.htpasswd
AuthName “IDとパスワードを入力してください”
AuthType Basic
require valid-user
```
AuthUserFile には認証を許可するユーザ名パスワードの組が記載されている.htpasswd(この後作成する)の正確なパスを記載してください。

### .htpasswdファイルの作成
次に同じbasic_authディレクトリ内に以下の内容で.htpasswdファイルを作成します。

```
user:wulztBCiKx4Fw
```

これは「ユーザ名:パスワード」という形式になっています。
このユーザ名とパスワードの組は[こちらのサイト](https://www.luft.co.jp/cgi/htpasswd.php)で生成してください

### index.phpファイルの作成
次に認証後に表示させる簡単なページをbasic_auth内に作成しindex.phpとします。

```index.html
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Basic Auth Check</title>
</head>
<body>
    basic認証成功．
</body>
</html>
```

### ブラウザで確認
最後に<b>Apache Web Server を再起動</b>したら http://localhost/basic_auth/ にアクセスしてみましょう。
下の画像のようにユーザ名とパスワードの入力を求められます。
![2021_11_21_01.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1548368/898fbcce-f78f-1f7c-286a-93fbd4c98e12.jpeg)

.htpasswdに登録したユーザ名とパスワードを入力(<b>ここで入力するときはもちろん平文</b>)すると以下のようにページが表示されます。
![2021_11_21_02.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1548368/24ae7e29-e17b-03b7-3daf-ddae6c494b2c.jpeg)

# digest認証が有効なページを作成する

### .htaccessファイルの作成
まずbasic認証の時と同様に、digest認証を有効にしたいディレクトリ内に.htaccessファイルを作成します。
今回は/opt/lampp/htdocs以下のdigest_authというディレクトリとします。

```
AuthType Digest
AuthName "This site is protected."
AuthUserFile /opt/lampp/htdocs/web-dev/digest_auth/.htdigest
Require valid-user
```
AuthName には以降で.htdigestファイルを生成するときに指定するレルムを記載します。
AuthUserFileには認証を許可するユーザ名パスワードの組が記載されている.htdigestの正確なパスを記載してください。

### .htdigestファイルの作成
次にパスワードファイル.htdigestを作成します。digest_authディレクトリで以下のコマンドを実行してください

```bash
htdigest -c /opt/lampp/htdocs/digest_auth/.htdigest "This site is protected." user
```

上を実行するとパスワードの設定を求められるのでdigest認証時に入力するパスワードを設定してください。

### index.phpの作成
次に認証後に表示させる簡単なページをdigest_auth内に作成しindex.phpとします。
basic認証の際に示したindex.phpのbody内を「digest認証成功」にするだけでよいでしょう。

### ブラウザで確認
最後に<b>Apache Web Server を再起動</b>したら http://localhost/digest_auth/ にアクセスしてみましょう。
下の画像のようにユーザ名とパスワードの入力を求められます。
![2021_11_21_03.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1548368/7e77c5ca-8eb9-48f5-39ff-3348a91236e2.jpeg)

.htdigestに登録したユーザ名とパスワードを入力(<b>ここで入力するときはもちろん平文</b>)すると以下のようにページが表示されます。
![2021_11_21_04.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1548368/bda2138a-e945-ea17-6502-f27a8e5c9eb2.jpeg)

# おわり
このように素早く環境を作ることができます。
参考にしていただければ幸いです。

# 参考
* [.htaccess による認証用　パスワード暗号化ツール](https://www.luft.co.jp/cgi/htpasswd.php)
* [.htaccessファイルの作成・記述方法](https://digital-marketing.jp/creative/what-is-htaccess/#htaccess-2)
* [htaccessによるDigest認証](https://w.atwiki.jp/sanosoft/pages/48.html)