end0tknr's kipple - web写経開発

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

ubuntu20 on aws へ ssh する際のlogin user は、ubuntu

centos8 on aws へ ssh する際のlogin user は、centos - end0tknr's kipple - web写経開発

上記のCentOSエントリの Ubuntu バージョンです。

なので、OS毎に以下のようにsshします

## Ubuntu
$ ssh -i ~/.ssh/end0tknr_202008.pem ubuntu@18.181.226.???

## CentOS
$ ssh -i ~/.ssh/end0tknr_202008.pem centos@18.183.233.???

## AmazonLinux
$ ssh -i ~/.ssh/end0tknr_202008.pem ec2-user@18.183.233.???

nginx で、メンテナンス画面を表示する conf.d/test.end0tknr.com.conf

以下の通り

sserver {
  listen 8080;
  server_name test.end0tknr.com;
  
  limit_req zone=one burst=50;
  server_tokens off;
  
  error_page 503 @maintenance;
  set $maintenance "on";

  if ($uri ~ "^/(css|images|js)/") {
     set $maintenance "off";
  }
  if ($uri ~ "^/(header.html|footer.html)") {
     set $maintenance "off";
  }

  if ($maintenance = "on") {
    return 503;
  }
  
  location / {
    try_files $uri $uri/ =404;
  }
  location @maintenance {
     rewrite ^(.*)$ /maintenance.html break;
  }
}

openldapのエントリ情報をダンプ by slapcat or ldapsearch

$ /usr/bin/ldapsearch -x -h localhost  \
    -D "cn=Manager,dc=sso,dc=example,dc=com" -w $PASSWD \
    -b "dc=sso,dc=example,dc=com"   "*"

これまで、上記のように ldapsearch を使用していましたが、 slapcat を利用すると

  • ldap daemon(slapd)の停止状態でも利用OK
  • structuralObjectClass, entryUUID, creatorsName, createTimestamp , entryCSN , modifiersName , modifyTimestamp も export OK

らしい。

$ sudo /usr/sbin/slapcat -n 2

html-css におけるテキストの縦書きは、writing-mode: vertical-rl;

https://developer.mozilla.org/ja/docs/Web/CSS/writing-mode

上記の developer.mozilla.org によれば、

writing-mode プロパティは、以下のいずれかの値として指定されます。
横書きの場合はその言葉の書字方向も影響し、
左書き (ltr、英語やその他の多くの言葉) や
右書き (rtl、ヘブライ語やアラビア語) のどちらかになります。

writing-mode = { horizontal-tb / vertical-rl / vertical-lr };

らしい。

例えば、ホテル オークラのサイトが、{writing-mode: vertical-rl}を使用しています。

https://theokuratokyo.jp/dining/

f:id:end0tknr:20201019155637p:plain

OpenLDAP同士でのマルチマスター なレプリケーション

┌──────────┐    ┌──────────┐
│OpenLDAP 1号        ├<─>┤OpenLDAP 2号        │
│(sso-1.end0tknr.com)│    │(sso-2.end0tknr.com)│
└──────────┘    └──────────┘

上のようにするには、以下の通り

1号機側

$ vi replica_ldap_1to2.ldif

# replace ServerID
dn: cn=config
changetype: modify
replace: olcServerID
olcServerID: 1

# mirror mode setup
dn: olcDatabase={2}bdb,cn=config
changetype: modify
add: olcSyncRepl
olcSyncRepl: rid=001 provider=ldap://sso-2.end0tknr.com searchbase="dc=sso,dc=end0tknr,dc=com" schemachecking=on bindmethod=simple binddn="cn=Manager,dc=sso,dc=end0tknr,dc=com" credentials=ldapパスワード type=refreshAndPersist retry="60 +"
-
add: olcMirrorMode
olcMirrorMode: TRUE


$ ldapadd -x -w ldapパスワード -D cn=config -f replica_ldap_1.ldif.ldif

2号機側

$ vi replica_ldap_2to1.ldif

# replace ServerID
dn: cn=config
changetype: modify
replace: olcServerID
olcServerID: 2

