Win2008 server + IIS7 設置身份模擬(ASP.NET impersonation)
作者:eaglet
轉載請注明出處
IIS7 與 IIS 6 相比有了很大的改動,原來在 IIS 6 下可以的設置到了 IIS 7 下有的會發(fā)生變化。身份模擬的配置上,IIS7 和 IIS6有很大不同,網上IIS6的身份模擬的文章比較多,但介紹IIS7的比較少,我把的一些折騰的經驗在這篇博客中寫下來,以供參考。
IIS 7 有兩種 ASP.NET Application Mode。
一種是 集成模式(Integrated Mode) 這個是默認的模式,也是微軟推薦的模式,另一種是 經典模式(Classic Mode) ,這種模式是用于兼容老版本。集成模式使用更方便而且安全性更好,不需要把模擬帳戶的用戶名和密碼寫在配置文件中,這樣更安全也更方便。既然我們已經用了IIS 7,那么我們還是按微軟推薦的方式使用集成模式比較好。
集成模式下,身份模擬可以完全通過界面來完成:
首先如上圖所示,IIS 7 在 Server Level 下有個 IIS-> Authentication ,雙擊這個圖標我們看到下面這個圖:
在這個圖中我們看到 IIS7 多了一個 ASP.NET Impersonation 的功能,在 Actions 里面點 Enable 開啟身份模擬功能,然后點 Edit 編輯身份模擬。
我們看到上面這個編輯框,在這個編輯框中,我們指定要進行身份模擬的帳號,這個帳號必須是本地已經存在的帳號,點 Set 輸入這個帳號的名稱和密碼。
然后點OK。
到這里,按照 MSDN 中的幫助文檔,身份模擬應該就算設置成功了。
然后我做了一個簡單的測試頁面看看身份模擬是否成功,測試程序如下:
protected void Page_Load(object sender, EventArgs e)
{
Response.Write(System.Security.Principal.WindowsIdentity.GetCurrent().Name);
}
運行的結果居然是:
NT AUTHORITY\IUSR
也就是說 Asp.net 沒有用我設置的這個 MyAccount 帳號模擬運行,而是仍然用IUSR 帳號模擬運行。查了好久,才發(fā)現(xiàn)是下面問題造成:
用 Virtual Studio 2008 生成網站時,web.config 文件中默認會有這樣一個設置:
<identity impersonate="true" />這個設置是為 IIS 6 做身份模擬而設置的。在這種情況下,用戶身份的認證交給IIS來進行。當允許匿名登錄時,IIS將一個匿名登錄使用的標識(缺省情況下是IUSR)交給ASP.NET應用程序。當不允許匿名登錄時,IIS將認證過的身份標識傳遞給ASP.NET應用程序。ASP.NET的具體訪問權限由該賬號的權限決定。
這個設置在 IIS 7 下已經過時了,如果用古典模式,才需要這樣設置。
找到問題原因后,我把 <identity impersonate="true" /> 這個配置項從 web.config 中刪除了。刪除后,就可以用到前面在界面上配置的用戶名來模擬帳號了。
然而先不要高興的太早,緊接著就出現(xiàn)了新的問題。 錯誤如下:
Could not load file or assembly 'xxxx' or one of its dependencies. Access is denied.
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.Exception Details: System.IO.FileLoadException: Could not load file or assembly 'GetPathFileLib' or one of its dependencies. Access is denied.
Source Error:
從錯誤提示看,應該是目前這個模擬帳戶沒有足夠的權限去執(zhí)行 bin 目錄下的 xxxx.dll ,于是我把bin 目錄賦予模擬帳戶 MyAccount 完全控制的權限,結果還是不行,我在網上搜了一下,有人說需要將C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Temporary 這個目錄也設置為完全控制,于是照做了,還是不行。無奈之下,我把MyAccount 帳戶加入了 IIS_IUSRS這個群組,問題終于解決。
現(xiàn)在我們再運行上面那個顯示當前用戶的代碼顯示結果為
模擬的帳戶會變成 IIS APPPOOL\DefaultAppPool,這個設置是不正確的。
到這里IIS7 下設置身份模擬就全部完成了。
- Windows Server 2012 Iis8 php環(huán)境配置方法
- win2008下安裝SQL SERVER 2005出現(xiàn)IIS功能要求 警告解決方案
- windows server 2008R2系統(tǒng) IIS7.5配置偽靜態(tài)的方法(urlrewrite)
- Windows server 2008 iis7/iis7.5啟用父路徑的方法
- win2003 iis6.0 NET2.0的Server Application Unavailable的問題!
- Tomcat6.0與windows 2003 server 的IIS服務器集成
- windows server 2008/2012安裝php iis7 mysql環(huán)境搭建教程
- Windws Server 2008 R2 WEB環(huán)境配置之安裝IIS方法
- Microsoft Windows 2008 Server R2 iis7.5上傳文件限制200K更改
- Win2008 Server下IIS配置安裝教程
相關文章
ASP.NET頁面借助IFrame提交表單數據所遇到問題的解決方法分享
ASP.NET頁面借助IFrame提交表單數據所遇到問題的解決方法分享,碰到同樣問題的朋友可以參考下。2011-10-10在asp.net中使用加密數據庫聯(lián)接字符串保證數據安全
加密web.config可以有效保證數據庫用戶和密碼安全,下面是示例代碼,大家可以看看2014-09-09使用Fiddler調試visual studion多個虛擬站點的問題分析
本篇文章小編為大家介紹,使用Fiddler調試visual studion多個虛擬站點的問題分析。需要的朋友參考下2013-04-04asp.net下模態(tài)對話框關閉之后繼續(xù)執(zhí)行服務器端代碼的問題
asp.net下模態(tài)對話框關閉之后繼續(xù)執(zhí)行服務器端代碼的問題...2007-04-04asp.net類庫中添加WebService引用出現(xiàn)問題解決方法
在Web項目內添加WebService的引用是件很簡單的事情,不過對于一些新手朋友來說,就沒有那么簡單了,因為在添加的過程中總會遇到一些困難,接下來詳細介紹如何解決,感興趣的你可不要錯過了啊2013-02-02asp.net開發(fā)中常見公共捕獲異常方式總結(附源碼)
這篇文章主要介紹了asp.net開發(fā)中常見公共捕獲異常方式總結,結合實例形式較為詳細的分析了asp.net捕獲異常的相關技巧,并提供了完整的實例代碼供讀者下載參考,需要的朋友可以參考下2015-11-11