WSSecurity 策略和绑定属性
使用 setPolicyType 和 setBinding 命令的 attributes 参数为 WSSecurity 策略和绑定配置指定更多配置信息。 应用程序和系统策略集可以使用 WSSecurity 策略和绑定配置。
在使用此主题中的命令之前,请验证是否在使用 wsadmin 工具的最新版本。 将属性对象作为 attributes 或 bindingLocation 参数的值来接受的策略集管理命令不受 wsadmin 工具的先前版本支持。 例如,这些命令不在 V6.1.0.x 节点上运行。
- 将 -attributes 参数用于 getPolicyType 和 getBinding 命令以查看策略和绑定配置的属性。 要获取属性,请将属性名传递至 getPolicyType 或 getBinding 命令。
- 将 -attributes 参数用于 setPolicyType 和 setBinding 命令以在策略和绑定配置中添加、更新或除去属性。 要添加或属性更新,请指定属性名和属性值。 如果该属性存在,那么 setPolicyType 和 setBinding 命令更新该值;如果该属性不存在,那么会添加该属性及值。 要删除属性,请将值指定为空字符串 ("")。 -属性参数接受一个属性对象。
为了支持混合单元环境,WebSphere Application Server 支持 V7.0 和 V6.1 绑定。 常规单元级别绑定是特定于 V7.0 和更高版本的绑定。特定于应用程序的绑定保留在该应用程序所需要的版本处。 当用户创建特定于应用程序的绑定时,应用程序服务器将决定要用于应用程序所必需的绑定版本。
SignatureProtection.response:
int_body.SignedParts.Body,SignatureProtection.response:int_body.SignedParts.Header_0.Name和SignatureProtection.response:int_body.SignedParts.Header_0.NamespaceWSSecurity 策略属性
- AsymmetricBinding
- 您可以不指定或者最多指定一个绑定声明。
- SymmetricBinding
- 您可以不指定或者最多指定一个绑定声明。 AsymmetricBinding 和 SymmetricBinding 不能共存于同一个安全策略文件。
- Wss11
- 您可以不指定或者最多指定一个 Wss11 声明。
- Wss10
- 您可以不指定或者最多指定一个 Wss10 声明。
- Trust10
- 您可以不指定或者最多指定一个 Trust10 声明。
- SignatureProtection
- 您可以不指定或者指定任意数目的签名保护声明。
- EncryptionProtection
- 您可以不指定或者指定任意数目的加密保护声明。
- SupportingTokens
- 您可以不指定或者指定任意数目的支持令牌声明。
<sp:AsymmetricBinding>
<wsp:Policy>
<sp:InitiatorSignatureToken>
<wsp:Policy>
<sp:X509Token sp:IncludeToken="http://docs.oasis-open.org/ws-sx/ws-securitypolicy
/200512/IncludeToken/AlwaysToRecipient">
<wsp:Policy>
<sp:WssX509V3Token10 />
</wsp:Policy>
</sp:X509Token>
</wsp:Policy>
</sp:InitiatorSignatureToken>
<sp:RecipientSignatureToken>
<wsp:Policy>
<sp:X509Token sp:IncludeToken="http://docs.oasis-open.org/ws-sx/ws-securitypolicy
/200512/IncludeToken/AlwaysToInitiator">
<wsp:Policy>
<sp:WssX509V3Token10 />
</wsp:Policy>
</sp:X509Token>
</wsp:Policy>
</sp:RecipientSignatureToken>
<sp:AlgorithmSuite>
<wsp:Policy>
<sp:Basic256/>
</wsp:Policy>
</sp:AlgorithmSuite>
<sp:Layout>
<wsp:Policy>
<sp:Strict/>
</wsp:Policy>
</sp:Layout>
</wsp:Policy>
</sp:AsymmetricBinding><sp:AsymmetricBinding>
<wsp:Policy>
<sp:InitiatorSignatureToken>
<wsp:Policy>
<sp:X509Token sp:IncludeToken="http://docs.oasis-open.org/ws-sx/ws-securitypolicy
/200512/IncludeToken/AlwaysToRecipient">
<wsp:Policy>
<sp:WssX509V3Token10 />
</wsp:Policy>
</sp:X509Token>
</wsp:Policy>
</sp:InitiatorSignatureToken>
<sp:RecipientSignatureToken>
<wsp:Policy>
<sp:X509Token sp:IncludeToken="http://docs.oasis-open.org/ws-sx/ws-securitypolicy
/200512/IncludeToken/AlwaysToInitiator">
<wsp:Policy>
<sp:WssX509V3Token10 />
</wsp:Policy>
</sp:X509Token>
</wsp:Policy>
</sp:RecipientSignatureToken>
</wsp:Policy>
<sp:AlgorithmSuite>
<wsp:Policy>
<sp:Basic256/>
</wsp:Policy>
</sp:AlgorithmSuite>
<sp:Layout>
<wsp:Policy>
<sp:Strict/>
</wsp:Policy>
</sp:Layout>
</sp:AsymmetricBinding>
AsymmetricBinding.Layout = Strict
AsymmetricBinding.AlgorithmSuite.Basic256 = true
AsymmetricBinding.RecipientSignatureToken.X509Token_0.IncludeToken = http://docs.oasis-open.org
/ws-sx/ws-securitypolicy/200512/IncludeToken/AlwaysToInitiator
AsymmetricBinding.InitiatorSignatureToken.X509Token_0.WssX509V3Token10 = true
AsymmetricBinding.InitiatorSignatureToken.X509Token_0.IncludeToken = http://docs.oasis-open.org
/ws-sx/ws-securitypolicy/200512/IncludeToken/AlwaysToRecipient
AsymmetricBinding.RecipientSignatureToken.X509Token_0.WssX509V3Token10 = true
<sp:SupportingTokens>
<wsp:Policy wsu:Id="request:custom_auth">
<spe:CustomToken sp:IncludeToken="http://docs.oasis-open.org/ws-sx/
ws-securitypolicy/200512/IncludeToken/AlwaysToRecipient">
<wsp:Policy>
<spe:WssCustomToken uri=http://bar.com/MyCustomToken localname="tokenv1">
</spe:WssCustomToken>
</wsp:Policy>
</spe:CustomToken>
</wsp:Policy>
</sp:SupportingTokensSupportingTokens.request:custom_auth.CustomToken_0.WssCustomToken.uri=http://bar.com
/MyCustomToken
SupportingTokens.request:custom_auth.CustomToken_0.IncludeToken=http://docs.oasis-open.org
/ws-sx/ws-securitypolicy/200512/IncludeToken/AlwaysToRecipient
SupportingTokens.request:custom_auth.CustomToken_0.WssCustomToken.localname=tokenv1
- wsu:Id 元素此元素使用 ID 的实际值而不使用 Id 作为属性名。 以下策略文件示例属性:
前面的 wsu:Id 示例将返回下列属性:<wsp:Policy wsu:Id="response:int_body"> <sp:SignedParts> <sp:Body/> </sp:SignedParts> </wsp:Policy>SignatureProtection.response:int_body.SignedParts.Body = true - Header 元素因为可能存在多个 Header 元素,所以使用 Header_n 表示法来表示此属性。 请参阅以下策略文件示例:
前面的 Header 示例将返回下列属性:<wsp:Policy wsu:Id="request:conf_body"> <sp:EncryptedParts> <sp:Body/> <sp:Header Name="MyElement" Namespace="http://foo.com/MyNamespace" /> </sp:EncryptedParts> </wsp:Policy>EncryptionProtection.request:conf_body.EncryptedParts.Header_0.Name=MyElement EncryptionProtection.request:conf_body.EncryptedParts.Header_0.Namespace=http:// foo.com/MyNamespace - XPath 元素因为可能存在多个 XPath 元素,所以使用 XPath_n 表示法来表示此属性。 请参阅以下策略文件示例:
前面的 XPath 示例将返回下列属性:<wsp:Policy wsu:Id="request:int_body"> <sp:SignedElements> <sp:XPath>SomeXPathExpression</sp:XPath> <sp:XPath>SomeOtherXPathExpression</sp:XPath> </sp:EncryptedElements> </wsp:Policy>SignatureProtection.request:int_body.SignedElements.XPath_0=SomeXPathExpression SignatureProtection.request:int_body.SignedElements.XPath_1=SomeOtherXPathExpression - X509Token 元素
因为可能存在多个 X509Token 元素,所以使用 X509Token_n 表示法来表示此属性。 有关示例,请参阅 AsymmetricBinding 声明。
- CustomToken 元素
因为可能存在多个 CustomToken 元素,所以使用 CustomToken_n 表示法来表示此属性。 有关示例,请参阅 SupportingTokens 声明。
WSSecurity 绑定属性
使用 getBinding 命令来复查具有在当前 WSSecurity 绑定配置中配置的属性的属性对象。 还可以使用管理控制台来配置 WSSecurity 绑定。 请使用管理控制台配置 WSSecurity 绑定的文档主题来获取更多信息。
本节中定义的属性反映了绑定模式的层次结构。 属性名的每一部分都是模式类型的小写形式。 例如,application.securityinboundbindingconfig.tokenconsumer_0.jaasconfig.configname 属性采用的就是分层格式。 属性以 application 或 bootstrap 开头。 以 application 开头的属性表示与主要 WS-Security 策略相关联的绑定。 以 bootstrap 开头的属性表示与 WS-Security 自举策略相关联的绑定,而 WS-Security 策略使用“安全对话”。
application.securityinboundbindingconfig.tokenconsumer_0.callbackhandler.
certpathsettings.certstoreref.reference
application.securityinboundbindingconfig.tokenconsumer_0.callbackhandler.
certpathsettings.trustanchorref.reference
application.securityinboundbindingconfig.tokenconsumer_0.callbackhandler.classname
application.securityinboundbindingconfig.tokenconsumer_0.classname
application.securityinboundbindingconfig.tokenconsumer_0.jaasconfig.configname
application.securityinboundbindingconfig.tokenconsumer_0.name
application.securityinboundbindingconfig.tokenconsumer_0.valuetype.localname
application.securityinboundbindingconfig.tokenconsumer_0.valuetype.uri此外,安全绑定文件中的某些属性返回值true当被问到时。 要设置这些属性,请将值设置为true来包含该属性,或者将值设置为空字符串 ("") 来删除该属性。 例如,时间戳记、现时标志和 trustAnyCertificate 属性都遵循此模式。
- 要添加属性,使用 setBinding 命令来为属性名传递一个长度不为 0 的字符串值。 要添加列表项,使用 _n 表示法来反映一个大于属性的任何当前数值的数值。 例如,如果您的配置中存在 tokenconsumer_0 和 tokenconsumer_1 属性,那么就将新的 tokenconsumer 属性指定为 tokenconsumer_2。 添加属性之后,使用 getBinding 命令来查看已配置的属性的最新列表。
- 要删除属性,请使用setBinding命令传递带有空字符串 ("") 的属性名称。例如,要删除所有tokenconsumer_0属性,使用以下属性指定attributes范围:
前面的示例将除去所有以属性名application.securityinboundbindingconfig.tokenconsumer_0=""application.securityinboundbindingconfig.tokenconsumer_0开头的属性。
下列示例显示了要为绑定配置的多组属性。 此列表中不包括要为 WSSecurity 绑定配置的所有属性。 可参考此信息来确定如何组成特定属性名。
- signinginfo 元素
- 使用此属性来配置签名信息。 对于定制绑定,可以存在为 securityoutboundbindingconfig 和 securityinboundbindingconfig 断言指定的无限数量的 signinginfo 元素。 在缺省绑定中,系统允许最多为 securityoutboundbindingconfig 和 securityinboundbindingconfig 声明指定两个 signinginfo 元素。 以下示例显示了两个 signinginfo 元素的格式:
application.securityinboundbindingconfig.signinginfo_0.signingkeyinfo_0 .reference=con_signkeyinfo application.securityinboundbindingconfig.signinginfo_0.signingpartreference_0 .reference=request:int_body application.securityoutboundbindingconfig.signinginfo_0.signingpartreference_0 .reference=response:int_body application.securityoutboundbindingconfig.signinginfo_0.signingpartreference_0.timestamp=true - encryptioninfo 元素
- 使用此属性来配置加密信息。 对于定制绑定,可以存在为 securityoutboundbindingconfig 和 securityinboundbindingconfig 断言指定的无限数量的 encryptioninfo 元素。 在缺省绑定中,系统允许最多为 securityoutboundbindingconfig 和 securityinboundbindingconfig 声明指定两个 encryptioninfo 元素。 以下示例显示了两个 encryptioninfo 属性的格式:
application.securityinboundbindingconfig.encryptioninfo_0.encryptionpartreference .nonce=true application.securityinboundbindingconfig.encryptioninfo_0.encryptionpartreference .reference=request:conf_body application.securityoutboundbindingconfig.encryptioninfo_0.encryptionpartreference .nonce=true application.securityoutboundbindingconfig.encryptioninfo_0.encryptionpartreference .timestamp=true - tokengenerator 元素
- 在缺省绑定中,signinginfo 或 encryptioninfo 元素未引用的 tokengenerator 元素将被认为是认证令牌生成器。 每个认证令牌生成器都必须具有唯一的 valuetype 元素。 以下示例显示了 X.509 保护令牌的一个生成器示例:
application.securityoutboundbindingconfig.tokengenerator_0.name=gen_signtgen application.securityoutboundbindingconfig.tokengenerator_0.classname=com.ibm.ws.wssecurity.wssapi.token .impl.CommonTokenGenerator application.securityoutboundbindingconfig.tokengenerator_0.valuetype.uri= application.securityoutboundbindingconfig.tokengenerator_0.valuetype.localname=http://docs.oasis-open.org /wss/2004/01/oasis-200401-wss-x509-token-profile-1.0#X509v3 application.securityoutboundbindingconfig.tokengenerator_0.callbackhandler.classname=com.ibm.websphere.wssecurity .callbackhandler.X509GenerateCallbackHandler application.securityoutboundbindingconfig.tokengenerator_0.callbackhandler.key.alias=soaprequester application.securityoutboundbindingconfig.tokengenerator_0.callbackhandler.key.keypass={xor}PDM2OjEr application.securityoutboundbindingconfig.tokengenerator_0.callbackhandler.key.name=CN=SOAPRequester, OU=TRL, O=IBM, ST=Kanagawa, C=JP application.securityoutboundbindingconfig.tokengenerator_0.callbackhandler.keystore.path=${USER_INSTALL_ROOT} /etc/ws-security/samples/dsig-sender.ks application.securityoutboundbindingconfig.tokengenerator_0.callbackhandler.keystore.storepass={xor}PDM2OjEr application.securityoutboundbindingconfig.tokengenerator_0.callbackhandler.keystore.type=JKS application.securityoutboundbindingconfig.tokengenerator_0.jaasconfig.configname=system.wss.generate.x509以下示例显示了用户名认证令牌的生成器:application.securityoutboundbindingconfig.tokengenerator_1.name=gen_usernametoken application.securityoutboundbindingconfig.tokengenerator_1.classname=com.ibm.ws.wssecurity .wssapi.token.impl.CommonTokenGenerator application.securityoutboundbindingconfig.tokengenerator_1.valuetype.uri= application.securityoutboundbindingconfig.tokengenerator_1.valuetype.localname=http://docs .oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#UsernameToken application.securityoutboundbindingconfig.tokengenerator_1.callbackhandler.classname=com.ibm .websphere.wssecurity.callbackhandler.UNTGenerateCallbackHandler application.securityoutboundbindingconfig.tokengenerator_1.callbackhandler.basicAuth.userid=user1 application.securityoutboundbindingconfig.tokengenerator_1.callbackhandler.basicAuth.password=myPassword application.securityoutboundbindingconfig.tokengenerator_1.securityTokenReference.reference=request:uname_token application.securityoutboundbindingconfig.tokengenerator_1.jaasconfig.configname=system.wss.generate.unt - tokenconsumer 元素
- 在缺省绑定中,signinginfo 或 encryptioninfo 元素未引用的 tokenconsumer 元素是认证令牌使用者。 每个认证令牌使用者都必须具有唯一的 valuetype 元素。 以下示例显示了一组 tokenconsumer 元素的格式:
application.securityinboundbindingconfig.tokenconsumer_0.name=con_unametoken application.securityinboundbindingconfig.tokenconsumer_0.classname=com.ibm.ws.wssecurity.wssapi .token.impl.CommonTokenConsumer application.securityinboundbindingconfig.tokenconsumer_0.valuetype.localname=http://docs.oasis-open.org /wss/2004/01/oasis-200401-wss-username-token-profile-1.0#UsernameToken application.securityinboundbindingconfig.tokenconsumer_0.valuetype.uri= application.securityinboundbindingconfig.tokenconsumer_0.callbackhandler.classname=com.ibm.websphere .wssecurity.callbackhandler.UNTConsumeCallbackHandler application.securityinboundbindingconfig.tokenconsumer_0.jaasconfig.configname=system.wss.consume.unt application.securityinboundbindingconfig.tokenconsumer_0.securitytokenreference.reference=request:uname_token - 参与者元素
- 定义已生成的消息的 WSSecurity 头中要包含参与者统一资源标识 (URI),如以下示例中所示:
application.securityinboundbindingconfig.actor=http://myActor.com application.securityoutboundbindingconfig.actor=http://myActor.com - certstorelist 元素
- 定义证书库配置和签名信息,如以下示例中所示:
application.securityinboundbindingconfig.certstorelist.collectioncertstores_0 .name=DigSigCertStore application.securityinboundbindingconfig.certstorelist.collectioncertstores_0 .provider=IBMCertPath application.securityinboundbindingconfig.certstorelist.collectioncertstores_0 .x509certificates_0.path=${USER_INSTALL_ROOT}/etc/ws-security/samples/intca2.cer - keyinfo 元素
- 定义用于为配置签名和加密的密钥信息,如以下示例中所示:
application.securityinboundbindingconfig.keyinfo_0.classname=com.ibm.ws.wssecurity.wssapi .CommonContentConsumer application.securityinboundbindingconfig.keyinfo_0.name=con_signkeyinfo application.securityinboundbindingconfig.keyinfo_0.tokenreference.reference=con_tcon application.securityinboundbindingconfig.keyinfo_0.type=STRREF - trustanchor 属性
- 定义用于验证签署者证书的信任度的配置信息,如以下示例中所示:
application.securityinboundbindingconfig.trustanchor_0.keystore.path=${USER_INSTALL_ROOT} /etc/ws-security/samples/dsig-receiver.ks application.securityinboundbindingconfig.trustanchor_0.keystore.storepass={xor}LDotKTot application.securityinboundbindingconfig.trustanchor_0.keystore.type=JKS application.securityinboundbindingconfig.trustanchor_0.name=DigSigTrustAnchor - timestampexpires 元素
- 定义配置的到期日期,如以下示例中所示:
application.securityoutboundbindingconfig.timestampexpires.expires=5 - application.securityinboundbindingconfig.caller_X.order
- 指定当使用 wsadmin 脚本时调用者的顺序,其中 X 是标识该调用者的实例的唯一字符串:
-attributes [[application.securityinboundbindingconfig.caller_0.order 2]]
setPolicyType 和 setBinding 命令示例
使用 setPolicyType 和 setBinding 命令并根据前面所提供的参考信息来修改策略和绑定配置数据。
AdminTask.setBinding('[-bindingLocation "" -bindingName cellWideBinding2 -policyType
WSSecurity
-attributes [[application.securityinboundbindingconfig.caller_0.order 2][inResponsewithSSL:configAlias
NodeDefaultSSLSettings]
[inResponsewithSSL:config properties_directory/ssl.client.props]
[outAsyncResponsewithSSL:configFile properties_directory/ssl.client.props]
[outAsyncResponsewithSSL:configAlias NodeDefaultSSLSetings]
[outRequestwithSSL:configFile properties_directory/ssl.client.props]
[outRequestwithSSL:configAlias NodeDefaultSSLSettings]]]')AdminTask.setPolicyType('-policySet myPolicySet -policyType WSSecurity -attributes
"[[enabled true][provides
Some_amount_of_security][SignatureProtection.request:app_signparts.SignedElements.XPath_0
SignatureProtectionV2]]"')AdminTask.setBinding('-policyType WSSecurity -bindingLocation "[[server server1][node
node01]]"
-attributes "[[application.securityinboundbindingconfig.keyinfo_0.name dec_server_keyinfo]
[application.securityinboundbindingconfig.keyinfo_0.classname
com.ibm.ws.wssecurity.wssapi.CommonContentGenerator]
[application.securityinboundbindingconfig.keyinfo_0.type STRREF]]"')AdminTask.setBinding('-policyType WSSecurity -bindingLocation "[[application PolicySet]
[attachmentId 999]]"
-attributes "[[application.securityinboundbindingconfig.keyinfo_0.name dec_app_keyinfo]
[application.securityinboundbindingconfig.keyinfo_0.classname
com.ibm.ws.wssecurity.wssapi.CommonContentGenerator]
[application.securityinboundbindingconfig.keyinfo_0.type STRREF]]" -attachmentType application
-bindingName myBindingName')AdminTask.setBinding('-policyType WSSecurity -bindingLocation "" -attributes
"[application.securityinboundbindingconfig.trustanchor_0.name DigSigTrustAnchor2]"')