概要
Ansible AWX でSAML SSOしたときにちょっとつまずいたのでメモを残す。
環境
docker を利用して構築しました。バージョンは2.1.0 イメージは
普通に上記イメージを利用して構築すると、AWX のWebUIはコンテナ内で8052ポートで待ち受けます。
ここに443ポートで待ち受けるロードバランサから接続する割と一般的かな?と思う構成です。
つまずいた点
とても単純で、IdP側に設定をして、いざSSOしてみると
https://<awxhost>:8052 instead of https://<awxhost>
とメッセージが出るわけです。
つまり、 443ポートに着信してしかるべきなのに、8052ポートに着信してるからおかしいよと警告が出るんですね。
解決策
これを修正すべく、docker run時に -p<外部公開ポート>:443 とし、コンテナ内のnginxの設定を 443ポートでhttpを待ち受けるように設定しkill -HUP nginx
で設定をリロードすることで、コンテナ内に着信したとき、ちゃんと443ポートが利用され、事なきを得る事が出来ました。
中期的にはDockerfileを作成し、上記修正をいれたイメージをビルドして利用することで解決できそうです。
根本的には、ちゃんと原因をつかんで修正することが大事だと思いつつ、時間がないのでそこは手を出せていません。
ちなみになんですが、ポート番号が変になることを承知の上で
awx/nginx.conf at devel · ansible/awx · GitHub X-Forwarded-Port 443
が設定されているのですよね。
この設定をアプリケーション側がちゃんと読んでいないのでは?と疑っております。