13.2. セキュリティートークンサービス(STS)の設定
EAP Security Token Service(STS)は、拡張ポイントを提供する複数のインターフェースを定義します。設定を使用して実装をプラグインでき、設定を介してデフォルト値を一部のプロパティーに指定できます。すべての STS 設定は、デプロイされたアプリケーションの
WEB-INF ディレクトリーにある picketlink.xml ファイルに指定されます。以下は、picketlink.xml ファイルで設定できる要素です。
注記
以下のテキストでは、サービスプロバイダー は、クライアントによるセキュリティートークンの表示を必要とする Web サービスを参照します。
PicketLinkSTS: これはルート要素です。STS 管理者が以下のデフォルト値を設定できるようにするプロパティーを定義します。STSName: セキュリティートークンサービスの名前を表す文字列。指定のない場合は、デフォルトのPicketLinkSTS値が使用されます。TokenTimeout: トークンの有効期間の値(秒単位)。指定されていない場合は、デフォルト値の 3600(1 時間)が使用されます。EncryptToken: 発行されたトークンを暗号化するかどうかを指定するブール値。デフォルト値は false です。
KeyProvider: この要素とそのすべてのサブ要素は、トークンに署名および暗号化するために PicketLink STS によって使用されるキーストアを設定するために使用されます。このセクションでは、キーストアの場所、パスワード、署名 (秘密鍵) のエイリアス、パスワードなどのプロパティーをすべて設定します。RequestHandler: この要素は、使用されるWSTrustRequestHandler実装の完全修飾名を指定します。指定のない場合は、デフォルトのorg.picketlink.identity.federation.core.wstrust.StandardRequestHandlerが使用されます。TokenProvider: このセクションは、各種類のセキュリティートークンを処理するために使用する必要があるTokenProvider実装を指定します。この例では、2 つのプロバイダー(SpecialTokenタイプのトークンとSAMLV2.0タイプのトークンを処理するプロバイダー)があります。WSTrustRequestHandlerは、getProviderForTokenTypeのSTSConfiguration(String type)メソッドを呼び出して、適切なTokenProviderへの参照を取得します。TokenTimeout: これは、WS-Trust リクエストに lifetime が指定されていない場合にWSTrustRequestHandlerによって使用されます。これは、作成時間として現在の時間が含まれる Lifetime インスタンスを作成し、指定の秒数後に有効期限が切れます。ServiceProviders: このセクションでは、各サービスプロバイダー(セキュリティートークンを必要とする Web サービス)に使用する必要があるトークンタイプを指定します。WS-Trust リクエストにトークンタイプが含まれていない場合、WSTrustRequestHandlerはサービスプロバイダーエンドポイントを使用して発行する必要のあるトークンのタイプを検出する必要があります。EncryptToken: これは、発行されたトークンを暗号化する必要があるかどうかを判断するためにWSTrustRequestHandlerによって使用されます。true の場合、サービスプロバイダーの公開鍵証明書(PKC)を使用してトークンを暗号化します。
以下は STS 設定の例になります。
例13.3 STS 設定
<PicketLinkSTS xmlns="urn:picketlink:identity-federation:config:1.0"
STSName="Test STS" TokenTimeout="7200" EncryptToken="true">
<KeyProvider ClassName="org.picketlink.identity.federation.bindings.tomcat.KeyStoreKeyManager">
<Auth Key="KeyStoreURL" Value="keystore/sts_keystore.jks"/>
<Auth Key="KeyStorePass" Value="testpass"/>
<Auth Key="SigningKeyAlias" Value="sts"/>
<Auth Key="SigningKeyPass" Value="keypass"/>
<ValidatingAlias Key="http://services.testcorp.org/provider1" Value="service1"/>
<ValidatingAlias Key="http://services.testcorp.org/provider2" Value="service2"/>
</KeyProvider>
<RequestHandler>org.picketlink.identity.federation.core.wstrust.StandardRequestHandler</RequestHandler>
<TokenProviders>
<TokenProvider ProviderClass="org.picketlink.test.identity.federation.bindings.wstrust.SpecialTokenProvider"
TokenType="http://www.tokens.org/SpecialToken"/>
<TokenProvider ProviderClass="org.picketlink.identity.federation.api.wstrust.plugins.saml.SAML20TokenProvider"
TokenType="http://docs.oasis-open.org/wss/oasis-wss-saml-token-profile-1.1#SAMLV2.0"/>
</TokenProviders>
<ServiceProviders>
<ServiceProvider Endpoint="http://services.testcorp.org/provider1" TokenType="http://www.tokens.org/SpecialToken"
TruststoreAlias="service1"/>
<ServiceProvider Endpoint="http://services.testcorp.org/provider2" TokenType="http://docs.oasis-open.org/wss/oasis-wss-saml-token-profile-1.1#SAMLV2.0"
TruststoreAlias="service2"/>
</ServiceProviders>
</PicketLinkSTS>