Apache の mod_rewrite と mod_auth_mellon の設定が被ってリダイレクトがうまくいかなかった。
2022-06-06
こんにちは、0371です。
今回は、Apache の mod_rewrite と mod_auth_mellon の設定が被ってリダイレクトがうまくいかなかったので、それを解決した方法を書いていきます。
誰もがこれで解決できるわけではなさそうですが、念の為。
1週間くらいハマっていましたが、難しく考えすぎていたのかもしれません。
状況
mod_rewriteと、mod_auth_mellonのリダイレクト先が同じになっています。
vhost.conf
<Location />
~~~省略~~~
MellonEndpointPath /sso
MellonDefaultLoginPath /login/login.php
<Directory "var/www/html/foo/bar/login">
AllowOverride None
RewriteEngine on
RewriteBase /login
RewriteRule ^/?/applogin$ applogin.php
</Directory>
idP側の設定(AzureAD)
サインオンURL https://hogemoge.com/login
解決策
対象のサーバーにシンボリックリンクを作成します。
sudo ln -s /var/www/html/foo/bar /var/www/html/foo/bar/login
vhost.confの記述の順番を変えます。
mellonの記述が下になるように記述します。
vhost.conf
<Directory "var/www/html/foo/bar/login">
AllowOverride None
RewriteEngine on
RewriteBase /login
RewriteRule ^/?index/applogin$ index/applogin.php
</Directory>
<Location />
~~~省略~~~
MellonEndpointPath /sso
MellonDefaultLoginPath /login/login.php
</Location>
動作確認
https://hogemoge.com/login/applogin にアクセスし、ログイン画面が出ることを確認します。
その後、アクセスログかidPのweb画面でSAMLの認証がされているかが確認できればOKです。
適当な解説
記述の順番を変えることで、mod_rewriteとmod_auth_mellonの優先順位を変更することができます。
今日の一言
サーバーの設定はむずかしい!!!!