3

私のチームは最近、一部のサービス コードにバグを発見しました。たとえば、匿名の NTLM SID で認証された HTTP 要求 ( HTTP 匿名認証と異なります。これは、匿名 SID になる成功した NTLM 認証交換です) が許可されていました。拒否されるべきときに続行します。WindowsIdentity.IsAnonymous プロパティを調べることで問題を解決しましたが、この問題が二度と発生しないように、このケースの自動テストを作成したいと考えています。

それが私の問題につながります。NTLM を介して匿名 SID として認証する HttpWebRequest または Microsoft.HttpClient を使用して、特定の URL に対して HTTP GET 要求を行う必要があります。今のところ、これを実現できる唯一の方法は、クライアント コードを LocalSystem として実行することです。明らかな理由から、これは自動テスト体制にとって理想的ではありません。

私はこれを試しました:

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

ただし、Impersonate は、匿名トークンを偽装できないことを示す例外をスローします。

他のアイデアはありますか?

4

1 に答える 1

0

UseDefaultCredentialsを falseに設定するだけでよいと思います。

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