有关将OpenAM Web策略代理器应用于Nginx的介绍
首先
这篇文章是关于构建使用OpenAM/OpenIG进行单点登录环境的一系列相关文章中的一部分。
在假设OpenAM已经配置了Apache和IIS代理方式的情况下,我们的目标是引入适用于Nginx的Web策略代理。
这篇文章的意思是什么?
其实,ForgeRock官方只提供了适用于Apache和IIS的Web Policy Agent,而没有公开适用于Nginx的版本。
※听说已经有相关的需求,所以我认为在不久的将来可能会开发此版本。
由於有位開發/公開了能夠使用OpenAM的SDK並用於Nginx的Web Policy Agent以及能夠與之協作的Nginx神聖存在的人,我們在感謝神聖的同時也感激地使用它,並將介紹在未來需求很高的Nginx中安裝Web Policy Agent的方法。由於基本操作與用於Apache的Web Policy Agent相同,因此只解釋明顯不同的操作部分。
假设
-
- 既にOpenAMはインストール済であること
-
- OpenAMがインストールされているサーバはCentOS7.3を想定
-
- OpenAMは無料で手に入る中では最新のv13.0を使用
-
- 同一ホスト内のNginxをSPとする
- 検証目的の構成を行う
环境
-
- サーバOS: CentOS7.3
-
- ホスト名: sso.test.local
-
- IPアドレス: 172.16.1.130
-
- JDK Ver: 1.8.0_111
-
- Tomcat Ver: 8.0.39
- OpenAM Ver: 13.0.0
建立任务
下载和安装 hé
请从以下下载链接中下载所需的体系结构二进制文件:
https://github.com/hamano/nginx-mod-am
基本上就像README文件中所写的那样,老实说这个地方似乎没有必要再写了,只是作为备忘录……
公开的不仅仅是Web Policy Agent,还包含了经过改进以支持其使用的专门的nginx二进制文件。
也就是说,不是将Web Policy Agent安装到通过yum等方式安装的nginx中。
※虽然Apache等类似,但这种情况不同。
因此,首先进行部署、配置,然后将其注册到systemd等等,按照下面一系列的步骤进行。
[root@sso ~]# wget https://www.osstech.co.jp/download/hamano/nginx/nginx_agent_20141119.el7.x86_64.zip
[root@sso ~]# unzip nginx_agent_20141119.el7.x86_64.zip
[root@sso ~]# mv nginx_agent /opt/nginx
[root@sso ~]# useradd nginx
[root@sso ~]# chown nginx:nginx -R /opt/nginx
[root@sso ~]# vim /usr/lib/systemd/system/nginx.service
[Unit]
Description=The nginx HTTP and reverse proxy server
After=network.target remote-fs.target nss-lookup.target
[Service]
User=nginx
Type=forking
PIDFile=/opt/nginx/logs/nginx.pid
# Nginx will fail to start if /run/nginx.pid already exists but has the wrong
# SELinux context. This might happen when running `nginx -t` from the cmdline.
# https://bugzilla.redhat.com/show_bug.cgi?id=1268621
ExecStartPre=sudo /usr/bin/rm -f /opt/nginx/logs/nginx.pid
ExecStartPre=sudo /opt/nginx/bin/nginx -t -c /opt/nginx/conf/nginx.conf
ExecStart=sudo /opt/nginx/bin/nginx -c /opt/nginx/conf/nginx.conf
ExecReload=sudo /bin/kill -s HUP $MAINPID
ExecStop=sudo /bin/kill -s TERM $MAINPID
KillSignal=SIGQUIT
TimeoutStopSec=5
KillMode=process
PrivateTmp=true
WorkingDirectory=/opt/nginx/
[Install]
WantedBy=multi-user.target
[root@sso ~]# systemctl daemon-reload
在80端口上运行需要root权限。因此使用sudo。
如果没有sudo,由于在nginx.service中设置了User=nginx,尝试使用systemctk start nginx也会失败。
如果没有反对以root身份运行,那么可以删除User=nginx行和整个sudo。
此外,在nginx.conf中添加user nginx;的配置, worker process将以nginx用户身份运行。
然而,由于master process是以root身份运行的,如果还想在nginx中运行它,需要保持nginx.service不变,但需要修改sudoers文件。
[root@sso ~]# visudo
# insert
nginx ALL=(root) NOPASSWD:/opt/nginx/bin/*,/usr/bin/rm,/bin/kill
在OpenAM端的配置
因为与 Apache 的 Web Policy Agent 的配置完全相同,所以我将省略它。
归根结底,只需关注连接到来的代理是 Apache 还是 Nginx,对于 OpenAM 来说不需要做出任何不同,因此并没有特别的变化。
代理安装
[root@sso ~]# /opt/nginx/bin/agentadmin.sh
※聞かれる内容は。ApacheのWeb Policy Agentとほぼ同じなので割愛
请参阅
请参考以上内容
非常感谢。