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

Wcf Windows身份验证是否提供不可否认性?,wcf,windows-authentication,Wcf,Windows Authentication,我一直在寻找,但我找不到答案。尽可能使用Windows身份验证。如果您需要签名,这能否提供不可否认性和数据完整性 (这里最重要的问题是不可否认性。我正在使用TLS,但试图确定是否可以通过Windows Auth with TLS或MLS提供不可否认性。理论上,TLS提供跳到跳的数据完整性。)是的,第一个问题。选中此项: Windows身份验证不提供数据签名。最佳实践指南建议使用Windows身份验证,因为它内置于所有Microsoft计算机中。它不喜欢需要大量基础设施设置的证书。如果您的计算机

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


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

是的,第一个问题。选中此项:


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

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

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

要回答消息是否可以是sigend的问题,Kerberos和NTLM都可以用于签名加密消息。作为一名WCF程序员,它应该对您透明。您只需将设置为EncryptAndSign即可。如果您不相信我,您可以在设置Windows身份验证后查看网络跟踪。您应该看到这些消息是加密的

使用Windows身份验证时,WCF将调用SSPI进行身份验证和消息加密。我不讲SSPI的细节。是NTLM加密消息的SSPI调用,是Kerberos加密消息的SSPI调用。您可以在Windbg中设置断点来证明这一点

尽管上面的链接中没有明确说明,但明确指出上述EncryptMessages方法可以提供数据完整性(签名)和隐私性(加密)


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

我今天早些时候在这一页上-它在哪里说Windows Auth提供不可否认性?另外,如果它没有对消息进行签名,它怎么做呢?它使用一个令牌,它是machinename、user和password的散列,这个散列由第三方服务器(域控制器)信任。如果您想防止在传输过程中修改内容,您应该使用SSL,我不确定在传输过程中修改内容是否会使令牌无效,我想不会。我之前在该页面上,我不知道它在哪里声明这提供了不可否认性。如果消息未签名,它如何为消息提供不可否认性?根据,wsHttpBinding默认使用Windows Auth和MLS,而MLS用于加密和签名消息。它甚至没有说Windows Auth将允许您对消息进行签名,但是..我们是否能够充分了解GSS_Unwrap调用以将用户从事务中拉出来?必须在TLS中处理加密;我们可能希望在MLS中进行签名,以便我们可以在服务级别进行签名,对吗?问题在于-身份验证与不可否认性和数据完整性(两者也是相互正交的)是正交的。@syncbean-如果您需要签名,这一切都将从何而来。