CentOS7.2にOpenAM13.0を導入する

https://marginnotes2.files.wordpress.com/2014/11/fr_am.png


今回はフェデレーション機能を提供するOSSである「OpenAM」をCentOS7.2に導入する手順についての紹介です。
OpenAMは、ForgeRock社が開発を手がけるオープンソースのアクセス管理、フェデレーション·サーバーのプラットフォームです。
パスワード/OTP認証はもちろん、SAML認証やOAuth/OpenIDConncetなどもサポートし、
誰でも簡単にシングルサインオン環境を構築できる製品です。

OpenAMはtomcat等のアプリケーションサーバ上で動くJavaサーブレットアプリです。
導入自体はForgeRock社が提供するOpenAMのモジュール(warファイル)をデプロイするだけで終わってしまいます。
しかし、その他にも色々な設定をしないと使えるようにはなりませんので、そこらへんの解説までしようと思います。

まずは環境情報から

VM情報
仮想化:Oracle VM VirtualBox/Vagrant
OS:CentOS Linux release 7.2.1511 (Core)
CPU:Intel(R) Core(TM) i5-4300M CPU @ 2.60GHz (1 core)
memory:2048GB


上記で述べたようにOpenAMはJavaサーブレットアプリですので、JDKサーブレットコンテナを入れる必要があります。
今回はJDKにはOracle社が提供するJDK1.8と、サーブレットコンテナにはApache Tomcat8.0を使用します。

事前にそれぞれのRPMパッケージをダウンロードしておいてください。

▽JDK1.8
Java SE Development Kit 8 - Downloads

Apache Tomcat8.0
Apache Tomcat® - Apache Tomcat 8 Software Downloads


また、それとは別途でForgeRock社のサイトからOpenAM13.0とOpenDJ3.0をダウンロードしておいてください。
▽OpenAM,OpenDJ
Downloads - BackStage


1. Tomcatインストール
tomcatインストールユーザを作成します
# groupadd tomcat -g 1001
# useradd -s /sbin/nologin -g 1001 -u 1001 tomcat
# id -a tomcat

tomcatのモジュールを解凍して配置します
# unzip apache-tomcat-8.5.6.zip
# echo $?
# mkdir -p /opt/ssoam
# mv -f apache-tomcat-8.5.6 /opt/ssoam/tomcat
# chown -R tomcat:tomcat /opt/ssoam/tomcat
# chmod -R 755 /opt/ssoam/tomcat/bin/
# ls -l /opt/ssoam/tomcat

tomcatを起動します
# /opt/ssoam/tomcat/bin/startup.sh

2. OpenDJインストール
OpenAMのユーザデータストアしてForgeRock社が開発・提供するLDAPサーバであるOpenDJを使用します。
ダウンロードしたzipファイルを展開します。
# cd /root/work/
# unzip OpenDJ-3.0.0.zip
# echo $?

展開後にセットアップコマンドを実行します。
使用するポート番号やパスワード、ルートサフィックス等は任意です。
# cd opendj/
# /root/work/opendj/setup \
--cli \
--baseDN dc=ssoam,dc=com \
--addBaseEntry \
--ldapPort 389 \
--adminConnectorPort 4444 \
--rootUserDN "cn=Manager,dc=ssoam,dc=com" \
--rootUserPassword slapdPassword1 \
--hostName `hostname` \
--no-prompt \
--noPropertiesFile

正常にセットアップできたことを確認します。
# /root/work/opendj/bin/status -D "cn=Manager,dc=ssoam,dc=com" -w slapdPassword1

冗長化構成でレプリケーションする場合は以下を実行してください。
# export HOST_NAME1=host01.local.com
# export HOST_NAME2=host02.local.com

レプリケーションを有効化します。
# /root/work/opendj/bin/dsreplication enable \
--adminUID admin \
--adminPassword slapdPassword1 \
--baseDN dc=ssoam,dc=com \
--host1 ${HOST_NAME1} \
--port1 4444 \
--bindDN1 "cn=Manager,dc=ssoam,dc=com" \
--bindPassword1 slapdPassword1 \
--replicationPort1 8989 \
--host2 ${HOST_NAME2} \
--port2 4444 \
--bindDN2 "cn=Manager,dc=ssoam,dc=com" \
--bindPassword2 slapdPassword1 \
--replicationPort2 8989 \
--trustAll \
--no-prompt
レプリケーションの初期化を実行します。
# /root/work/opendj/bin/dsreplication initialize \
--baseDN "dc=ssoam,dc=com" \
--adminUID admin \
--adminPassword slapdPassword1 \
--hostSource ${HOST_NAME1} \
--portSource 4444 \
--hostDestination ${HOST_NAME2} \
--portDestination 4444 \
--trustAll \
--no-prompt
レプリケーションの状態を確認します。
# /root/work/opendj/bin/dsreplication status \
--adminUID admin \
--adminPassword slapdPassword1 \
--hostname ${HOST_NAME1} \
--port 4444 \
--trustAll \
--no-prompt

