gpt4 book ai didi

c# - 如何将 WindowsIdentity 转换为 NetworkCredential?

转载 作者:太空狗 更新时间:2023-10-30 00:53:45 25 4
gpt4 key购买 nike

我们如何将 WindowsIdentity 转换为 NetworkCredential?我正在测试我的 WCF 服务以验证匿名调用者是否被阻止。为此,我想做类似的事情:

myProxy.ClientCredentials.Windows.ClientCredential = foo(WindowsIdentity.GetAnonymous());

其中 foo 是将 WindowsIdentity 转换为 NetworkCredential 的方法

最佳答案

一般来说foo是不存在的。由于 NetworkCredential 是比 WindowsIdentity 更广泛的对象。也就是说,我可以在需要 WindowsIdentity 的地方使用 NetworkCredential,但反之则不行。

原因是出于安全考虑。

NetworkCredential 意味着您可以使用此身份并在另一台机器上使用其关联的凭据。

这意味着

  1. 您拥有用户凭据,而不仅仅是其身份。
  2. 这组凭据适用于模拟,而不仅仅是本地访问。

我假设凭据来自另一台机器(由于 WCF)。再次出于安全原因,网络凭证在进入这台机器时已转换为 LocalCredential(除非我们谈论的是委派而不是模拟)。客户端机器授予在服务器机器上使用其凭据的权利,并且仅在服务器机器上使用。

如果你想取回 NetworkCredential,你需要做一些叫做 Delegation 的事情,因为所谓的 Multi-Hop 问题。这涉及到黑社会的三头恶犬 Kerberos。您不想处理 Kerberos。

一般来说,默认情况下 WCF 代理不会在调用时发送凭据。您通常需要设置 ClientCredentials 或设置

proxy.UseDefaultCredentials = true

不提供通常意味着没有凭据,因此是匿名身份验证。

关于c# - 如何将 WindowsIdentity 转换为 NetworkCredential?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15284017/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com