WebアプリケーションのオープンソースSSOツールというと有名なのがOpenAMだと思うが、他にも無いのかなと調べて見たところ、『LemonLDAP::NG』なるツールを見かけた。 ドキュメントもかなり揃ってるし、スクリーンショットを見る限り良さげな感じ。
今回は、とりあえずCentOS 7にインストールをして動作させるまでをやってみる(ActiveDirectoryやOpenLDAPとの連携まではまた後日)。 複数台に役割を分散させることができるようなのだが、ここでは一台で全ての役割を担当させている。 ちなみにWebサーバはApacheかNginxを選べるようなのだが、ここではNginxを選択。
1. 事前にインストールが必要なパッケージの導入
まずこちらのドキュメントの通り、以下のコマンドで事前にインストールが必要になるパッケージを導入する。 この時点でNginxについてもインストールしてしまう。
yum install -y epel-release
yum install -y perl-Apache-Session perl-LDAP perl-XML-SAX perl-XML-NamespaceSupport perl-HTML-Template perl-Regexp-Assemble perl-Regexp-Common perl-Error perl-IPC-ShareLite perl-Cache-Cache perl-FreezeThaw perl-XML-Simple perl-version perl-CGI-Session perl-DBD-Pg perl-XML-LibXML-Common perl-BSD-Resource perl-XML-LibXML perl-Crypt-Rijndael perl-IO-String perl-XML-LibXSLT perl-SOAP-Lite perl-Config-IniFiles perl-JSON perl-Digest-HMAC perl-Digest-SHA perl-String-Random perl-MIME-Lite perl-Email-Date-Format perl-Crypt-OpenSSL-RSA perl-Crypt-OpenSSL-X509 perl-Clone perl-Authen-SASL perl-Log-Log4perl perl-Unicode-String perl-Net-CIDR-Lite perl-Cache-Memcached perl-Convert-PEM perl-Mouse perl-Plack perl-Authen-Captcha
Nginxについては、「http_auth_request_module」などが読み込まれている必要があるので、Nginxのリポジトリを登録してインストールをする。
cat << "EOF" >> /etc/yum.repos.d/nginx.repo
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=0
enabled=1
EOF
yum install -y nginx
2.『LemonLDAP::NG』のインストール
事前に必要となるパッケージ類のインストールが終わったら、LemonLDAP::NGのインストールを始めよう。
まず以下のコマンドでLemonLDAP::NG用のリポジトリを登録する。
cat << "EOF" >> /etc/yum.repos.d/lemonldap-ng.repo
[lemonldap-ng]
name=LemonLDAP::NG packages
baseurl=https://lemonldap-ng.org/redhat/stable/$releasever/noarch
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-OW2
EOF
リポジトリ登録後、以下のコマンドを実行してLemonLDAP::NGをインストールする。
yum update -y
rpm --import https://lemonldap-ng.org/_media/rpm-gpg-key-ow2
yum install -y lemonldap-ng
インストールが完了したら、ひとまずサンプル名になっているドメイン名をLemonLDAP::NGで使用するドメイン名(以下の例では、lemon.blacknon.local)に置換する。
「/etc/lemonldap-ng/for_etc_hosts」の中を見るとわかるのだが、指定したドメイン名に対し、更にサブドメインとしてauth.*やmanager.*といったドメインが利用されるので、これらも含めてDNSに登録しておくと良いだろう。
sed -i 's/example\.com/lemon.blacknon.local/g' /etc/lemonldap-ng/* /var/lib/lemonldap-ng/conf/lmConf-1.js /var/lib/lemonldap-ng/test/index.pl
echo "127.0.0.1 lemon.blacknon.local" >> /etc/hosts
cat /etc/lemonldap-ng/for_etc_hosts >> /etc/hosts
次に、Nginxとの連携用のパッケージを導入、サービスを起動させる。設定ファイルをシンボリックリンクで配置する。
yum install -y lemonldap-ng-fastcgi-server
systemctl enable llng-fastcgi-server
systemctl start llng-fastcgi-server
設定ファイルのシンボリックリンクを配置する。
ln -s /etc/lemonldap-ng/handler-nginx.conf /etc/nginx/conf.d/
ln -s /etc/lemonldap-ng/manager-nginx.conf /etc/nginx/conf.d/
ln -s /etc/lemonldap-ng/portal-nginx.conf /etc/nginx/conf.d/
ln -s /etc/lemonldap-ng/test-nginx.conf /etc/nginx/conf.d/
3. 管理画面にアクセスする
本来であれば、この後ActiveDirectoryやLDAPサーバなどとの連携設定を行う必要があるのだが、ひとまず今の時点でもブラウザからアクセスくらいはできる。 今回はとりあえずそこまでで一区切りとするので、以下のコマンドを実行してNginxを起動する。
systemctl start nginx
ブラウザから「http://auth.lemon.blacknon.local」にアクセスすると、ログイン画面が表示される。
デフォルトで利用できるユーザが幾つかあるので、とりあえずそちらを利用してログインしてみよう。 次回以降、LDAP連携等を行ってのテストを行おう(気が向けば)。