# mirror mode setup
dn: olcDatabase={2}bdb,cn=config
changetype: modify
add: olcSyncRepl
olcSyncRepl: rid=001 provider=ldap://sso-1.end0tknr.com searchbase="dc=sso,dc=end0tknr,dc=com" schemachecking=on bindmethod=simple binddn="cn=Manager,dc=sso,dc=end0tknr,dc=com" credentials=ldapパスワード type=refreshAndPersist retry="60 +"
-
add: olcMirrorMode
olcMirrorMode: TRUE

$ ldapadd -x -w ldapパスワード -D cn=config -f replica_ldap_1to2.ldif

オマケ - 同期されるdata store作成

上記までにreplicaされているので、 以下は1 or 2号機のいずれかでのみ、実行すれば、OK

$ vi make_datastore.ldif

dn: dc=sso,dc=end0tknr,dc=com
objectclass: dcObject
objectclass: organization
o:  end0tknr
dc: sso

dn: cn=Manager,dc=sso,dc=end0tknr,dc=com
objectclass: organizationalRole
cn: Manager

dn: ou=People,dc=sso,dc=end0tknr,dc=com
objectClass: organizationalUnit
ou: People

dn: ou=Groups,dc=sso,dc=end0tknr,dc=com
objectClass: organizationalUnit
ou: Groups

dn: cn=sidNext,dc=sso,dc=end0tknr,dc=com
cn: sidNext
uidNumber: 1
objectClass: uidNext

dn: cn=defaultpolicy,dc=sso,dc=end0tknr,dc=com
objectClass: top
objectClass: device
objectClass: pwdPolicyChecker
objectClass: pwdPolicy
cn: defaultpolicy
pwdAttribute: userPassword

dn: cn=HelpDesk,dc=sso,dc=end0tknr,dc=com
objectclass: organizationalRole
cn: HelpDesk

dn: cn=SpcHelpDesk,cn=HelpDesk,dc=sso,dc=end0tknr,dc=com
objectClass: person
cn: SpcHelpDesk
sn: SpcHelpDesk
userPassword: {SSHA}<ないしょ>Zwf+WO1aXKzXTfrV

# ldapadd -x -w ldapパスワード -D cn=Manager,dc=sso,dc=end0tknr,dc=com \
    -f make_datastore.ldif

OpenAMにおけるXUI <-> UI の切替

UIとは以前のインタフェースで、XUIとはOpenAM12?辺りから有効になった新しいインターフェース。

これを切り替える手順は、以下の通り

OpenAM12 での場合

f:id:end0tknr:20201004103647p:plain

▼▼▼▼

f:id:end0tknr:20201004103658p:plain

OpenAM14 での場合

f:id:end0tknr:20201004103710p:plain

▼▼▼▼

f:id:end0tknr:20201004103721p:plain

OpenAM12-14 共通. コマンドラインの場合

ただ、以下のcom.iplanet.am.cookie.secure=true/false は、不要かも知れません

## XUI有効化
# /opt/openam/admin/sso/bin/ssoadm set-attr-defs \
   -u amadmin -f ~openam/.pwd.txt \
   -s iPlanetAMAuthService -t Global -a openam-xui-interface-enabled=true

# /opt/openam/admin/sso/bin/ssoadm update-server-cfg \
   -u amadmin -f ~openam/.pwd.txt \
   -s default -a com.iplanet.am.cookie.secure=false

## XUI無効化
# /opt/openam/admin/sso/bin/ssoadm set-attr-defs \
  -u amadmin -f ~openam/.pwd.txt \
  -s iPlanetAMAuthService -t Global -a openam-xui-interface-enabled=false
  
# /opt/openam/admin/sso/bin/ssoadm update-server-cfg \
  -u amadmin -f ~openam/.pwd.txt \
  -s default -a com.iplanet.am.cookie.secure=true

OpenAMのver.12と14では、SSO(SAML)ログイン時のparameter形式が異なります

OpenAM14環境を構築し、ログイン後の画面遷移を確認したところ、 意図した画面へ遷移できなかったことがきっかけです。

当初、OpenAM14そのもの?設定誤りによるものかとおもいましたが、 OpenAM13? 14?での仕様変更があったようです。

前述の「意図した画面へ遷移できなかった」は、 validation serviceの設定(urlパターン)がOpeAMでは不足していたことが 原因でした。

OpenAM12

