1

我們正在研究純粹使用Windows身份驗證的內部MVC3應用程序。有一種視圖可以在調用Web服務之前對控制器操作執行一些處理操作。我們遇到的問題是,如果關閉匿名訪問(如在Windows身份驗證打開時),則從控制器操作調用該服務會導致401:未經授權的錯誤。AJAX調用調用WebService的MVC控制器

我們遇到了一個雙跳問題,即在服務中調用服務時,憑據未正確從服務器傳遞到服務器的問題。我想知道AJAX調用是否有點模仿相同的行爲,而不是將正確的Windows憑證傳輸給控制器,然後控制器不會將正確的憑證傳遞給Web服務。

我見過一些帖子,展示瞭如何傳遞用戶名和密碼以及jQuery調用,但沒有提及帶有Windows身份驗證的有效方式。

有沒有人遇到類似的問題?我們寧願不在Web服務上留下匿名訪問權限,因爲它是我們想要控制訪問權限的一些敏感數據。

+0

我應該詳細闡述一下。我正在談論Web服務駐留在虛擬目錄中的匿名訪問。對於Web應用程序的Windows身份驗證在任何情況下都能正常工作。 –

回答

0

你有身份模擬打開,如在這一問題描述:

How to get Windows user name when identity impersonate="true" in asp.net?

+0

在MVC3應用程序中,我們在web.config中包含:。我們確實在初次部署應用程序時想到了這一點,但沒有任何變化。這也必須爲Web服務?或者那很重要? –

+0

我猜你只需要在服務中使用authentication = windows,但我從來沒有這樣做過,所以我不確定。 – BNL

+0

用戶可以直接調用服務嗎? – BNL

0

一位同事做了上週末的一些研究,並確定它可能是與Kerberos身份驗證設置在服務器上爲以及jQuery調用。爲了解決它,我們只是將Web服務重構爲應用程序引用的庫。我們最初將它作爲一項Web服務,因爲我們以後認爲這些數據需要從其他應用程序訪問。遇到這個問題,我們很可能會把它變成一個NuGet包。

感謝您的意見。