ブログ|株式会社セシオス

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

作成者: 株式会社セシオス|Apr 3, 2020 3:00:37 AM

 

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

 

イントラネットの中に存在するWebアプリに対してMicrosoft365やGoogle Workspaceなどと同様にSSOができないか、とお考えの方に弊社から提供しているソフトウェア「Secioss Identity Suite Cloud Edition SP」(以降IDSuiteSPと略します)をご紹介したいと思います。

 

ID Suite SP は、SeciossLinkとSAML未対応のシステムとの間でシングルサインオンやID同期を行うためのソフトウェアです。

 

SAML通信におけるService Providerとして動作し、SeciossLinkとSAML認証によるシングルサインオンを行うソフトウェアです。イントラシステムにはIdentity Suite Cloud SPから代理認証機能により認証情報を引き渡します。

また ID Suite SP のダウンロード方法については弊社までお問い合わせください。

 

それでは早速、ID Suite SP を使ってイントラネットのウェブアプリに対してSSO環境を構築してみたいと思いますが、まずはサンプルウェブアプリの構築から行います。

 

 

シングルサインオン構想


ユーザーは外部ネットワークからイントラネットに存在する、認証が必要なWebアプリケーションを利用します。

 

 

正直なところリバプロを使って社内アプリを利用するだけなら、IDSuiteSPを利用する価値は低く作り込みでなんとかなります。
が、IDSuiteSPを利用することによって、社内アプリをMicrosoft365やGoogle Workspaceなどのクラウドサービスと同じシングルサインオンの輪の中に入れることができます。

 

また、SeciossLinkの機能によって、認証時にFIDOによる指紋認証、ワンタイムトークンパスワードによる認証など、多要素認証を使って社内アプリを利用させることができるようになります。

 

 

-サンプルウェブアプリ構築-

 

yum install httpd java-1.8.0-openjdk-devel -y

 

Tomcat の8.5をインストールします。

 

curl -OL http://ftp.kddilabs.jp/infosystems/apache/tomcat/tomcat-8/v8.5.53/bin/apache-tomcat-8.5.53.tar.gz
tar zxvf apache-tomcat-8.5.53.tar.gz

 

LoginServlet という簡単なログインアプリを作りました。
ログインページとログイン処理を行うかなり適当なアプリです。
以下のURLよりダウンロードし、scpなどで対象のサーバーへ転送してください。

 

https://drive.google.com/open?id=1AomUmLcy3av8_3jJfh83AXzORz8T2kW4

 

tomcatにデプロイします。
ダウンロードしたwarファイルを解答したtomcatのwebappsディレクトリ配下において下さい。

 

cp ./LoginServlet.war ./apache-tomcat-8.5.53/webapps/

 

ajpコネクタ有効化
tomcatにはajpというプロトコルによる通信ができます。
ajpを用いることでtomcatのようなwebコンテナの前段にapacheやnginxを置くことができます。

 

vi ~/apache-tomcat-8.5.53/conf/server.xml

 

編集内容ですが、ajpコネクタ機能は標準でコメントアウトされているので、
下記に示す記述を探してコメントインして下さい。
また、いつのバージョンからか「secretRequired」というオプションが
必須設定になっており、各所で問題になっているので今回はfalseにします。

 

 

<!-- Define an AJP 1.3 Connector on port 8009 -->
<Connector protocol="AJP/1.3"
address="::1"
port="8009"
redirectPort="8443"
secretRequired="false" />

 

参照:
Apache Tomcat 8 - Security Considerations

 

それではtomcatの前に置くapache の設定を行っていきます。
apacheモジュール確認

 
cat /etc/httpd/conf.modules.d/00-proxy.conf

下記の記述があることを確認してください。
cent7.7などは標準で有効になっているはずです。
もしコメントアウトがあれば外して下さい。
 
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_ajp_module modules/mod_proxy_ajp.so

 

tomcatと連携する設定を書きます。

 
vi /etc/httpd/conf.d/tomcat.conf
 
以下の一行だけで十分です。
apacheもtomcatも同居なのでlocalhostです。
 
ProxyPass /LoginServlet/ ajp://localhost:8009/LoginServlet/

 

穴あけ
ポートを開けます。

 
firewall-cmd --add-port=80/tcp --zone=public --permanent
firewall-cmd --reload
firewall-cmd --list-all

 

それでは立ち上げて見ましょう。

 
systemctl start httpd
./apache-tomcat-8.5.53/bin/startup.sh

 

ログを確認してみると、デプロイしている様子がわかります。
標準設定の場合warファイルのデプロイを勝手にやってくれます。楽ちんですね。
ログを確認してみます。

 
less ./apache-tomcat-8.5.53/logs/catalina.out

 

デプロイを行っている場合には以下の様なログが出ます。

 

情報 [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployWAR Webアプリケーションアーカイブ [/root/apache-tomcat-8.5.53/webapps/LoginServlet.war] を配備します

 

起動したら、下記URLでアクセスします。

 
https://対象サーバー/LoginServlet

 

ログインページ


こんな画面が出たら、構築完了です。

 

ちなみにログインできるアカウントはソースにベタ書きです。
ID:admin
PASS:admin

 

ログイン後ページ

 

お疲れさまでした。
ただのtomcat記事になってしまいましたが、
次回からは実際にIDSuiteSPを構築して、
seciosslinkからリバプロを経由してWEBサービスへログインを行ってみたいと思います。
今後共セシオスリンクをよろしくお願いいたします。

 

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