ブログ記事

イントラネットにあるwebサービスへSSOしてみよう-後編

2020/05/25

こんにちは。セシオスサポートチームです。

「Secioss Identity Suite Cloud Edition SP」を使ったSSO 後編です。

前回記事でサンプルのwebアプリをデプロイしました。

前回記事:イントラネットにあるwebサービスへSSOしてみよう-前編

今回は IDSuiteSP の構築と、SeciossLink との連携設定を行って
実際にサンプルWebアプリへログインするところまでやってみたいと思います。

構築状況は以下を想定しています。適宜読み替えてください。
SSOを行いたいwebアプリのドメイン:https://testservlet.test.secioss.com
IDSuiteSPサーバーのドメイン:https://idsuitesp.test.secioss.com

ID Suite SP 構築編

IDSuiteSP ダウンロード

OSDN - Secioss SSO
https://ja.osdn.net/projects/secioss-auth/

上記のURLより「Secioss Identity Suite Cloud Edition SP」をダウンロードします。
最新版は v4.0.3 です。

secioss-idsuite-cloud-sp-4.0.3.zip をダウンロードしたら
IDSuiteSPを構築するサーバーへscpなりftpなりで送って下さい。

※サンプルのwebアプリを構築したサーバーとは別のサーバーです。

必須パッケージのインストール

yum install epel-release

yum install -y httpd libmcrypt libmemcached memcached mod_ssl mod_proxy_html perl-Archive-Tar perl-CGI-Session perl-Class-Inspector perl-Config-General perl-Crypt-SSLeay perl-DBD-Pg perl-DBI perl-IO-Socket-SSL perl-LDAP perl-LWP-Protocol-https perl-Sys-Syslog perl-Text-CSV_XS perl-TimeDate perl-XML-LibXML perl-XML-Simple perl-XML-Twig php php-mbstring php-mcrypt php-pear php-pecl-memcache php-soap php-xml wget

解凍

unzip secioss-idsuite-cloud-sp-4.0.3.zip

IDSuiteSPに同梱されているファイルを適切なパスへ配置します。

cd secioss-idsuite-cloud-sp-4.0.3
cp -rf opt /

独自パッケージのインストール
IDSuiteSPに同梱されているパッケージをインストールします。

rpm -Uvh rpm/libmemcache-1.4.0-0.rc2.el7.centos.secioss.x86_64.rpm
rpm -Uvh rpm/apache2-mod_auth_memcookie-1.0.3-.el7.centos.secioss.x86_64.rpm

※依存関係の問題でインストールする順番は必ずlibmemcacheからインストールして下さい。

シングルサインオンのログは、それぞれsyslogのlocal5に出力します。
syslogの設定もやっておきましょう。

vi /etc/rsyslog.conf

下記記述をファイル末尾に追加してください。

# IdSuiteSP
local5.* -/var/log/auth.log

syslogを再起動します。

systemctl restart rsyslog

phpのセッション管理を memcached に変更する必要があるのでphpの設定を変えます。
変更対象のファイルですがデフォルトでは /etc 配下にあるphp.iniを変更します。
設定が反映されないなどの場合、設定ファイルの場所が違う可能性があります。
その場合はphpinfoなどで確認し環境に合わせ適宜変更して下さい。

vi /etc/php.ini

下記の設定を施します。

session.save_handler = memcache

デフォルトでsession.save_handlerの記述が存在していますので、ファイル内で検索し値を更新して下さい。
※2重にパラメータを定義しないよう注意です。

IDSuiteSPはSAML通信を行うソフトウェアですので、
SAML通信に使用する秘密鍵とX.509 証明書を作成します。

秘密鍵作成(RSA)

openssl genrsa -out PrivateKey.pem 2048

※パスフレーズはなしで作成します。

証明書作成

openssl req -new -x509 -days 3650 -key PrivateKey.pem -out PublicKey.pem

以下実行例

