Systemwalker Service Catalog Manager経由でのアクセス(ログインアクセス)を選択した場合は、アプリケーションのログイン・ログアウトの実装を修正し、プロビジョニングサービスAPIが提供するメソッドを実装する必要があります。
ログインおよびログアウトに必要な機能は、トークンハンドラー、カスタムログインモジュール、カスタムログアウトモジュール、ログアウトリスナに分かれます。
利用者トークンからの利用者IDの解決をSystemwalker Service Catalog Managerに要求します。そして、セッションオブジェクトを作成して利用者IDをそのオブジェクトに保存します。さらに、解決済み利用者トークンを含んだ要求をカスタムログインモジュールに転送します。
利用者に追加の認証を要求せずに、アプリケーションへのログインを許可します。利用者は、Systemwalker Service Catalog Managerによってすでに認証されているため、追加の認証は不要です。このため、たとえばカスタムログインモジュールが利用者名と省略時のパスワードをアプリケーションに渡すなどの処理をおこないます。すべてのログインを確実にSystemwalker Service Catalog Manager経由でおこなうには、アプリケーションへの直接ログインを無効にするなどの必要があります。
アプリケーション側の利用者のセッションを終了し、利用者をアプリケーションが提供するログアウトページにリダイレクトします。ログアウトページのURLは、Systemwalker Service Catalog ManagerのセッションサービスのdeleteServiceSessionメソッドの戻り値です。
利用者がログアウトしたとき、またはセッションのタイムアウトが発生したとき、その旨をSystemwalker Service Catalog Managerに通知します。
カスタムログインモジュールとカスタムログアウトモジュールについては、既存のアプリケーションの機能を分析し、必要な動作に適合するように変更する必要があります。
その他の機能については、インテグレーションヘルパーと呼ばれるJavaで実装したWebアプリケーションパッケージIntegrationhelper.warをSystemwalker Service Catalog Managerでは提供しています。このパッケージは、直ちに利用できるトークンハンドラとログインリスナを含んでいます。これにより、JavaベースのWebアプリケーションのログイン・ログアウトの実装の変更をサポートします。インテグレーションヘルパーは、Systemwalker Service Catalog Managerのインテグレーションパッケージで提供されます。
Integrationhelper.warパッケージは以下を含みます。
パッケージの内容 | 説明 |
---|---|
tokenhandler.jsp | JSPとして実装したトークンハンドラー。 |
WEB-INF/lib | Systemwalker Service Catalog Managerのインテグレーションヘルパーが使用する、すべてのJARファイルを保存したフォルダ。 |
WEB-INF/classes/tokenhandler.properties | Systemwalker Service Catalog Managerが提供するWebサービスへの完全URL(例: https://myServer:8081/ServiceProvisioningService/v1.4/BASIC?wsdl)と、アプリケーションが提供するカスタムログインモジュールの相対URLを指定したプロパティファイル。カスタム・ログインモジュールはトークンハンドラーと同じマシン上の同じコンテキスト上に登録する必要があります。 |
WEB-INF/web.xml | トークンハンドラー・サーブレットとログアウトリスナへのエントリーを定義した設定ファイルのサンプル。 |
WEB-INF/classes/com/fujitsu/bes/integrationhelper/LogoutListener.class | ログアウトリスナのクラス |
インテグレーションヘルパーで提供するトークンハンドラとログアウトリスナーの機能を、以下の図に示します(グレーで示されているコンポーネントが、Systemwalker Service Catalog Managerで提供されるものです)。
インテグレーションヘルパーは、JavaベースのあらゆるWebアプリケーションから利用できます。トークンハンドラーはJavaサーブレットおよびJSPとして実装されています。ログアウトリスナはセッションリスナとして実装されています。
Java以外の言語で開発したアプリケーションの場合は、以下のオペレーションを呼び出すトークンハンドラーとログアウトリスナを新たに実装してください(“第2章 プラットフォームサービス”を参照)。
resolveUserToken:Systemwalker Service Catalog Managerに利用者トークンの解決を要求する。
deleteServiceSession:ログアウトやセッションタイムアウトをSystemwalker Service Catalog Managerに通知する。
ログイン要求のHTTPパラメーター
Systemwalker Service Catalog Managerが送信するログイン要求は、次のHTTPパラメーターを含んでいます。
usertoken(String)
利用者トークン。saasIdパラメーターと併用して利用者IDの解決に使用します。
saasId(String)
アプリケーションがSystemwalker Service Catalog Managerと通信を継続するために必要なID。このIDはSystemwalker Service Catalog Managerが生成します。
instanceId(String)
アプリケーション側で、購入済サービスに属する何らかの項目を識別するためのID。このIDはアプリケーションが生成し、インスタンスのプロビジョニング呼び出し時にSystemwalker Service Catalog Managerへ返します。プロビジョニングサービスを実装する際には、インスタンスIDをプロビジョニングサービスで生成する必要があります。
subKey(String)
購入済サービスを識別するためのキー。Systemwalker Service Catalog Managerのイベント管理と統合する際、recordEventForSubscriptonメソッドでこのキーを使用します。
language(String)
利用者が使用している言語。
contextPath (String)
アプリケーション特有のコンテキスト。省略可能です。
インテグレーションヘルパーのWebアプリケーションへの統合
インテグレーションパッケージに含まれるIntegrationhelper.warパッケージを任意の場所に解凍します。
必要に応じて、tokenhandler.propertiesファイル内の以下の情報を変更します。
Systemwalker Service Catalog ManagerのパブリックWebサービスAPIのポート番号
カスタムログインモジュールのパス
WEB-INF/libフォルダとWEB-INF/classesフォルダの内容を、Webアプリケーション内の対応するフォルダにコピーします。
次のいずれかを実行します。
JSPベースのトークンハンドラーを使用する場合は、Tokenhandler.jspファイルをWebアプリケーションにコピーします。
サーブレットベースのトークンハンドラーを使用する場合は、Webアプリケーションのweb.xmlファイルにトークンハンドラーを登録します。
Integrationhelper.warパッケージが提供するサンプルファイルweb.xmlからservletの要素とservlet-mappingの要素をコピーし、Webアプリケーションのweb.xmlファイルに挿入すれば、トークンハンドラーを登録できます。
Webアプリケーションのweb.xmlファイルにログアウトリスナを登録します。
Integrationhelper.warパッケージが提供するサンプルファイルweb.xmlのlistenerの要素をコピーし、Webアプリケーションのweb.xmlファイルに挿入すれば、ログアウトリスナを登録できます。
ログインアクセスの場合には、アプリケーションの技術サービス定義のloginPath属性に、トークンハンドラーのパスを登録してください。
詳細は“運用ガイド(技術サービス開発部門編)”を参照してください。
例
ここでは、JSPベース、あるいはサーブレットベースのカスタムログインモジュールを、利用者トークンが解決したあとに呼び出す場合の例を紹介します。カスタムログインモジュールは/DoAutoLoginフォルダにWebリソースとして用意してあります。Webアプリケーションはコンテキストmyapplicationを使用し、サーバmyserverのポート7777で作動しています。Systemwalker Service Catalog ManagerのパブリックWebサービスはポート8081を開いています。
このような場合、サーブレットベースおよびJSPベースのトークンハンドラーの構成ファイルの例は、それぞれ以下のとおりです。
サーブレットベースのトークンハンドラー
tokenhandler.properties
TOKENHANDLER_BSS_HOST=https://myserver:8081/SessionService/v1.4/BASIC?wsdl
TOKENHANDLER_FORWARD=/DoAutoLogin
web.xml
... <servlet> <display-name>TokenhandlerServlet</display-name> <servlet-name>TokenhandlerServlet</servlet-name> <servlet-class>com.fujitsu.bss.integrationhelper.TokenhandlerServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>TokenhandlerServlet</servlet-name> <url-pattern>/resolveToken</url-pattern> </servlet-mapping> <listener> <listener-class>com.fujitsu.bss.integrationhelper.LogoutListener</listener-class> </listener> ...
技術サービス定義
... <TechnicalService id="SampleService" baseUrl="https://myserver.example.com:7777/myservice" loginPath="/resolveToken" ... > ...
JSPベースのトークンハンドラー
tokenhandler.properties
TOKENHANDLER_BSS_HOST=https://myserver:8081/SessionService/v1.4/BASIC?wsdl TOKENHANDLER_FORWARD=/DoAutoLogin
web.xml
... <listener> <listener-class>com.fujitsu.bss.integrationhelper.LogoutListener</listener-class> </listener> ...
技術サービス定義
... <TechnicalProduct id="SampleService" baseUrl="https://myserver.example.com:7777/myservice" loginPath="/Tokenhandler.jsp" ... > ...