Win2008 server + IIS7 設(shè)置身份模擬(ASP.NET impersonation)
作者:eaglet
轉(zhuǎn)載請(qǐng)注明出處
IIS7 與 IIS 6 相比有了很大的改動(dòng),原來在 IIS 6 下可以的設(shè)置到了 IIS 7 下有的會(huì)發(fā)生變化。身份模擬的配置上,IIS7 和 IIS6有很大不同,網(wǎng)上IIS6的身份模擬的文章比較多,但介紹IIS7的比較少,我把的一些折騰的經(jīng)驗(yàn)在這篇博客中寫下來,以供參考。
IIS 7 有兩種 ASP.NET Application Mode。
一種是 集成模式(Integrated Mode) 這個(gè)是默認(rèn)的模式,也是微軟推薦的模式,另一種是 經(jīng)典模式(Classic Mode) ,這種模式是用于兼容老版本。集成模式使用更方便而且安全性更好,不需要把模擬帳戶的用戶名和密碼寫在配置文件中,這樣更安全也更方便。既然我們已經(jīng)用了IIS 7,那么我們還是按微軟推薦的方式使用集成模式比較好。
集成模式下,身份模擬可以完全通過界面來完成:
首先如上圖所示,IIS 7 在 Server Level 下有個(gè) IIS-> Authentication ,雙擊這個(gè)圖標(biāo)我們看到下面這個(gè)圖:
在這個(gè)圖中我們看到 IIS7 多了一個(gè) ASP.NET Impersonation 的功能,在 Actions 里面點(diǎn) Enable 開啟身份模擬功能,然后點(diǎn) Edit 編輯身份模擬。
我們看到上面這個(gè)編輯框,在這個(gè)編輯框中,我們指定要進(jìn)行身份模擬的帳號(hào),這個(gè)帳號(hào)必須是本地已經(jīng)存在的帳號(hào),點(diǎn) Set 輸入這個(gè)帳號(hào)的名稱和密碼。
然后點(diǎn)OK。
到這里,按照 MSDN 中的幫助文檔,身份模擬應(yīng)該就算設(shè)置成功了。
然后我做了一個(gè)簡單的測(cè)試頁面看看身份模擬是否成功,測(cè)試程序如下:
protected void Page_Load(object sender, EventArgs e)
{
Response.Write(System.Security.Principal.WindowsIdentity.GetCurrent().Name);
}
運(yùn)行的結(jié)果居然是:
NT AUTHORITY\IUSR
也就是說 Asp.net 沒有用我設(shè)置的這個(gè) MyAccount 帳號(hào)模擬運(yùn)行,而是仍然用IUSR 帳號(hào)模擬運(yùn)行。查了好久,才發(fā)現(xiàn)是下面問題造成:
用 Virtual Studio 2008 生成網(wǎng)站時(shí),web.config 文件中默認(rèn)會(huì)有這樣一個(gè)設(shè)置:
<identity impersonate="true" />這個(gè)設(shè)置是為 IIS 6 做身份模擬而設(shè)置的。在這種情況下,用戶身份的認(rèn)證交給IIS來進(jìn)行。當(dāng)允許匿名登錄時(shí),IIS將一個(gè)匿名登錄使用的標(biāo)識(shí)(缺省情況下是IUSR)交給ASP.NET應(yīng)用程序。當(dāng)不允許匿名登錄時(shí),IIS將認(rèn)證過的身份標(biāo)識(shí)傳遞給ASP.NET應(yīng)用程序。ASP.NET的具體訪問權(quán)限由該賬號(hào)的權(quán)限決定。
這個(gè)設(shè)置在 IIS 7 下已經(jīng)過時(shí)了,如果用古典模式,才需要這樣設(shè)置。
找到問題原因后,我把 <identity impersonate="true" /> 這個(gè)配置項(xiàng)從 web.config 中刪除了。刪除后,就可以用到前面在界面上配置的用戶名來模擬帳號(hào)了。
然而先不要高興的太早,緊接著就出現(xiàn)了新的問題。 錯(cuò)誤如下:
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:
從錯(cuò)誤提示看,應(yīng)該是目前這個(gè)模擬帳戶沒有足夠的權(quán)限去執(zhí)行 bin 目錄下的 xxxx.dll ,于是我把bin 目錄賦予模擬帳戶 MyAccount 完全控制的權(quán)限,結(jié)果還是不行,我在網(wǎng)上搜了一下,有人說需要將C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Temporary 這個(gè)目錄也設(shè)置為完全控制,于是照做了,還是不行。無奈之下,我把MyAccount 帳戶加入了 IIS_IUSRS這個(gè)群組,問題終于解決。
現(xiàn)在我們?cè)龠\(yùn)行上面那個(gè)顯示當(dāng)前用戶的代碼顯示結(jié)果為
模擬的帳戶會(huì)變成 IIS APPPOOL\DefaultAppPool,這個(gè)設(shè)置是不正確的。
到這里IIS7 下設(shè)置身份模擬就全部完成了。
- 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服務(wù)器集成
- 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配置安裝教程
相關(guān)文章
前臺(tái)JS(jquery ajax)調(diào)用后臺(tái)方法實(shí)現(xiàn)無刷新級(jí)聯(lián)菜單示例
前臺(tái)用AJAX直接調(diào)用后臺(tái)方法,老有人發(fā)帖提問,沒事做個(gè)示例詳細(xì)介紹一下,感興趣的朋友可以參考下2013-01-01
ASP.NET中 script runat server 的用法
這篇文章主要介紹了ASP.NET中<script runat="server">的用法,以一個(gè)較為簡單的例子分析了ASP.NET中<script runat="server">的特點(diǎn)及具體用法,對(duì)于asp.net初學(xué)者來說具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2014-11-11
使用本機(jī)IIS?Express開發(fā)Asp.Net?Core應(yīng)用圖文教程
IIS Express是一個(gè)Mini版的IIS,能夠支持所有的Web開發(fā)任務(wù),本篇經(jīng)驗(yàn)將和大家介紹使用自定義主機(jī)名來訪問運(yùn)行在IIS?Express上的站點(diǎn)程序的方法,希望對(duì)大家的工作和學(xué)習(xí)有所幫助2023-06-06
asp.net c# 調(diào)用百度pai實(shí)現(xiàn)在線翻譯,英文轉(zhuǎn)中文
本文詳細(xì)介紹asp.net c# 調(diào)用百度pai 實(shí)現(xiàn)在線翻譯以及英文轉(zhuǎn)中文實(shí)現(xiàn)代碼,需要了解的朋友可以參考下2012-12-12
IIS實(shí)現(xiàn)反向代理時(shí)Cookie域的設(shè)置方法
這篇文章主要給大家介紹了關(guān)于IIS實(shí)現(xiàn)反向代理時(shí)Cookie域的設(shè)置方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。2018-04-04
巧用ASP.NET預(yù)編譯Web應(yīng)用程序規(guī)避調(diào)用延遲的方法
ASP.NET 1.x的開發(fā)人員常常聽到用戶抱怨首次調(diào)用應(yīng)用程序的時(shí)候會(huì)碰到初始化延遲。畢竟,初次請(qǐng)求會(huì)引發(fā)一個(gè)系列過程,包括運(yùn)行庫初始化、分析、把ASPX頁面編譯成中間語言、把方法即時(shí)編譯成本地代碼等等。2011-08-08
ASP.NET數(shù)據(jù)綁定的記憶碎片實(shí)現(xiàn)代碼
ASP.NET數(shù)據(jù)綁定的記憶碎片實(shí)現(xiàn)代碼,需要的朋友可以參考下2012-10-10
asp.net計(jì)算一串?dāng)?shù)字中每個(gè)數(shù)字出現(xiàn)的次數(shù)
計(jì)算一串?dāng)?shù)字中每個(gè)數(shù)字出現(xiàn)的次數(shù),可以這樣子,先判斷輸入的字符串是不是數(shù)字組成,還是否包含有其它字符2012-05-05

