5.2. 配置 PicketLink STS
PicketLink STS 定义了几个接口来提供扩展功能,实现可以通过配置进行插入,一些属性的默认值也可以通过配置来指定。所有的 PicketLink STS 配置都必须在
picketlink-sts.xml 文件里指定。下面是可以在 picketlink-sts.xml 文件里进行配置的元素。
注意
在下面的文本里,服务提供者引用要求客户出示安全令牌的 Web 服务。
PicketLinkSTS:这是根元素。它定义允许 STS 管理者设置下列值的属性:STSName:代表安全令牌服务名称的字符串。如果没有指定,默认值PicketLinkSTS将被使用。TokenTimeout:以秒为单位的令牌生命周期。如果没有指定,默认值3600(1小时)将被使用。EncryptToken:布尔值,指定发出的令牌是否加密。默认值为 false。
KeyProvider:这个元素及其子元素配置 PicketLink STS 用来签注和加密令牌的密钥库。密钥库位置、密码和签注(私有密钥)别名和密码等属性都可以在这个部分进行配置。RequestHandler:这个元素指定要使用的WSTrustRequestHandler实现的权限定名。如果没有指定,默认值org.picketlink.identity.federation.core.wstrust.StandardRequestHandler将被使用。SecurityTokenProvider:这个部分指定必需用来处理每种安全令牌的SecurityTokenProvider实现。在这个例子里,我们有两个提供者 - 一个处理类型为SpecialToken的令牌而另外一个处理类型为StandardToken的令牌。WSTrustRequestHandler调用STSConfiguration的getProviderForTokenType(String type) 方法来获得对合适的SecurityTokenProvider的引用。TokenTimeout:当在 WS-Trust 请求里没有指定生命周期时,WSTrustRequestHandler使用它。它创建一个以当前时间为创建时间且在指定的时间后过期的 Lifetime 实例。ServiceProviders:这个部分指定必须用于每个服务提供者(要求安全令牌的 Web 服务)的令牌类型。当 WS-Trust 请求没有包含令牌类型时,WSTrustRequestHandler必须使用服务提供者端点来确定要发出的令牌的类型。EncryptToken:WSTrustRequestHandler用它来决定发出的令牌是否必须加密。如果为 true,服务提供者的公共密钥证书(PKC)将被用来加密这个令牌。
下面是一个 PicketLink STS 配置的例子。
例 5.3. PicketLink 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>