使用本主题以及 AdminTask 对象的 SecureConversation 组中的命令通过创建新策略集和绑定以连接至应用程序,从而启用安全对话客户机高速缓存。
开始之前
请验证 SecureConversation 策略集在配置中是否可用。缺省情况下,SecureConversation 策略集不可用。使用 importPolicySet 命令将 SecureConversation 策略导入配置中,如下例所示:
AdminTask.importPolicySet('-defaultPolicySet SecureConversation')
在使用此主题中的命令之前,请验证是否在使用 wsadmin 工具的最新版本。将属性对象作为 attributes 或 bindingLocation 参数的值来接受的策略集管理命令不受
wsadmin 工具的先前版本支持。例如,这些命令不在 V6.1.0.x 节点上运行。
关于此任务
本主题使用缺省 SecureConversation 策略集、缺省 WS-Security 和 TrustServiceSecurityDefault 绑定来启用安全对话。
缺省 SecureConversation 策略集包含具有对称绑定的应用程序策略和具有非对称绑定的引导策略。应用程序策略保护应用程序消息。引导策略保护 RequestSecurityToken(RST)消息。对安全上下文令牌提供程序进行发布的信任服务使用 TrustServiceSecurityDefault 系统策略和 TrustServiceSecurityDefault 绑定。信任策略保护 RequestSecurityTokenResponse(RSTR)消息。如果修改引导策略,那么还必须修改信任策略以使这两种配置匹配。
避免故障: 仅在开发和测试环境中使用以下步骤。此过程中的 WS-Security 绑定包含样本密钥文件,必须先定制这些文件,才能在生产环境中使用绑定。为生产环境创建定制绑定。
gotcha
过程
- 通过使用 Jython 脚本编制语言,启动 wsadmin 脚本编制工具。 要了解更多信息,请参阅“启动 wsadmin 脚本编制客户机”信息。
- 复制现有 SecureConversation 策略集。
使用以下命令示例通过复制现有 SecureConversation 策略集来创建新的策略集:
AdminTask.copyPolicySet('[-sourcePolicySet SecureConversation -newPolicySet CopyOfSCPolicySet]')
- 更改全局安全性域的绑定。如果在使用 Profile Management Tool 或 manageprofiles 命令实用程序创建概要文件时选择了使用开发模板创建服务器选项,那么可以选择跳过此步骤。
- 列示每个 WS-Security 策略属性。
要修改全局安全性域的绑定,请使用 getDefaultBindings 命令来确定设置为提供者或客户机缺省值的绑定,如下例所示:
AdminTask.getDefaultBinding('-bindingType provider')
- 显示绑定的属性。
使用 getBinding 命令来显示绑定的当前属性,如下例所示:
AdminTask.getBinding('-bindingLocation "" -bindingName myBinding')
- 修改保护令牌的出站配置。
使用下列命令修改保护令牌的出站配置:
cmd1_attributes_value = "[ [application.securityoutboundbindingconfig.tokengenerator_5.callbackhandler
.key.name [CN=Bob,O=IBM, C=US]] [application.securityoutboundbindingconfig.tokengenerator_5.callbackhandler
.keystore.storepass storepass] [application.securityoutboundbindingconfig.tokengenerator_5.callbackhandler
.keystore.type JCEKS] [application.securityoutboundbindingconfig.tokengenerator_5.callbackhandler.key.alias bob]
[application.securityoutboundbindingconfig.tokengenerator_5.callbackhandler.keystore.path ${USER_INSTALL_ROOT}
/etc/ws-security/samples/enc-sender.jceks] ]"
AdminTask.setBinding('[-policyType WSSecurity -bindingLocation "" -attributes cmd1_attributes_value
-attachmentType application]')
cmd2_attributes_value = "[ [application.securityoutboundbindingconfig.tokengenerator_0.callbackhandler.keystore
.path ${USER_INSTALL_ROOT}/etc/ws-security/samples/dsig-sender.ks] [application.securityoutboundbindingconfig
.tokengenerator_0.callbackhandler.keystore.storepass client] [application.securityoutboundbindingconfig
.tokengenerator_0.callbackhandler.key.name [CN=SOAPRequester, OU=TRL, O=IBM, ST=Kanagawa, C=JP]] [application
.securityoutboundbindingconfig.tokengenerator_0.callbackhandler.key.keypass client] [application
.securityoutboundbindingconfig.tokengenerator_0.callbackhandler.key.alias soaprequester]
[application.securityoutboundbindingconfig.tokengenerator_0.callbackhandler.keystore.type JKS] ]"
AdminTask.setBinding('[-policyType WSSecurity -bindingLocation "" -attributes cmd2_attributes_value
-attachmentType application]')
- 可选: 修改 TrustDefaultBindings 绑定。如果在使用 Profile Management Tool 或 manageprofiles 命令实用程序创建概要文件时选择了使用开发模板创建服务器选项,那么可以选择跳过此步骤。
如果 TrustDefaultBindings 尚未定制,请使用下列命令修改 TrustDefaultBindings 绑定:
cmd3_attributes_value = "[ [application.securityoutboundbindingconfig.tokengenerator_1.callbackhandler.keystore
.storepass storepass] [application.securityoutboundbindingconfig.tokengenerator_1.callbackhandler.key.alias bob]
[application.securityoutboundbindingconfig.tokengenerator_1.callbackhandler.keystore.type JCEKS] [application
.securityoutboundbindingconfig.tokengenerator_1.callbackhandler.keystore.path ${USER_INSTALL_ROOT}/etc
/ws-security/samples/enc-sender.jceks] [application.securityoutboundbindingconfig.tokengenerator_1.callbackhandler
.key.name [CN=Bob, O=IBM, C=US]] ]"
AdminTask.setBinding('[-policyType WSSecurity -bindingLocation "[attachmentId 2]"
-attributes cmd3_attributes_value -attachmentType system/trust]')
cmd4_attributes_value = "[ [application.securityoutboundbindingconfig.tokengenerator_0.callbackhandler.keystore.path
${USER_INSTALL_ROOT}/etc/ws-security/samples/dsig-sender.ks] [application.securityoutboundbindingconfig.tokengenerator_0
.callbackhandler.keystore.storepass client] [application.securityoutboundbindingconfig.tokengenerator_0.callbackhandler
.key.name [CN=SOAPRequester, OU=TRL, O=IBM, ST=Kanagawa, C=JP]] [application.securityoutboundbindingconfig.tokengenerator_0
.callbackhandler.key.keypass client] [application.securityoutboundbindingconfig.tokengenerator_0.callbackhandler.key
.alias soaprequester] [application.securityoutboundbindingconfig.tokengenerator_0.callbackhandler.keystore.type JKS] ]"
AdminTask.setBinding('[-policyType WSSecurity -bindingLocation "[attachmentId 2]"
-attributes cmd4_attributes_value -attachmentType system/trust]')
- 将策略集和绑定连接至应用程序。
对 createPolicySetAttachment 命令使用 attachmentType 参数来指定应用程序是服务客户机还是服务提供程序。请使用下列命令将
CopyOfSCPolicySet 策略集连接至
myTestApp 服务客户机应用程序:
AdminTask.createPolicySetAttachment('[-applicationName myTestApp -policySet CopyOfSCPolicySet
-resources WebService:/ -attachmentType client]')
请使用下列命令将
CopyOfSCPolicySet 策略集连接至
myTestApp 服务提供者应用程序:
AdminTask.createPolicySetAttachment('[-applicationName myTestApp -policySet CopyOfSCPolicySet
-resources WebService:/ -attachmentType application]')
此步骤将自动指定绑定。
结果
安全对话配置将在位于单元级别目录中的 WSSCCache.xml 文件中进行更新。
下一步做什么
使用 AdminTask 对象的 SecureConversation 命令组管理安全对话配置。