2013-12-20 114 views
4

我試圖確保Asp.Net MVC5應用程序使用Windows身份驗證。MVC5與IIS 7.5中的Windows身份驗證:無法登錄

我主要遵循了這一文章:http://msdn.microsoft.com/en-us/library/gg703322%28v=vs.98%29.aspx

當我去的網頁,我帶有登錄/用戶名文本框: enter image description here

我輸入正確的用戶名/密碼,我問再次提供相同的細節。一次又一次。我試圖在登錄之前添加機器名稱(本地機器沒有域名),但沒有運氣。

在web.config中,我有:

<authentication mode="Windows" /> 

在IIS 7.5我已在爲驗證以下內容:

enter image description here

控制器動作我要求如下:

public partial class HomeController : BaseController 
{ 
    private readonly IMediator mediator; 

    public HomeController(IMediator mediator) 
    { 
     this.mediator = mediator; 
    } 

    public virtual ActionResult Index() 
    { 
     var model = mediator.Request(new MenuModelQuery()); 
     return View(model); 
    } 

如果我關閉任何身份驗證(啓用anony mous) - 一切正常。我曾嘗試使用不同的用戶來訪問網站的應用程序池 - 無需更改。我已將[AllowAnonymous]屬性添加到控制器操作 - 不變。我試過[Authorize(User =「trailmax」)] - 行爲沒有變化。

提琴手錶明,當我在把用戶名/密碼身份驗證標頭傳遞每次:

請求:

GET http://reporting.dev/ HTTP/1.1 
Host: reporting.dev 
Connection: keep-alive 
Cache-Control: max-age=0 
Authorization: Negotiate TlRMTVNTUAABblahblahblahblah= 
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8 

響應:

HTTP/1.1 401 Unauthorized 
Content-Type: text/html; charset=us-ascii 
Server: Microsoft-HTTPAPI/2.0 
WWW-Authenticate: Negotiate TlRMTVNTUAACAAA_some_long_stringkLP9zgEAAAAA 
Date: Fri, 20 Dec 2013 18:44:50 GMT 
Content-Length: 341 
Proxy-Support: Session-Based-Authentication 

我的想法。你能提出什麼建議嗎?

+0

根據您的鏈接,FileAuthorizationModule會回退到文件夾上。你檢查過那條大道嗎? –

+0

@MikeCheel我確實將應用程序池作爲「LocalSystem」運行,並且作爲我自己(Win7中的管理員)運行,結果沒有變化。我會嘗試給應用程序文件夾一個全局讀取權限 - 還沒有檢查過。 – trailmax

回答

3

我發現問題的來源 - hosts文件。 每次我進行網站開發時,我都會在hosts文件中創建一個記錄,所以它對用戶更友好一些。

只要我嘗試通過http://localhost:81訪問該網站的Windows身份驗證工作正常,並從第一次嘗試中取回密碼。

不知道爲什麼這完全無法通過主機通過域名工作。但我可以猜測IIS與網站域名和本地工作組/域名混淆。某種安全功能。

+1

令人敬畏的發現。我有完全相同的問題 - 使用主機文件。你的建議是點亮的。我需要調整我在IIS中的綁定 - 使用空白的主機名,並將端口設置爲81.沒有biggie開發tho ...謝謝! – barrypicker

0

由於您請求集成身份驗證,登錄提示表示它不起作用。我的猜測是,Chrome並不支持它,並且我懷疑你使用的是Chrome瀏覽器的登錄提示。

要麼切換到IE並確保您在域中,或者如果您想堅持使用Chrome並仍然能看到登錄提示,請啓用基本身份驗證並禁用Windows身份驗證。

+0

我試過IE - 結果相同。域是不可能的 - 一個單一的開發主機,但是當我部署到域服務器 - 相同的行爲。我曾嘗試使用基本身份驗證 - 根據請求提供不同的文本進行日誌記錄,但結果相同..但是我從來沒有爲基本身份驗證設置login/pwd。 – trailmax

+0

找到了答案 - 我通過記錄在'hosts'文件中訪問網站。只要我輸入'localhost:88 /',一切都按預期工作。 – trailmax