WSSecurity 原則和連結內容
在 setPolicyType 和 setBinding 指令中使用 attributes 參數,指定 WSSecurity 原則和連結配置的其他配置資訊。應用程式和系統原則集可以使用 WSSecurity 原則和連結配置。
在使用這個主題中的指令之前,請確認您使用 wsadmin 工具的最新版本。 在舊版的 wsadmin 工具中,不支援接受內容物件作為 attributes 或 bindingLocation 參數值的原則集管理指令。 例如,在 6.1.0.x 版節點上,不執行這些指令。
- 利用 getPolicyType 和 getBinding 指令的 -attributes 參數來檢視原則和連結配置的內容。 如果要取得屬性,請將內容名稱傳給 getPolicyType 或 getBinding 指令。
- 利用 setPolicyType 和 setBinding 指令的 -attributes 參數來新增、更新或移除原則和連結配置中的內容。 如果要新增或更新屬性,請指定內容名稱和值。 如果屬性存在,setPolicyType 和 setBinding 指令會更新值,如果屬性不存在,會新增屬性和值。 如果要移除屬性,請將值指定為空字串 ("")。 -attributes 參數會接受內容物件。

為了支援混合 Cell 的環境,WebSphere Application Server 支援 7.0 版和 6.1 版連結。 一般的 Cell 層次連結專用於 7.0 版及更新的版本,應用程式特定連結保持應用程式所需要版本。 當使用者建立應用程式專用連結時,應用程式伺服器會判斷供應用程式使用所需要的連結版本。
SignatureProtection.response:
int_body.SignedParts.Body,SignatureProtection.response:int_body.SignedParts.Header_0.Name
和SignatureProtection.response:int_body.SignedParts.Header_0.Namespace
WSSecurity 原則內容
- 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:SupportingTokens
SupportingTokens.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 指令傳遞非零長度字串值的內容名稱。如果要新增清單項目,請使用 _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
- actor 元素
- 定義要在產生的訊息的 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 Script 時的呼叫端順序,其中 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]"')