end0tknr's kipple - web写経開発

太宰府天満宮の狛犬って、妙にカワイイ

install openam12 to amazon linux 1

目次

構成

               ┌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を作成し、DNSSSL証明書の設定を行っていますが、特に難しいことは行ってません。

ただ、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 のみモード:有効」とすることでアクセスできました。