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