2016-05-18 43 views
0

我有一個現有的mvc webapi系統,不使用身份驗證或授權,我試圖添加Windows身份驗證。我通過創建一個簡單的系統,靜態數據。aspnet mvc系統沒有用戶當提出AuthenticateRequest事件

新的系統設置爲使用Windows身份驗證,而在當我勾入Application_AuthenticateRequestHttpContext.Current.User結果不爲空,並具有填充Identity屬性與正確WindowsPrincipal用戶發送請求。

在現有系統中,當我修改web.config以匹配新的(工作)系統時,所有傳入請求的空值HttpContext.Current.UserApplication_AuthenticateRequest中。

我看到一個帖子,提示我使用了Application_AuthorizeRequest事件處理程序,因爲它稍後在管道中被觸發。正如預期的那樣HttpContext.Current.User在這一點上不爲空,但是Identity屬性被設置爲具有Anonymous的模擬級別,並且重要的是沒有進行身份驗證。

我假設我試圖添加身份驗證的生產系統以某種方式配置爲不使用模擬,但我的概念系統的新證明是。因此,管道的Authenticate階段正在向HttpContext添加一個匿名用戶,這正是我在管道授權階段看到的。

我的問題是如何配置我的生產系統使用模擬,這樣我可以訪問已發送請求的用戶?

請注意系統部署到企業內部網,所以用戶的Windows身份是我所需要的,並且提供了足夠的安全性。

我的web配置包含以下內容:

<system.web> 
<compilation debug="true" targetFramework="4.6.1" /> 
<httpRuntime targetFramework="4.6.1" /> 
<authentication mode="Windows" /> 
<identity impersonate="true" /> 
<httpModules> 
</httpModules> 
</system.web> 
在兩個系統(生產和POC)

,我試圖去除這兩個<identity/>元素,它似乎沒有任何效果。

在這個階段,我只託管在IISExpress通過VS2015

回答

0

原來這一切歸因於IIS配置。

當使用IISExpress在VS2015中託管站點時,IISExpress使用的applicationhost.config文件是使用soure本地存儲的文件。特別是在$(SolutionDir).vs \ config文件夾中。

我的生產系統的配置禁用了Windows身份驗證並啓用了匿名身份驗證,並且POC系統反過來。更改這個配置文件已經解決了我的問題,現在的問題是這是否會在另一個用戶的PC上工作,或者是否會生成不正確的applicationhost.config文件?