Windows身份验证是否提供不可否认性?

时间:2012-07-03 18:59:11

标签: wcf windows-authentication

我现在一直在寻找,但我找不到答案。 WCF Security Best Practices说尽可能使用Windows身份验证。如果您需要签名,这可以提供不可否认性和数据完整性吗?

(这里最重要的问题是不可否认。我正在使用TLS,但试图确定我是否可以通过Windows Auth使用TLS或MLS提供不可否认性。从理论上讲,TLS提供了逐跳数据完整性。)

2 个答案:

答案 0 :(得分:0)

是的,第一个问题。检查一下:

Chapter 4: WCF Security Fundamentals

Windows身份验证不提供数据签名。

答案 1 :(得分:0)

最佳实践指南建议使用Windows身份验证,因为它是在所有Microsoft计算机中构建的。它不喜欢需要大量基础设施设置的证书。如果您的计算机已加入Active Directory域,则它应该可以正常工作。

Windows身份验证正在使用SPNEGO协商使用哪种身份验证方法 Kerberos NTLM 。只要有可能,客户端和服务器将首先尝试选择 Kerberos 。否则,将使用 NTLM

要回答关于邮件是否可以删除的问题, Kerberos NTLM 都可以用于签名加密消息。作为WCF程序员,它应该对您透明。您需要做的就是将ProtectedLevel设置为EncryptAndSign。如果您不相信我,可以在设置Windows身份验证后查看网络跟踪。您应该看到邮件已加密。

使用Windows身份验证时,WCF将调用SSPI进行身份验证和邮件加密。我不会介绍SSPI的细节。 Here NTLM 加密消息的SSPI调用,而here Kerberos 加密消息的SSPI调用。你可以在Windbg中设置一个断点来证明这一点。

虽然上述链接中没有明确说明,this link明确指出上述EncryptMessages方法可以提供数据完整性(签名)和隐私(加密)。

回到关于Windows身份验证是否支持non-repudiation的原始问题,这实际上是一个更大的问题。 数据签名non-repudiation是必要的,但还不够。 WCF还提供审计功能来记录操作或事务。这是为了保证用户不能拒绝执行操作或启动事务。因此,为了支持non-repudiation,您还应将SuppressAuditFailure设置为false,以确保审核始终正常运行。