此主题解释了 WS-Security 策略文件(WSSE 文件)中的 XML 元素是如何处理 SOAP 消息的。
用户名/密码标记
用户名/密码标记用于对向接收方发送 SOAP 消息的发送方进行身份验证。请注意,用户名/密码标记应始终与数字签名或加密协同使用,否则心怀恶意的第三方可能会截取该 SOAP 消息,并读取用户名和密码。
要求入站 SOAP 消息提供用户名/密码标记
可以指定传入 SOAP 消息必须附带用户名/密码标记。要通过由 WSSE 文件设置的安全门,标记必须与 WebLogic Server 安全提供者已知的规则相匹配。
要指定入站 SOAP 消息附带用户名/密码标记,请使用下列语法。
<wsSecurityIn>
<token tokenType="username"/>
</wsSecurityIn>
使用用户名/密码标记增强出站 SOAP 消息
要指定传出 SOAP 消息附带用户名/密码标记,请使用下列语法。请注意,<password> 元素必须包含 Type 特性,且该特性的值必须为 TEXT。
<wsSecurityOut>
<userNameToken>
<userName>user1</userName>
<password type="TEXT">password1</password>
</userNameToken>
</wsSecurityOut>
数字签名
数字签名用于对 SOAP 消息的发送方进行身份验证,以及确保 SOAP 消息的完整性(即确保该 SOAP 消息在传输过程中没有被更改)。在对 SOAP 消息应用数字签名时,将从该消息中生成唯一的无用信息,然后使用发送方的私钥对此无用信息进行加密。消息被接收后,接收方将使用发送方的公钥对该无用信息进行解密。(请注意,该公钥包含在数字证书中,由第三方或发送方自身提供。如果证书由发送方生成,则称消息为“自签名”消息。)这样即可对发送方进行身份验证,因为只有发送方可以使用其私钥对无用信息进行加密。另外,这样还可以确保 SOAP 消息在传输过程中没有被篡改,因为接收方可以将随该消息发送的无用信息与在接收方终端生成的无用信息进行比较。
要求入站 SOAP 消息提供数字签名
要指定入站 SOAP 消息附带数字签名,请使用下列语法。
<wsSecurityIn>
<signatureRequired>true</signatureRequired>
</wsSecurityIn>
使用数字签名增强出站 SOAP 消息
要指定对传出 SOAP 消息进行签名,请使用下列语法。
<wsSecurityOut>
<signatureKey>
<alias>myAlias</alias>
<password>myKeyStorePassword</password>
</signatureKey>
</wsSecurityOut>
<keyStore>
<keyStoreLocation>path_to_keystore</keyStoreLocation>
<keyStorePassword>myKeyStorePassword</keyStorePassword>
</keyStore>
在对出站消息进行签名时,必须有 <keystore> 元素,以便可以从密钥库中检索数字签名(包含您的公钥)和您的相关私钥。
加密
加密可确保发送方和接收方之间通信的保密性。发送方使用接收方的公钥加密消息。只有接收方的私钥可以成功解密消息,从而确保第三方不会在消息传输过程中读取该消息。
要求入站 SOAP 消息提供数字签名
下面的 <encryptionRequired> 元素有两种用途。(1) 该元素要求必须使用公钥对传入 SOAP 消息进行加密,(2) 该元素提供了传入消息的解密指令。
<wsSecurityIn>
<encryptionRequired>
<decryptionKey>
<alias>myAlias</alias>
<password>password_key_store</password>
</decryptionKey>
</encryptionRequired>
</wsSecurityIn>
<alias> 元素和 <password> 元素用于访问存储解密私钥的密钥库。
使用加密增强出站 SOAP 消息
要使用目标接收方的公钥加密出站消息,请使用下列语法。
<wsSecurityOut>
<encryption>
<encryptionKey>
<alias>recipient_alias</alias>
</encryptionKey>
</encryption>
</wsSecurityOut>
<keyStore>
<keyStoreLocation>path_to_keystore</keyStoreLocation>
<keyStorePassword>myKeystorePassword</keyStorePassword>
</keyStore>
我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。
我原创,你原创,我们的内容世界才会更加精彩!
【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】
微信公众号
TechTarget
官方微博
TechTarget中国
相关推荐
-
API设计:如何正确开发应用程序接口
在交互组件化软件的世界里,没有比让组件之间以及组件与移动设备和浏览器之间进行连接的应用程序接口(API)更重要的东西了。
-
REST vs. SOAP:如何挑选最好的Web服务
在应用没有任何服务器端的组件情况下,有没有可能直接通过我的应用数据库直接使用这些Web服务?
-
BEST:SOAP/XML和REST的替代方案
虽然拥有大量的机架服务器,以及大量软件开发人员的组织,基于web和集成服务的SOAP和REST很适合他们,但也会出现问题。
-
REST和SOAP 谁使移动应用最受益?
你应该听说过REST,如果在移动应用开发中使用REST,而不是使用SOAP,最大好处是什么?