0

我正在尝试在 WCF 中使用用户名消息安全性。我正在尝试确定使用无/匿名的传输凭证类型是否会带来明确的安全风险。

我关心的是通过使用 WS-trust 规范(TLS 协商)对二进制数据进行隧道传输的初始交换。在建立共享安全上下文之前,这种对我的用户名和密码进行身份验证的尝试是否容易受到网络嗅探器的影响?

欢迎任何想法。

谢谢。

<security mode="Message">
   <transport clientCredentialType="None" />
   <message clientCredentialType="UserName" negotiateServiceCredential="true" algorithmSuite="Default" establishSecurityContext="true" />
</security>
4

3 回答 3

3

根据 WS-Security 的规范,UserName 令牌可以包含未加密的用户名和密码。这将看到此信息通过未加密的明文线路传输。二进制格式不是一种威慑。这通常被称为“默默无闻的安全”,根本不是一种安全措施。

巧合的是,不久前在阅读 Scott Hanselman 的一篇文章时,我遇到了很多此类信息。它暗示了您遇到的问题。 http://www.hanselman.com/blog/BreakingAllTheRulesWithWCF.aspx

如果您打算启用此功能,您肯定会希望在此处启用一些传输级别的安全性。

这是关于 WS-Security UsernameToken 的 OASIS 文档。它似乎允许多种场景,但我不确定 WCF 默认使用哪种场景:http: //docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile -1.0.pdf

如果您好奇,您可能想要启用消息记录并检查消息以查看正在发送的内容。启用消息记录

于 2009-07-27T16:51:26.607 回答
2

在这里做了一些更多的研究。从本质上讲,如果您使用密码摘要(默认),密码不会暴露给嗅探网络的人的风险。如果您不关心消息正文本身的机密性,则不需要传输安全性。

这在这里解释:http: //msdn.microsoft.com/en-us/library/ms977327.aspx

长话短说:

  1. 密码摘要用于验证客户端是否知道正确的密码。永远不会发送密码。只计算一个哈希。

  2. 通过使用随机数和时间窗口来防止重放攻击。服务器会记住给定时间窗口的随机数,并确保只接受具有该随机数的一条消息。签署整件事,你就安全了。

于 2009-07-25T12:56:59.837 回答
0

是的,它不会在线上加密数据,因此凭据将暴露给任何愿意查看的人。

您希望以这种方式做事有什么特别的原因吗?我不会推荐它。

于 2009-07-24T19:19:39.580 回答