You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [XX]:JP ←国
State or Province Name (full name) []:Tokyo ←都道府県
Locality Name (eg, city) [Default City]:Toshimaku ←市町村
Organization Name (eg, company) [Default Company Ltd]:TEST, Inc ←会社名
Organizational Unit Name (eg, section) []:Develop ←部署名 
Common Name (eg, your name or your server's hostname) []:idsuitesp.test.secioss.com ←プロキシサーバー名
Email Address []: ←そのままENTER

鍵と証明書の作成が終わったら、以下のフォルダへ配置します。

cp ./PublicKey.pem /opt/secioss/share/simplesamlphp/cert/PublicKey.pem
cp ./PrivateKey.pem /opt/secioss/share/simplesamlphp/cert/PrivateKey.pem

※この証明書はSeciossLink - IDSuiteSP 間のSAML認証で使用します。
PublicKey.pemはSeciossLink管理画面で後ほどリバプロサーバーの設定で使用しますので、ローカルのパソコンなどにダウンロードしておいてください。

IDSuiteSPでは apache を使用するのでfirewallの穴あけもしておきます。

firewall-cmd --add-port=443/tcp --zone=public --permanent
firewall-cmd --reload

各種デーモン起動

systemctl start memcached
systemctl start httpd

設定ツールを用いてseciosslinkへの連携設定を行います。

./config.sh rp-dl setup

以下実行例

# ./config.sh rp-dl setup
認証サービスのURL [https://slink.secioss.com]:https://slink.secioss.com
テナントID(Access Managerの場合このままEnter): seciosslinkテナント名
管理者ID: 管理者ユーザ@テナント
管理者パスワード: ********
リバースプロキシサーバのURL: https://idsuitesp.test.secioss.com

以上でIDSuiteSPのインストールは完了です。

SeciossLink 設定

システム>テナント情報よりリバースプロキシ(IDSuiteSP)の設定を行います。

入力する内容は下記の通りです。

テナント設定-リバースプロキシサーバー設定
項目
リバースプロキシサーバーのホスト名 IDSuiteSPを構築したサーバーのホスト名
IPアドレス 上記ホスト名を名前解決した際に取得できるIPアドレス
暗号化用証明書 IDSuiteSPにSAML通信用証明書として登録した
公開鍵証明書ファイルを選択してください

 


入力が完了したら、最下部の保存を押下します。

 

次にイントラネットにあるWebアプリに対するSSO連携設定を行います。
シングルサインオン>リバースプロキシ より設定を行ってください。

入力する内容は下記の通りです。

リバースプロキシ設定
項目
アプリケーションID 任意のID
アプリケーション名 任意の名前
プロキシサーバーのホスト名 IDSuiteSPを構築したサーバー
プロキシのパス /LoginServlet/
プロキシ先 https://testservlet.test.secioss.com/LoginServlet/
ログインフォームの取得 無効
認証方式 フォーム認証
セッションのクッキー名 JSESSIONID
クッキーのパス /LoginServlet
ログインURL https://testservlet.test.secioss.com/LoginServlet/Login
アクセス先パス /LoginServlet/Welcome
ユーザーIDの属性名 サービス個別のログインID
アプリケーションのパスワード サービス個別のパスワード
ユーザーIDのパラメータ userName
パスワードのパラメーター password

 

連携を行うユーザを作成し、許可するサービスに先程作成したサービスを追加してください。

そのままではアクセス権限がないので、
アクセス権限設定を開き、先程作成したサービスにチェックを入れてください。

最後に、SeciossLinkで作成したリバースプロキシ設定をIDSuiteSPへ同期します。
再度IDSuiteSPを構築したサーバーにて、以下のスクリプトを実行してください。

/opt/secioss/sbin/updaterpconf_api

 

必要に応じてcronに登録しておくとスクリプトを手動で実行する必要がなく、おすすめです。

vi /etc/cron.d/updaterpconf_api.cron

# 15分おきに SeciossLink から リバースプロキシ設定を取得する
*/15 * * * * root /opt/secioss/sbin/updaterpconf_api

ここまでで管理者としての作業は終了です。

 

サービスを付与したユーザでユーザーポータルへログインしてください。

サブメニューより「連携サービス用のID登録」と「連携先サービス用のパスワード登録」を行います。

設定が完了したら一度ログアウトしてください。
ここまでの設定で準備完了です。お疲れさまでした。

 

再度ユーザポータルへログインし、表示されているアイコンを選択してください。
うまく設定ができていればログインが必要なサンプルのWebアプリでID、パスワードを求められず、ログイン後のページが表示されるはずです。

いかがでしたでしょうか。
社内ネットワークからしか入れないwebアプリに対してSSOできる様になりました。
この設定の他にFIDO認証やワンタイムパスワード認証を混ぜることで
更にセキュアな利用が可能になるかと思います。
今後共セシオスリンクをよろしくお願いいたします。

以上、セシオスサポートチームでした。

最新記事

カテゴリ

アーカイブ

%d人のブロガーが「いいね」をつけました。