BP営業支援ウェブサービス / セキュリティ


BP営業支援ウェブサービス

このサービスでのセキュリティ確保について

今回のアプリケーションは、実際に業務に関する情報のやり取りがあるシステムなので、セキュリティ面を十分に留意してやる必要があります。 ウェブサービスの世界には実際に業務に使えるレベルのセキュリティを確保するために、セキュリティに関するいくつもの標準規格が存在します。

  • WS-Security
  • XKMS
  • SAML
  • などなど

今回の開発では、WS-Securityのみを採用し、認証/認可の仕組みを実装します。将来はWS-Securityに加え、SAML、XKMSを使用したよりセキュアな環境を実現します。

認証/認可の仕組みのみを採用することになるため、通信自体のセキュリティは別の方法で確保する必要があります。そのために、Webで一般的なSSLを使用します。

実現方法

セキュリティを確保すべきサービス間の通信と、確保の必要のないサービスと両方が同一サーバに混在するため、SSL通信を適用するサービスとそうでないサービスを区別する必要があります。 今回は、Tomcat側でServiceを2つ起動するようにし、片側を通常のHTTP、片側をHTTPS(SSL)でのみアクセスする様にmod_jkの設定を行います。

Tomcatの設定

server.xmlで2つのServiceを設定します。 まず、従来のService要素の内容をコピーし、2つめのService要素を作成します。さらに、Serviceのname属性、Connectorのport属性、Engineのname属性、HostのappBase属性などを1つめの設定から変更し、設定した項目にあわせてディレクトリを作成しておきます。

mod_jkの設定

server.xmlで作成した2つのServiceに、SSL通信を行うものと行わないものとで振り分けるように設定します。

#通常のサービス
[channel.socket:localhost:<secureでない方のポート>]
[ajp13:localhost:<secureでない方のポート>]
channel=channel.socket:localhost:<secureでない方のポート>
[uri:/<secureでなくていいサービス/アプリ>]
worker=ajp13:localhost:<secureでない方のポート>
#セキュアなサービス
[channel.socket:localhost:<secureな方のポート>]
[ajp13:localhost:<secureな方のポート>]
channel=channel.socket:localhost:<secureな方のポート>
[uri:/<secureにしたいサービス/アプリ>]
worker=ajp13:localhost:<secureな方のポート>

サービスのデプロイ

server.xmlの設定によって、セキュアなサービスをデプロイすべき場所が変更になっているはずです。 従来のwebappsではなく、セキュアなServiceの設定にしたがって作成したディレクトリにwarファイルを置くようにします。