3. OpenAMのインストール
OpenAMモジュールのデプロイから初期設定までを行います。
まず、ダウンロードしたwarファイルをデプロイします。
# cp -p /root/work/OpenAM-13.0.0.war /opt/ssoam/tomcat/webapps/ssoam.war

ssoConfiguratorツールを設定します。
# mkdir /opt/ssoam/ssoConfigurator
# cp -p /root/work/openam-configurator-tool.zip /opt/ssoam/ssoConfigurator
# cd /opt/ssoam/ssoConfigurator
# unzip openam-configurator-tool.zip
# cp -p amconfig13/sampleconfiguration idmappingservice-configuration
# vi idmappingservice-configuration

以下は設定例です。
SERVER_URL=http://host01.local.com:8080
DEPLOYMENT_URI=/ssoam
BASE_DIR=/opt/fjsso/tomcat/ssoam
locale=ja_JP
PLATFORM_LOCALE=en_US
AM_ENC_KEY=
ADMIN_PWD=ampassword
AMLDAPUSERPASSWD=password
COOKIE_DOMAIN=.local.com
ACCEPT_LICENSES=true
:
DATA_STORE=embedded
DIRECTORY_SSL=SIMPLE
DIRECTORY_SERVER=host01.local.com
DIRECTORY_PORT=6389
DIRECTORY_ADMIN_PORT=14444
DIRECTORY_JMX_PORT=5789
ROOT_SUFFIX=dc=openam,dc=forgerock,dc=org
DS_DIRMGRDN=cn=Directory Manager
DS_DIRMGRPASSWD=ampassword
:
LB_SITE_NAME=lb
LB_PRIMARY_URL=https://host02.local.com/ssoam/
LB_SESSION_HA_SFO=true

# java -jar /opt/ssoam/ssoConfigurator/amconfig13/openam-configurator-tool-13.0.0.jar -f /opt/ssoam/ssoConfigurator/idmappingservice-configuration

SSOAdminToolsを設定します。
# mkdir /opt/ssoam/ssoAdminTool
# cp -p SSOAdminTools-13.0.0.zip /opt/ssoam/ssoAdminTool
# cd /opt/ssoam/ssoAdminTool
# unzip SSOAdminTools-13.0.0.zip
# export JAVA_HOME=/usr/java/jdk1.8.0_66
# ./setup --acceptLicense

Path to config files of OpenAM server [/root/openam]:/opt/fjsso/tomcat/ssoam
Debug Directory [/opt/fjsso/ssoAdminTool/debug]: (何も入力せずにEnter)
Log Directory [/opt/fjsso/ssoAdminTool/log]: (何も入力せずにEnter)
スクリプトは次のディレクトリに正しく設定されています: /opt/fjsso/ssoAdminTool/ssoam
デバッグディレクトリは /opt/fjsso/ssoAdminTool/debug です。
ログディレクトリは /opt/fjsso/ssoAdminTool/log です。
この tools.zip のバージョン: OpenAM 13.0.0
サーバーインスタンスのバージョン: OpenAM 13.0.0

SSOAdminToolsを使用してOpenAMのXUI機能を無効にします。
XUI機能を使用する場合は無視してください。
# echo ampassword > pwd.txt
# /opt/ssoam/ssoAdminTool/ssoam/bin/ampassword -e pwd.txt > pwd.txt.new
# mv -f pwd.txt.new pwd.txt
# chmod 0400 pwd.txt
# /opt/ssoam/ssoAdminTool/ssoam/bin/ssoadm set-attr-defs -s iPlanetAMAuthService -t Global -u amadmin -f /opt/ssoam/ssoAdminTool/pwd.txt -a openam-xui-interface-enabled=false

ブラウザでOpenAMにアクセスできることを確認します。
http://host01.local.com:8080/ssoam/
amadmin
ampassword

https://t246osslab.files.wordpress.com/2015/09/classiclogin.png

ダッシュボード画面に遷移できれば導入成功です。