2010-06-29 53 views
4

環境是IIS 7集成管道,ASP.NET 4.0。我配置了.aspx頁面中沒有匿名身份驗證和Windows身份認證:Windows身份驗證成功,但IsAuthenticated == false

當我請求的頁面,一個普通的Windows身份驗證(NTLM /協商)質詢響應情況,並最終返回頁面。

我有一個處理PostAuthorize事件的HttpModule。正如預期的那樣,只有挑戰 - 響應認證成功並授權訪問頁面時纔會引發此事件。

但是,Request.IsAuthenticated屬性爲false;和HttpContext.Current.User.Identity反映了未經身份驗證的用戶(.Name返回空字符串)。有趣的是,Request.ServerVariables [「LOGON_USER」]確實會返回經過身份驗證的Windows用戶的值。

我一直認爲,一旦用戶通過了認證(並獲得授權,就此而言),請求將反映被認證;並且該請求的用戶/身份將被正確設置。

有關爲什麼不是這種情況的任何想法?

感謝,

甄子丹

+0

啓用模擬並查看您得到的內容。 – 2010-06-29 15:31:25

回答

1

事實證明,當你在Web.config中啓用窗體身份驗證Windows身份驗證的本地處理工作。但是,Windows身份驗證的託管部分 - 只有在Web.config中啓用Windows身份驗證時纔會發生將身份驗證的Windows用戶與表示該用戶的IIdentity派生對象關聯的情況。看起來我必須依賴於Request.ServerVariables [「LOGON_USER」]值。

3

windows在IIS中啓用了身份驗證,並將身份驗證模式設置爲我的web.config文件中的窗口。

<authentication mode="Windows">  
    </authentication> 

我的網站是要求憑據,它工作正常。但在使用

HttpContext.User.Identity.Name 

檢查空字符串 或者 HttpContext.User.Identity.IsAuthenticated是假的;

我使用請求.ServerVariables["LOGON_USER"].Tostring();獲取登錄用戶憑據。

它爲我工作,感謝發佈soccerdad。

+0

歡迎來到Venu,當你的聲望增長時,你將能夠發表評論。否則答案只是爲了回答這個問題。乾杯! – Sergio 2013-06-27 10:31:15

+4

這不是一個答案,而是一個評論soccerdad的答案。 – 2014-05-30 07:54:13