有关将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とほぼ同じなので割愛

请参阅
请参考以上内容

非常感谢。

广告
将在 10 秒后关闭
bannerAds