我有一個(gè) WCF 自托管 Web 服務(wù)(托管在我的本地系統(tǒng)帳戶(hù)下的 Windows 服務(wù)中)。Web 方法已[OperationBehaviorAttribute(Impersonation = ImpersonationOption.Required)]附加。使用 NTLM 身份驗(yàn)證。在我的 web 方法的實(shí)現(xiàn)中,我模擬調(diào)用者并做了一些事情。為此,我使用ServiceSecurityContext.Current.WindowsIdentity. 如果我在調(diào)用 web 方法時(shí)沒(méi)有提供正確的憑據(jù),則 web 服務(wù)將返回“401 Unauthorized”。當(dāng)我從 Chrome 調(diào)用該方法時(shí),windows 身份和模擬工作得很好。我可以在模擬用戶(hù)下創(chuàng)建一個(gè)新進(jìn)程,它將在該用戶(hù)的 Windows 會(huì)話中生成(不同于 0)。network.automatic-ntlm-auth.trusted-uris當(dāng)我將“l(fā)ocalhost”字符串添加到首選項(xiàng)時(shí),F(xiàn)irefox 也可以工作。但是,當(dāng) SoapUI 調(diào)用該方法時(shí),此 Windows 標(biāo)識(shí)設(shè)置不正確。Web 方法被調(diào)用,因此 NTLM 在一定程度上起作用,但它不能正常工作。調(diào)用ServiceSecurityContext.Current.WindowsIdentity.Owner.IsAccountSid()返回 false(Owner不是用戶(hù)帳戶(hù),而是內(nèi)置的“管理員”組)。在模擬時(shí)創(chuàng)建一個(gè)新進(jìn)程將在 Windows 會(huì)話 0 中創(chuàng)建它。我研究了與 Wireshark 的 HTTP 通信,并且 NTLM 握手在 Chrome 和 SoapUI 之間看起來(lái)不同。雖然不知道如何處理這些信息。如何使 SoapUI 與我的 Web 服務(wù)和 NTLM 一起正常工作?
1 回答

收到一只叮咚
TA貢獻(xiàn)1821條經(jīng)驗(yàn) 獲得超5個(gè)贊
雖然我不知道如何解決 WCF 的問(wèn)題,但我切換到 Web API 和 OWIN,現(xiàn)在我有了一個(gè)可行的解決方案。
- 1 回答
- 0 關(guān)注
- 166 瀏覽
添加回答
舉報(bào)
0/150
提交
取消