目次
構成
┌OpenAM(SP/ServiceProvider)─────────────────┐ ┌──┐ │┌───────────┐ ┌─────────────┐│ │User├https┬┼┤ALB(load balancer) ├http┤EC2+AmazonLinux1+OpneAM12 ││ │ │ │││test-sso.end0tknr.com │ │test-sso-1.end0tknr.com ││ └──┘ ││└───────────┘ └─────────────┘│ │└──────────────────────────────┘ │┌OpenAM(WebAgent)──────────────────────┐ ││┌───────────┐ ┌─────────────┐│ └┼┤ALB(load balancer) ├http┤EC2+AmazonLinux1+WebAgent3││ ││test-nav.end0tknr.com │ │test-nav-1.end0tknr.com ││ │└───────────┘ └─────────────┘│ └──────────────────────────────┘
OpenAM (SP/ServiceProvider)
OS関連?
$ ssh -i ~/.ssh/test-sso-amazonlinux2.pem ec2-user@3.114.96.159 $ cat /etc/os-release NAME="Amazon Linux AMI" VERSION="2018.03" <略> $ curl http://169.254.169.254/latest/meta-data/instance-type t2.small $ sudo vi /etc/sysconfig/network HOSTNAME=test-nav-sso-1.end0tknr.com ##CHANGE # openamが参照するらしく、private ipも /etc/hosts への登録が必要 $ sudo vi /etc/hosts 172.31.12.2 test-nav-sso-1.end0tknr.com ##ADD $ sudo vi /etc/sysconfig/clock ZONE="Asia/Tokyo" ##CHANGE $ sudo ln -sf /usr/share/zoneinfo/Asia/Tokyo /etc/localtime $ sudo reboot
java
$ sudo yum install java-1.8.0-openjdk-devel.x86_64 $ sudo alternatives --config java $ /usr/bin/java -version openjdk version "1.8.0_252"
tomcat
$ cd /opt $ sudo wget http://ftp.meisei-u.ac.jp/mirror/apache/dist/tomcat/tomcat-7/v7.0.106/bin/apache-tomcat-7.0.106.tar.gz $ sudo tar -xvf apache-tomcat-7.0.106.tar.gz $ sudo ln -s apache-tomcat-7.0.106 tomcat $ sudo useradd tomcat $ sudo chown -R tomcat:tomcat /opt/tomcat $ sudo chown -R tomcat:tomcat /opt/apache-tomcat-7.0.106 $ sudo su - # cd /opt/tomcat/webapps # rm -rf docs/ examples/ host-manager/ manager/ $ sudo mkdir /opt/sso ## openamの設定用dir $ sudo chown tomcat:tomcat /opt/sso $ sudo vi /etc/init.d/tomcat ## 以下、自動起動関連 #!/bin/bash # description: Tomcat7 Start Stop Restart # processname: tomcat7 # chkconfig: 234 20 80 CATALINA_HOME=/opt/tomcat case $1 in start) sh $CATALINA_HOME/bin/startup.sh ;; stop) sh $CATALINA_HOME/bin/shutdown.sh ;; restart) sh $CATALINA_HOME/bin/shutdown.sh sh $CATALINA_HOME/bin/startup.sh ;; esac exit 0 $ sudo chmod 755 /etc/init.d/tomcat $ sudo chkconfig --add tomcat $ sudo chkconfig --level 234 tomcat on $ sudo /etc/init.d/tomcat start $ sudo /etc/init.d/tomcat stop
load balancer (alb/elb) の作成と、DNS設定
ALBを作成し、DNSやSSL証明書の設定を行っていますが、特に難しいことは行ってません。
ただ、ALBにて、HTTP->HTTPSのredirectを行っています。
openam
## 2020/10現在、OpenAM12のwarはforge rock社のライセンス規約により 新規入手はNGかと思います。 $ scp -i ~/.ssh/test-sso-amazonlinux2.pem navi_sso_openam12.war \ ec2-user@3.114.96.159: $ ssh -i ~/.ssh/test-sso-amazonlinux2.pem ec2-user@3.114.96.159 $ sudo /etc/init.d/tomcat stop # warファイルの配備 $ sudo su - # cd /opt/tomcat/webapps # cp ~ec2-user/tmp/navi_sso_openam12.war ./sso.war # chown tomcat:tomcat sso.war $ sudo /etc/init.d/tomcat start
ここからは、ブラウザで https://test-nav-sso.end0tknr.com/sso へアクセスし 追加の設定を行います。
- 「設定オプション」画面にて「カスタム設定の新しい設定の作成」リンクをクリック - 「カスタム設定オプション 手順1:一般」にて 「amadmin」のpasswordをroot4OPENAMに設定 - 「カスタム設定オプション 手順2:サーバ設定」にて サーバURL : https://test-nav-sso.end0tknr.com:443 Cookieドメイン: .end0tknr.com ロケール : en_US 設定dir : /opt/sso - 「カスタム設定オプション 手順3:設定データストア設定」にて 設定データストア : OpenAM ポート : 50389 管理者ポート : 4444 JMXポート : 1689 暗号化鍵 : root4OPENAM ルートサフィックス: dc=openam,dc=forgerock,dc=org - 「カスタム設定オプション 手順4:ユーザーデータストア設定」にて 「OpenAMのユーザデータストア」を選択 - 「カスタム設定オプション 手順5:サイト設定」に ロードバランサの背後に配備 : 「いいえ」 ※「ロードバランサの背後に配備される」でも問題ないと思います。 - 「カスタム設定オプション 手順6:デフォルトのポリシーエージェントユーザー」にて パスワード : 5JjUuNJpNEk/zkRiRhkz7LJjKoRjI+M8 「設定の作成」をクリックし、しばらく経過すると 「認証ファイルの監視を設定します。」のメッセージを最後に、画面更新されない。 そこで、 /opt/sso/install.log の内容を見ると、install は完了しているようでしたので ブラウザで https://test-nav-sso12.end0tknr.com/sso へアクセスし、 uid = amadmin でログインできることを確認。
OpenAMへの ユーザ追加
通常、OpenAM管理画面で Top Level Realm -> Data Stores -> 「対象」順に 画面遷移すると可能ですが、OpenAM 12の場合、バグでこれができないようですので ldapadd コマンドにより実施ます。
$ sudo yum install openldap-clients $ vi add_ldap.ldif dn: uid=shmtest010,ou=People,dc=openam,dc=forgerock,dc=org uid: shmtest010 sn: shmtest010 cn: shmtest010 userPassword: testtest mail: inetUserStatus: Active objectClass: iplanet-am-managed-person objectClass: inetuser objectClass: sunFederationManagerDataStore objectClass: sunFMSAML2NameIdentifier objectClass: inetOrgPerson objectClass: sunIdentityServerLibertyPPService objectClass: iPlanetPreferences objectClass: iplanet-am-user-service objectClass: organizationalPerson objectClass: top objectClass: person objectClass: sunAMAuthAccountLockout objectClass: iplanet-am-auth-configuration-service dn: uid=shm1000001,ou=People,dc=openam,dc=forgerock,dc=org uid: shm1000001 sn: shm1000001 cn: shm1000001 userPassword: testtest mail: inetUserStatus: Active objectClass: iplanet-am-managed-person objectClass: inetuser objectClass: sunFederationManagerDataStore objectClass: sunFMSAML2NameIdentifier objectClass: inetOrgPerson objectClass: sunIdentityServerLibertyPPService objectClass: iPlanetPreferences objectClass: iplanet-am-user-service objectClass: organizationalPerson objectClass: top objectClass: person objectClass: sunAMAuthAccountLockout objectClass: iplanet-am-auth-configuration-service $ /usr/bin/ldapadd -x -h localhost -p 50389 \ -D "cn=Directory Manager" -w root4OPENAM \ -f ./add_ldap.ldif $ /usr/bin/ldapsearch -x -h localhost -p 50389 \ -D "cn=Directory Manager" -w root4OPENAM \ -b "ou=People,dc=openam,dc=forgerock,dc=org" \ "uid=*"
OpenAM(WebAgent)
OS関連
$ ssh -i ~/.ssh/test-sso-amazonlinux2.pem ec2-user@3.115.167.13 $ sudo vi /etc/sysconfig/network HOSTNAME=test-nav-1.end0tknr.com ##CHANGE $ sudo vi /etc/hosts 172.31.7.39 test-nav-1.end0tknr.com ##ADD $ sudo vi /etc/sysconfig/clock ZONE="Asia/Tokyo" ##CHANGE $ sudo ln -sf /usr/share/zoneinfo/Asia/Tokyo /etc/localtime $ sudo reboot
apache
$ sudo yum install httpd $ /usr/sbin/httpd -v Server version: Apache/2.4.43 (Amazon) $ sudo systemctl enable httpd $ sudo systemctl start httpd
alb(elb) の作成と、DNS設定
ポイントは、OpenAM (SP/ServiceProvider) と同様ですので、省略します。
web agent 設定 ( OpenAM (SP/ServiceProvider) )
ブラウザを使用し、rootユーザ(amadmin)で https://test-nav-sso12.end0tknr.com:443/sso へログインし、 「アクセス制御」→「/ (最上位のレルム)」→「エージェント」→「Web」で画面遷移。 Webエージェントの「新規」をクリックし、「新しいWeb」の画面にて以下を入力 名前 : navi_web_agent パスワード : root4OPENAM 設定 : 集中 サーバー URL : https://test-nav-sso.end0tknr.com:443/sso エージェント URL: https://test-nav.end0tknr.com:443/ 「アクセス制御」→「/ (最上位のレルム)」→「ポリシー」で画面遷移。 iPlanetAMWebAgentServiceのView Policies(ノート)アイコンをクリック。 更に「Add New policy」で以下の新しいポリシーを作成する。 Name : test-nav Description : null Resources : *://*:*/* Actions : GET , POST , HEAD Subject : Authenticated Users
web agent 設定 ( OpenAM(WebAgent) )
## 2020/10現在、OpenAM Agent ver.3はforge rock社のライセンス規約により 新規入手はNGかと思います。 $ scp -i ~/.ssh/test-sso-amazonlinux2.pem Apache-v2.4-Linux-64-Agent-3.3.4.zip \ ec2-user@3.115.167.13: $ ssh -i ~/.ssh/test-sso-amazonlinux2.pem ec2-user@3.115.167.13 /etc/passwd を編集し、 yum install httpd で adduser された apache を su - 可能にする $ sudo vi /etc/passwd apache:x:48:48:Apache:/var/www:/bin/bash # CHANGE from /sbin/nologin $ sudo su - # mkdir /etc/httpd/openam # chown apache:apache /etc/httpd/openam ## 以下は、web agent の installerが httpd.conf を書き換える為に実施 # chown -R apache:apache /etc/httpd/conf ★ java.io.FileNotFoundException: /etc/httpd/.amAgentLocator (Permission denied) と、errorとなる為、以下を実施 # chown apache:apache /etc/httpd # su - apache $ cd /etc/httpd/openam $ unzip Apache-v2.4-Linux-64-Agent-3.3.4.zip $ echo "root4OPENAM" > web_agents_passwd $ cd /etc/httpd/openam/web_agents/apache24_agent/bin $ ./agentadmin --help $ ./agentadmin --install Apache Server Config Directory : /etc/httpd/conf OpenAM server URL : https://test-nav-sso.end0tknr.com:443/sso Agent URL : https://test-nav-1.end0tknr.com:443 ▲ Agent Profile name : navi_web_agent Agent Profile Password file name : /etc/httpd/openam/web_agents_passwd ▲ ALBの配下にあることの影響か、エラーとなり 最終的に上記の値を設定しています。が、怪しい ERROR: The URL format entered is incorrect or the agent container is still running. Please specify the correct format for Agent URL and make sure the agent container is not running. The agent container at https://test-nav12.end0tknr.com:443 is running. This may cause misconfiguration of the agent. Please stop the agent container, then continue with the agent installation. $ sudo reboot
> ブラウザを使用し、rootユーザ(amadmin)で > https://test-nav-sso13.end0tknr.com:443/sso へログインし、 > 「アクセス制御」→「/ (最上位のレルム)」→「エージェント」で画面遷移し、 > 更に、先程作成したagent設定の「アプリケーション」へ画面遷移。 > > 「適用されない URL」に対し、以下の2個のurlを追加。 > > - http*://test-nav13.end0tknr.com/UpdateAgentCacheServlet > - http*://test-nav13.end0tknr.com/amagent > > これを行わないと、ログイン後、agent側で 403 エラーとなるみたい
OpenAM13では、上記のような設定を行いましたが、OpenAM12では、動作せず...
代わりに、agent設定の「グローバル」画面にて 「一般SSO のみモード:有効」とすることでアクセスできました。