3

我的团队最近在我们的一些服务代码中发现了一个错误,例如使用匿名 NTLM SID 进行身份验证的 HTTP 请求(HTTP 匿名身份验证不同;这是一个成功的 NTLM 身份验证交换,导致匿名 SID)被允许在应该被拒绝的时候继续。我们已经通过检查 WindowsIdentity.IsAnonymous 属性解决了这个问题,但是我想为这种情况编写一个自动化测试,这样我们就再也不会遇到这个问题了。

这导致了我的问题。我需要使用 HttpWebRequest 或 Microsoft.HttpClient 向特定 URL 发出 HTTP GET 请求,后者通过 NTLM 作为匿名 SID 进行身份验证。到目前为止,我能做到这一点的唯一方法是将客户端代码作为 LocalSystem 运行;出于显而易见的原因,这对于我们的自动化测试机制来说并不理想。

我试过这个:

using (WindowsIdentity.GetAnonymous().Impersonate()) { 
    //Make HTTP request here, with UseDefaultCredentials = true
}

但是 Impersonate 会抛出一个异常,表明无法模拟匿名令牌。

还有其他想法吗?

4

1 回答 1

0

I think you just need to set UseDefaultCredentials to false:

request.Credentials = null;
request.UseDefaultCredentials = false;
于 2011-01-24T22:33:59.067 回答