mod_auth_openidc をインストール

# Ubuntu22.04に mod_auth_openidc をインストール


WindowsのOracleVM VirtualBoxの中にUbuntu22.04を入れて、apacheとmod_auth_openidcを入れていきます。

ubuntuはserver版を使いました。検索すれば、インストール方法は出てくるので省略します。
ubuntuのインストール後、タイムゾーンの設定(Asia/Tokyo)や、viのインストール、telnetdやvsftpdのインストールをしました。
このあたりはお好みで、どうぞ。

apacheから順にインストールしていきます。
以下の作業は sudo su - して rootで行っています

# Apache

#apt install apache2

#apache2ctl -t
設定ファイルのエラーチェックができるのですが、以下のようなワーニングが出ています。

```
AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1. Set the 'ServerName' directive globally to suppress this message
Syntax OK
```

cd /etc/apache2
vi apache2.conf

70行目あたりに以下を追加
 ServerName www.example.com

#apaache2ctl -t
```
Syntax OK
```

ワーニングは、出なくなりました。

# proxy_http をインストール

#a2enmod proxy_http

```
Considering dependency proxy for proxy_http:
Enabling module proxy.
Enabling module proxy_http.
To activate the new configuration, you need to run:
  systemctl restart apache2
```

# 最新版のmod_auth_openidcを入れたい

検索したところ、以下でできるとの事でした。

#wget http://archive.ubuntu.com/ubuntu/pool/main/o/openssl/libssl1.1_1.1.0g-2ubuntu4_amd64.deb

#apt install ./libapache2-mod-auth-openidc_2.4.14.2-1.focal_amd64.deb

Depends: libssl1.1 (>= 1.1.0) but it is not installable
と表示されてしまいました。
しかもインストールした場所が悪かったのか
focal_amd64.deb  couldn't be accesses by user '_apt' (13:Permission denied)


と表示されました。

cat /etc/passwd

とすると、たしかに _apt というユーザが存在します

```
_apt:x:100:65534::/nonexistent:/usr/sbin/nologin
```

こいつが、アクセスできるフォルダーを作ります。
私は、/homeの下に _apt を作成しました。

```
# mkdir _apt
# chown 100:65534 _apt

# ls -al
drwxr-xr-x  2 _apt  nogroup 4096 Aug  5 16:39 _apt
```



# 先にLIBSSLをバージョンアップします。

cd /home/_apt してから

wget http://archive.ubuntu.com/ubuntu/pool/main/o/openssl/libssl1.1_1.1.0g-2ubuntu4_amd64.deb

systemctl stop apache2


dpkg -i libssl1.1_1.1.0g-2ubuntu4_amd64.deb

```
(Reading database ... 83005 files and directories currently installed.)
Preparing to unpack libssl1.1_1.1.0g-2ubuntu4_amd64.deb ...
Unpacking libssl1.1:amd64 (1.1.0g-2ubuntu4) ...
Setting up libssl1.1:amd64 (1.1.0g-2ubuntu4) ...
debconf: unable to initialize frontend: Dialog
debconf: (No usable dialog-like program is installed, so the dialog based frontend cannot be used. at /usr/share/perl5/Debconf/FrontEnd/Dialog.pm line 78.)
debconf: falling back to frontend: Readline
Processing triggers for libc-bin (2.35-0ubuntu3.1) ...
```

# いよいよ、mod-auth-openidc  です

ブラウザーで、以下にアクセスする
https://github.com/OpenIDC/mod_auth_openidc/

画面右の方に Releases と書かれており
release 2.4.14.2 Latest とあります。

そのリンクをクリックします。

その下にファイル一覧があるので、適当なのを探します。

cd /home/_apt

wget   https://github.com/OpenIDC/mod_auth_openidc/releases/download/v2.4.14.2/libapache2-mod-auth-openidc_2.4.14.2-1.focal_amd64.deb



不要かもしれませんが、所有者を変更しておきます。

/home/_apt# chown 100:65534 libssl1.1_1.1.0g-2ubuntu4_amd64.deb


```
ls -al

-rw-r--r-- 1 _apt nogroup 1128092 Apr 26  2018 libssl1.1_1.1.0g-2ubuntu4_amd64.deb
```

 apt install ./libapache2-mod-auth-openidc_2.4.14.2-1.focal_amd64.deb


必要ならリブートしてください

 systemctl start apache2

systemctl status apache2


設定ファイルのチェックも問題なさそうです

```
/home/_apt# apache2ctl -t
Syntax OK
```

apacheにインストールされているモジュールの確認をします。

 apache2ctl -M | sort

``` kekka
 auth_openidc_module (shared)
 proxy_http_module (shared)
 proxy_module (shared)
```

# 設定ファイルを新規作成

cd /etc/apache2/sites-enabled

ls -al

```
lrwxrwxrwx 1 root root   35 Jul 29 07:47 000-default.conf -> ../sites-available/000-default.conf
```

ここに　reverse-proxy.conf　というファイルを新規作成します。
名前は、confで終わっていれば、なんでもよいみたいです。

複数のファイルを置いて、複数のリバースプロキシーを作成することもできます。

```reverse-proxy.conf
Listen 18080
<VirtualHost *:18080>
 ServerName  www.local18080.com
 DocumentRoot /var/www/html1

# ProxyPass        /empnum_prod  http://192.168.15.216:8080/empnum_prod/
# ProxyPassReverse /empnum_prod  http://192.168.15.216:8080/empnum_prod/

    OIDCResponseType code
    OIDCCryptoPassphrase 12345678901234567890
    OIDCProviderMetadataURL http://[KeyCloakのIP]:8080/auth/realms/Intra1/.well-known/openid-configuration
    OIDCClientID [KeyCloakのレルム]
    OIDCClientSecret  [KeyCloakの画面からコピー]
    OIDCRedirectURI  http://[ubuntuのIP]:18080/empnum_prod/redirect_url1

    <Location /empnum_prod>
        AuthType openid-connect
        Require valid-user
        ProxyPass        http://192.168.15.63:8080/empnum_prod
        ProxyPassReverse http://192.168.15.63:8080/empnum_prod
    </Location>
</VirtualHost>

```