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

schedule 2020/04/03  refresh 2023/11/09

 

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

 

イントラネットの中に存在する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へアクセスします。
  • 社内アプリを利用できるユーザーなのか、SAMLの認証シーケンスに沿ってSeciossLinkで認証を行わせます。
  • SeciossLinkログイン画面が表示されるので、ログイン情報を入力します。
  • 認証結果がIDSuiteSPへ渡り、社内アプリを利用できるユーザであることが判明したので、
    社内アプリに対して代理認証機能により認証情報引き継ぎ処理を行います。
  • リバースプロキシ機能によって社内アプリからのレスポンスがIDSuiteSPへ渡されます。
  • IDSuiteSPからユーザへ社内アプリの画面が渡ります。

 

正直なところリバプロを使って社内アプリを利用するだけなら、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サービスへログインを行ってみたいと思います。
今後共セシオスリンクをよろしくお願いいたします。

 

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