OpenAM・OpenIDのスタンドアロン環境を構築 - mitsuaki0717/shino-repo GitHub Wiki

環境
OS:CentOS7.4
Hostname:test-cent.test.com

●CentOS7にGUIをインストール

  1. yum -y groupinstall “GNOME Desktop”
  2. systemctl set-default graphical.target
  3. systemctl get-default
  4. shutdown -r now

●FQDNを設定
hostnamectl set-hostname test-cent.test.com

  1. vi /etc/sysconfig/network
    HOSTNAME=test-cent.test.com

●hostsファイルの編集
vi /etc/hosts
192.168.0.100 test-cent.test.com

●openamユーザーの作成

  1. useradd -s /sbin/nologin openam

●Openjdkをインストール

  1. yum install java-1.8.0-openjdk
  2. yum install java-1.8.0-openjdk-devel

●tomcatのインストール

  1. yum install wget
  2. wget http://ftp.riken.jp/net/apache/tomcat/tomcat-8/v8.0.47/bin/apache-tomcat-8.0.47.zip
  3. unzip apache-tomcat-8.0.47.zip -d /opt
  4. ln -s /opt/apache-tomcat-8.0.47 /opt/tomcat
  5. vi /etc/security/limits.conf
    以下を追記
    openam soft nofile 65536
    openam hard nofile 131072
  6. yum install httpd mod_ssl
  7. vi /etc/httpd/conf.d/openam.conf
    以下を追記
    Proxypass / ajp://localhost:8009/
  8. systemctl enable httpd
  9. systemctl restart httpd

●OpenAMをダウンロード&デプロイ

  1. wget http://download.forgerock.org/downloads/openam/OpenAM-14.0.0-SNAPSHOT_20161122.war -O /opt/tomcat/webapps/openam.war
    ↑のwarファイルは壊れてるっぽい。展開できない。
    以下の公式サイトからダウンロードする
    https://backstage.forgerock.com/downloads
    今回の案件で使用しているバージョンについては以下からダウンロード
    https://github.com/ForgeRock/openam-community-edition/releases
    「OpenAM-Community-Edition-11.0.3.war」
  1. vi /opt/tomcat/bin/setenv.sh
    以下を追記
    #!/bin/sh

JAVA_HOME=/usr
JAVA_OPTS=“-server -Xmx1024m”
※LBの配下にOpenAMを配置する場合は以下となる。
JAVA_OPTS=“-Xmx1024m -XX:MaxPermSize=256m”

export JAVA_OPTS

  1. chown -R openam. /opt/tomcat/
  2. chmod +x /opt/tomcat/bin/*.sh

●tomcatを起動

  1. sudo -u openam /opt/tomcat/bin/startup.sh

●初期設定
ブラウザで以下のURLに接続
https://test-cent.test.com/openam

●OAuthを使ってプロバイダの設定を行う(12/9参照)

確認
curl -k https://test-cent.test.com/openam/.well-known/openid-configuration

参考URL
https://qiita.com/advent-calendar/2016/openam-alone
postgresqlを使う
http://tryerror.net/tryerror/wordpress/post-259

LinuxをLBにする
IPエイリアスを設定(公開IP用)
※クライアントからサービス用にリクエストを受け付けるためのIPアドレス
eth1:0等

IPフォワーディング設定
vi /etc/sysctl.conf
以下を追記
net.ipv4.ip_forward = 1
systemctl -p

keepalivedおよびipvsadmをインストール
yum install ipvsadm keepalived

LVSの設定をクリアしておく
ipvsadm -C

keepalivedの設定
設定ファイルのバックアップ
cp -p /etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf_bkup

サービスIPアドレス設定(上記手順で設定したVIPを指定)
ipvsadm -A -t 192.168.1.100:80

転送先となるIPおよびポートを設定する
ipvsadm -a -t 192.168.1.100:80 -r 192.168.0.100:80 -m
ipvsadm -a -t 192.168.1.100:80 -r 192.168.0.106:80 -m

設定の確認
ipvsadm -l

touch /etc/sysconfig/ipvsadm

systemctl start ipvsadm
systemctl enable ipvsadm

keepalived設定
vi /etc/keepalived/keepalived.conf
global_defs {
notification_email {
[email protected] !<通知メール送信先メールアドレス>
}
notification_email_from [email protected] !<通知メール送信元メールアドレス>
smtp_server 127.0.0.1 !メール送信に使用するSMTPサーバのIPアドレス
smtp_connect_timeout 30
router_id LVS_DEVEL !ロードバランサを識別するための名前(デフォルト)
}

virtual_server 192.168.1.100 80 {
delay_loop 5
lb_algo wlc
lb_kind NAT
!persistence_timeout 0
protocol TCP
sorry_server 192.168.0.105 80

!振り分け先のwebサーバを追加する場合は以下の設定を追加 real_server 192.168.0.100 80 { weight 1 inhibit_on_failure HTTP_GET { url { path /openam/isAlive.jsp status_code 200 } connect_timeout 5 !nb_get_retry 3 !delay_before_retry 3 } }

}

systemctl start keepalived
systemctl enable keepalived

OpenAMのデータストア用にPostgreSQLを使う
http://tryerror.net/tryerror/wordpress/post-259

テーブルを作成
create table auth_users(
uid varchar(50),
cn varchar(50),
inetuserstatus varchar(20),
userpassword varchar(50),
ChangePassword varchar(50),
mail varchar(50),
sunIdentityMSISDNNumber varchar(50),
sn varchar(50),
manager varchar(50),
preferredlocale varchar(10),
iplanet_am_user_password_reset_force_reset varchar(50),
givenname varchar(50),
iplanet_am_user_alias_list varchar(50),
iplanet_am_user_account_life varchar(50),
telephonenumber varchar(50),
employeenumber varchar(50),
iplanet_am_user_auth_config varchar(50),
postaladdress varchar(50),
iplanet_am_user_password_resetoptions varchar(50),
iplanet_am_user_password_reset_question_answer varchar(50),
iplanet_am_user_success_url varchar(50),
iplanet_am_user_failure_url varchar(50)
);

openamサーバで実施
wget https://jdbc.postgresql.org/download/postgresql-42.1.4.jre6.jar
mv postgresql-42.1.4.jre6.jar /opt/tomcat/webapps/openam/WEB-INF/lib
chown openam.openam postgresql-42.1.4.jre6.jar

OpemAMの認証サーバを冗長構成にする
https://blue21neo.blogspot.jp/p/centos6openam10-lvsnatopenam.html

⚠️ **GitHub.com Fallback** ⚠️