使用签署令牌来保护 Web Service
签署令牌用来对 SOAP 消息签名进行签名。签署令牌通常用来对整个 <Signature> 元素进行签名,还可以选择用来对其他消息部件进行签名。如果使用了传输安全性,那么必须使用签署令牌来对 SOAP 安全性头中的时间戳记进行签名。
签署支持令牌断言
- EndorsingSupportingTokens - 不需要对令牌进行签名或加密。
- SignedEndorsingSupportingTokens - 必须对令牌签名。
- EndorsingEncryptedSupportingTokens - 必须对令牌加密。
- SignedEndorsingEncryptedSupportingTokens - 必须对令牌签名。
X509Token 作为签署令牌
可以将 X509Token 配置为签署令牌。将 X509Token 配置为签署令牌类似于将 X509Token 配置为 AssymmetricBinding 中的 InitiatorToken。要将 X509Token 配置为签署令牌,您需要一个策略,该策略具有先前描述的其中一个签署令牌断言中包含的 X509Token,以及 server.xml 文件中的 <SignatureProperties> 元素。
<sp:EndorsingSupportingTokens xmlns:sp="http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702">
<wsp:Policy>
<sp:X509Token sp:IncludeToken="http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702/IncludeToken/AlwaysToRecipient">
<wsp:Policy>
<sp:WssX509V3Token10/>
</wsp:Policy>
</sp:X509Token>
</wsp:Policy>
</sp:EndorsingSupportingTokens>
将 X509Token 配置为签署令牌之后,您必须在 server.xml 文件中定义 <signatureProperties> 元素以标识密钥库和签名密钥。<signatureProperties> 元素的配置与消息签名的 X509Token 的配置相同。有关更多信息,请参阅使用 X.509 令牌来保护 Web Service。
将 UsernameToken 作为签署令牌
作为 endorsingToken 的 UsernameToken 的配置类似于具有 PasswordDigest 的 UsernameToken 的配置(只不过策略中没有 HashPassword)。要将 UsernameToken 配置为签署令牌,您需要一个策略,该策略具有“签署支持令牌断言”一节中描述的其中一个签署令牌断言中包含的 UsernameToken。
<sp:SignedEndorsingEncryptedSupportingTokens>
<wsp:Policy>
<sp:UsernameToken
sp:IncludeToken="http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702/IncludeToken/AlwaysToRecipient">
<wsp:Policy>
<sp:WssUsernameToken10 />
<sp:RequireDerivedKeys />
</wsp:Policy>
</sp:UsernameToken>
</wsp:Policy>
</sp:SignedEndorsingEncryptedSupportingTokens>
在此样本策略片段中,使用此消息的其余内容对 UsernameToken 进行签名和加密。然后,使用从 UsernameToken 中的密码派生的密钥对消息签名进行签名。
由于 UsernameToken 签署令牌使用派生密钥,因此您必须为提供程序应用程序实现并配置密码 CallbackHandler。有关更多信息,请参阅使用 UsernameToken 来认证 Web Service 客户机。