はじめに
本記事は、OpenAM/OpenIGを使用したシングルサインオン環境の構築という記事から続く関連記事の一部です。
既にTomcatが構築してあることを前提に、OpenAMのインストールから初期セットアップをし、OpenAMが動作するまでを目指します。
前提
- OpenAMをインストールするサーバはCentOS7.3を想定
- OpenAMは無料で手に入る中では最新のv13.0を使用
- 既にtomcatはインストール済であること
- 理論上はyumで入れるtomcatでも大丈夫なはずだが、私が検証した限りでは正常に動作しなかった
- そのため、本記事内で使用するtomcatは公式から落とした手動でインストールしたものを使用している
- ちなみにjettyはサポート対象外
- 検証目的の構成を行う (冗長構成を想定しない)
環境
- サーバOS: CentOS7.3
- ホスト名: sso.test.local
- IPアドレス: 172.16.1.130
- JDK Ver: 1.8.0_111
- Tomcat Ver: 8.0.39
OpenAMサポートプラットフォームについて
2017/06/15 terukizm様からのコメントにより追記しました。ありがとうございます。
OpenAMはサポートしているOSやJava,Tomcatなどの制限が厳しく、既にインストール済のもの流用して作ろうとすると意外とサポートしていなくて途中でエラーになってしまったりすることがある。
詳しくは、Release Notesを読んでほしいのだが、いくつか記載する。
※下記は上記Release Notesからの転載です。
サポートOS
Operating System Version Red Hat Enterprise Linux, Centos 6, 7 SuSE 11 Ubuntu 12.04 LTS, 14.04 LTS Solaris x64 10, 11 Solaris Sparc 10, 11 Windows Server 2008, 2008 R2, 2012, 2012 R2
サポートJDK
Vendor Version Oracle JDK 7, 8 IBM SDK, Java Technology Edition (Websphere only) 7
サポートWebアプリケーションサーバー
Web Container Version Apache Tomcat 7, 8 Oracle WebLogic Server 12c JBoss Enterprise Application Platform 6.1+ JBoss Application Server 7.2+ WildFly AS 9 IBM WebSphere 8.0, 8.5
特にTomcatに関しては、v8といっても厳密にはv8.0.x と v8.5.xが存在している。
これに関しては、v8.5.xを使うと、後述するセットアップウィザードの途中で処理が停止してしまい、先に進めないとのこと。
事前にTomcatを用意する場合はv8.0.xを使用するように注意してほしい。
https://forum.forgerock.com/topic/openam-13-with-tomcat-8-5-9/
OpenAMの入手
OpenAMはForgerockという会社が開発・公開しているので、以下のURLからOpenAM => OpenAM OEM => 13.0.0 と辿って、.warを落としてくる。
https://backstage.forgerock.com/downloads/OpenAM
恐らくsubscription only
というラベルが付いていてDLできないようになっていると思うが、これはサインインしていないため。
面倒くさいけど、まずは右上のRegister
から、アカウントを作ってサインインする必要がある。
ちなみに、サインインしたとしてもsubscription only
になっているものに関しては、それはお金払わないと落とせないやつら。
一部、そういうのがある。
構築作業
インストール
OpenAM配置と所有者および権限変更
公式から頂戴した.warを対象サーバにアップロード。
※私は自PCに落としてsftpで持っていった
tomcat配置パス配下にwebapps
というフォルダがあるので、その中に.warファイルを配置。
あとはtomcatが起動時にこの.warを自動的に読み込んでくれる。
[root@sso ]# mv ~/OpenAM-13.0.0.war /opt/tomcat/webapps/openam.war
[root@sso ]# chown tomcat:tomcat /opt/tomcat/webapps/openam.war
[root@sso ]# chmod 755 /opt/tomcat/webapps/openam.war
[root@sso ]#
[root@sso ]# systemctl restart tomcat
[root@sso ]# ss -nat | grep 8080
LISTEN 0 100 :::8080 :::*
ホスト名変更とhosts修正
なぜかと言うと、OpenAMはFQDNでの利用が必須であるため。
IPアドレスでの利用は不可、最初の初期セットアップウィザードすら完了できない。
※本記事内では、OpenAMサーバに対して、sso.test.local
というFQDNでアクセスするものとする
[root@sso ]# hostnamectl set-hostname sso.test.local
[root@sso ]# vim /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 sso.test.local
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
172.16.1.130 sso.test.local
[root@localhost ]# shutdown -r now
※再起動
初期セットアップ
- Webブラウザでhttp://[fqdn]:8080/openam にアクセス
- もし対象サーバとは別の例えばWindows PCなどからアクセスする場合はDNSで解決させるか、これもhostsで解決させる必要あり
- ウィザードに従ってセットアップを進めていくが、最初は必ず
カスタム設定
を選択すること - 大体の設定は後から変更できるのであんまり神経質にならなくて良い
- ユーザデータストアはOpenAM組み込みを選択すること
-
OpenAMへアクセスする際のURLやcookieドメインを設定する。
ここはかなり重要で、後から変更できることはできるが、過去試したときはOpenAMがぶっ壊れて最初から作り直しになった経験がある。
cookieドメインは単純にアクセスするURLからホスト名を抜いたもので良い。つまり今回の場合、.test.local
になる。
この辺は本来、自動的に設定され最初から入力されている部分だが、何の理由かわからないが、たまに値が間違っている(微妙に文字が足りない)ことがあるので、その場合は手動で入れ直してあげよう。
-
設定データストアの設定を行う。設定データストアの他には後述するユーザデータストアが存在するが、設定データストアの場合、その名の如く、OpenAM本体の様々な設定がここに保存される。
今回はOpenAM内部のデータストアに保存するようにするが、冗長構成であったり大規模構成である場合は、別途Directory Server(例えばForgerockのOpenDJ)を用意してあげて、そこに保存するようにしてあげないといけない。
-
ユーザーデータストアは、OpenAMにログインするユーザーの在り処であり、結局はSSOをするユーザーである。
例えば、ActiveDirectoryであったり、OpenLDAPなど。
今はOpenAM内部の組み込みデータストアを指定する。注意書きの通り、検証環境のみで使おう。この辺は別記事でAD連携をさせるネタを書きます。
-
ポリシーエージェントのパスワードを決める。amadminのパスワードとは異なるものにしなければならない。
え?ポリシーエージェントってなんだって?
私も実はよくわかっていないが、別記事で書くWebエージェントを使用したSSOなどをするときに、エージェントとOpenAMが連携する際に裏側で動いているエージェントのよう。
OpenAMは様々なエージェントと連携することで、多様なユースケースのSSOを実現できるアプリケーションなので、エージェント云々というのは今後もたくさん出てくる。
-
Webブラウザで、
http://[fqdn]:8080/openam
に移動すると、このログイン画面が表示されるはず。
ログインすると、OpenAMの管理画面が表示される。
セットアップウィザードの中で指定したamadmin
とパスワードでログインを行う。
ちなみに、管理画面用途だけでなく、SSOをする際のユーザは全てこの画面を経由してログインを行うことになる。
ということは、見た目を変えたくなるわけだが、その辺は別記事に書きます。
※例えばロゴを会社のロゴに変えたりとか
小ネタ
設定を間違ってしまった、もう1回やり直したい
初期セットアップ項の4.でパスを指定している部分があるが、こいつを削除かリネームしてtomcatを再起動すれば、もう1回初期セットアップを行える。
今回の場合は、/home/tomcat/openam
tomcat実行ユーザのホームディレクトリ配下/openamというのがデフォルトのパスであるらしい。