3.3. STS を使用した SSO
JBoss EAP は、STS に接続するためのログインモジュールを複数提供します。STS (PicketLinkSTS
) として実行することも可能です。PicketLinkSTS
は他のセキュリティートークンサービスへ複数のインターフェイスを定義し、拡張ポイントを提供します。設定を使用して実装をプラグインでき、設定を介してデフォルト値を一部のプロパティーに指定できます。PicketLinkSTS
はセキュリティートークンを生成および管理しますが、特定タイプのトークンを発行しません。この代わりに、複数のトークンプロバイダーをプラグインできる汎用のインターフェイスを定義します。そのため、各トークンタイプのトークンプロバイダーが存在する場合、さまざまなタイプのトークンに対応するよう設定することができます。また、セキュリティートークンのリクエストと応答の形式も指定します。
以下の手順は、JBoss EAP の STS を使用した場合にセキュリティートークンリクエストが処理される順序を表します。
-
クライアントはセキュリティートークンリクエストを
PicketLinkSTS
に送信します。 -
PicketLinkSTS
はリクエストメッセージを解析し、Jakarta XML Binding オブジェクトモデルを生成します。 -
PicketLinkSTS
は設定ファイルを読み取り、必要な場合はSTSConfiguration
オブジェクトを作成します。設定からWSTrustRequestHandler
への参照を取得し、リクエストの処理をハンドラーインスタンスに委譲します。 -
リクエストがトークンのライフタイム値を指定しない場合など、リクエストハンドラーは必要であれば
STSConfiguration
を使用してデフォルト値を設定します。 -
WSTrustRequestHandler
はWSTrustRequestContext
を作成し、PicketLinkSTS
から受信した Jakarta XML Binding リクエストオブジェクトと呼び出し元プリンシパルを設定します。 -
WSTrustRequestHandler
はSTSConfiguration
を使用して、リクエストされたトークンタイプを基にリクエストを処理するために使用する必要があるSecurityTokenProvider
を取得します。これにはプロバイダーが関係し、構築されたWSTrustRequestContext
をパラメーターとして渡します。 -
SecurityTokenProvider
インスタンスはトークンリクエストを処理し、発行されたトークンをリクエストコンテキストに格納します。 -
WSTrustRequestHandler
はコンテキストからトークンを取得し、必要な場合は暗号化して、セキュリティートークンが含まれる WS-Trust 応答オブジェクトを構築します。 -
PicketLinkSTS
はリクエストハンドラーによって生成された応答を書き取り、クライアントへ返します。
STS ログインモジュール (STSIssuingLoginModule、STSValidatingLoginModule、 SAML2STSLoginModule など) は、通常はユーザーの認証に STS を使用するよう、セキュリティーセットアップの一部として設定されます。STS はログインモジュールと同じコンテナーに配置するか、web サービス呼び出しや別の技術を使ってリモートでアクセスすることができます。