https://sso.end0tknr.com/sso/SSORedirect/metaAlias/sso/idp?SAMLRequest=nVRLj9owEL7vr4h8D3lAu2ABEgVVRdq2LLA99DZxJsVSbKceh6X%2FvnZgKdWuWIljxuOZ7%2BWMCVTd8FnrdnqNv1skF0UHVWvi3cmEtVZzAySJa1BI3Am%2BmX194Hkv5Y01zghTs7vlYsIor%2FKsAChA5BmMimqQ3Q%2ByYji8T0f%2BUwyy7ONIFB%2BGwKIfaEkaPWF%2BDIuWRC0uNTnQzpfSPI2zNE7727zP85xn6U8WLTw0qcF1t3bONcSThMj0SIF18Q6l6gmj%2BGDQD%2BVks%2Fm%2BxlJaFC5R6GBWS6DuRJYNiz4bK7CjPWEV1IQBxQqI5B7PldWJ3yepS6l%2FXRejODYR%2F7LdruKZdbIC4Vg0I0IbYM%2BNplah3aDdS4FP64d%2FRDTsZXyFzcvdSyo7lVDDpnfj4BTvNLQX3l1HCy%2Bo2PQdDN3%2BcXKx5LSy4d%2F82OViZWop%2FtwSm%2BCCAne9O1RkGVddK29CcMih9spuVgHAYwu1rCTad9XsmHhD6to8zy2C80472yKbHun9T%2BjM8vQusOzi4p1weHC3sJ0b1YCVFBKMhxCO6dG7y8Hz2luzxuoWJ6%2B2CS7CaF8OMX82tgzx9s8Dy60FTY2x7mTzW3jOGr0phxcref0rmf4F&RelayState=s2f21baabac21a9bf41741b88709a9bc41169cb58a```

OpenAM14

https://test-sso.end0tknr.com/sso/XUI/?realm=/sso&spEntityID=https%3A%2F%2Ftest-nav-sso.end0tknr.com%3A443%2Fsso&goto=https%3A%2F%2Ftest-sso.end0tknr.com%2Fsso%2FSSORedirect%2FmetaAlias%2Fsso%2Fidp%3FReqID%3Ds2a08421c96bf1ec985c2bd8dee7f1ba5b518e705d%26index%3Dnull%26acsURL%3Dhttps%253A%252F%252Ftest-nav-sso.end0tknr.com%253A443%252Fsso%252FConsumer%252FmetaAlias%252Fsp%26spEntityID%3Dhttps%253A%252F%252Ftest-nav-sso.end0tknr.com%253A443%252Fsso%26binding%3Durn%253Aoasis%253Anames%253Atc%253ASAML%253A2.0%253Abindings%253AHTTP-Artifact#login/

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

install tomcat8.5 , nginx from amazon-linux-extras to amazon linux2

$ sudo amazon-linux-extras install tomcat8.5
$ ls -l /usr/share/tomcat
total 0
drwxr-xr-x 2 root root   76 Sep 23 07:40 bin
lrwxrwxrwx 1 root tomcat 11 Sep 23 07:40 conf -> /etc/tomcat
lrwxrwxrwx 1 root tomcat 22 Sep 23 07:40 lib -> /usr/share/java/tomcat
lrwxrwxrwx 1 root tomcat 15 Sep 23 07:40 logs -> /var/log/tomcat
lrwxrwxrwx 1 root tomcat 22 Sep 23 07:40 temp -> /var/cache/tomcat/temp
lrwxrwxrwx 1 root tomcat 23 Sep 23 07:40 webapps -> /var/lib/tomcat/webapps
lrwxrwxrwx 1 root tomcat 22 Sep 23 07:40 work -> /var/cache/tomcat/work

$ sudo systemctl enable tomcat
$ sudo systemctl start  tomcat


$ sudo amazon-linux-extras install nginx1
$ /usr/sbin/nginx -v
nginx version: nginx/1.18.0
$ sudo systemctl enable nginx
$ sudo systemctl start  nginx

AmazonLinux or AmazonLinux2 における timezone , hostname 設定

以下の通り

AmazonLinux では、/etc/sysconfig/network や clock を編集

$ sudo vi /etc/sysconfig/network
  HOSTNAME=test-navi-sso13-1.end0tknr.com      ##CHANGE

$ sudo vi /etc/sysconfig/clock
  ZONE="Asia/Tokyo"                            ##CHANGE
$ sudo ln -sf  /usr/share/zoneinfo/Asia/Tokyo /etc/localtime

$ sudo reboot

AmazonLinux2 では、hostnamectl や timedatectl コマンドを利用

$ sudo hostnamectl set-hostname test-sso14-1.end0tknr.com
$ sudo timedatectl set-timezone Asia/Tokyo

$ sudo reboot

OpenAM13 & WebAgent v4.1.1 for apache2.4 on linux 64 で、ログイン後、403 エラー

work around 的に対応しましたが、原因特定できたと考えておらず、 改めて調べたい為、以下にメモしておきます。

問題点

以下のような構成で、OpenAM13 と WebAgent v4.1.1 の認証テストを実施したところ、 ログインに成功するものの、ログイン後、WebAgent側へ画面遷移すると、403エラーが発生。

┌────┐    ┌──┐              ┌──┐    ┌────┐
│OpenAM13├http┤ALB ├── https──┤ALB ├http┤WebAgent│
└────┘    └──┘              └──┘    └────┘

OpenAM - WebAgent 間のパスワード誤り?

OpenAM インストール時に指定するパスワードと、 WebAgentのインストール時に指定するパスワードの不整合かと思いましたが、 そうでもないかも知れません。

/opt/sso/sso/debug/CoreSystem ログでのエラー

その後、OpenAM13 にある /opt/sso/sso/debug/CoreSystem を見たところ、 次のようなエラーを発見。

ERROR: Cannot send notification to https://test-nxxi13.end0tknr.com:443/UpdateAgentCacheServlet?shortcircuit=false
java.io.FileNotFoundException: https://test-nxxi13.end0tknr.com:443/UpdateAgentCacheServlet?shortcircuit=false
        at sun.net.www.protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java:1896)
        at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1498)
        at sun.net.www.protocol.https.HttpsURLConnectionImpl.getInputStream(HttpsURLConnectionImpl.java:268)
        at com.iplanet.services.comm.server.NotificationSender.run(NotificationSender.java:93)
        at com.iplanet.services.comm.server.PLLServer.send(PLLServer.java:69)
        at com.iplanet.dpro.session.service.SessionNotificationSender$SessionNotificationSenderTask.run(SessionNotificationSender.java:265)
        at org.forgerock.openam.audit.context.AuditRequestContextPropagatingRunnable.run(AuditRequestContextPropagatingRunnable.java:42)
        at com.iplanet.am.util.ThreadPool$WorkerThread.run(ThreadPool.java:314)

暫定的に OpenAM の web agent 設定画面にある「適用されない URL 処理」に値追加

UpdateAgentCacheServlet に対してのエラーでしたので、 暫定的に OpenAM の web agent 設定画面にある「適用されない URL 処理」に値追加し、 サーバ再起動することで、画面遷移後も正しく表示されるようになりましたが、 本来の対応方法でない気がとってもします。

追加した適用されないurl

  • http*://test-nxxi13.end0tknr.com/UpdateAgentCacheServlet
  • http*://test-nxxi13.end0tknr.com/amagent

f:id:end0tknr:20200922220258p:plain

f:id:end0tknr:20200922220309p:plain

OpenAM の ssoadm コマンド代替の ssoadm.jsp を有効化

OpenAM の設定 or 管理者ツールである ssoadm は、 コマンドラインによる ssoadm は使用しますが、ssoadm.jsp はあまり利用実績がありません。

その ssoadm.jsp は有効化方法すら忘れてしまうので、以下、メモ

と言っても、ブラウザで root である amadmin によるログインし、 Configuration > サーバおよびサイト> サーバ > サーバ名 で画面遷移後。

「高度」タブ画面で、ssoadm.disabled = false の属性を追加すれば、 後は、https://test-sso.end0tknr.com/sso/ssoadm.jsp のように ssoadm.jsp へアクセスできます。

f:id:end0tknr:20200922151203p:plain

↑こう登録すると、↓このように ssoadm コマンド? を利用できます。

f:id:end0tknr:20200922151407p:plain

f:id:end0tknr:20200922151621p:plain