4
我開發了一個MVC應用程序並託管在服務器中。我使用服務帳戶作爲應用程序池標識,並且僅向該服務帳戶提供數據庫的完全訪問權限(系統管理員)。以下是我在Web.config &編碼中的配置。
Web.config文件:IIS模擬返回應用程序池用戶服務帳戶
<authentication mode="Windows" />
<identity impersonate="false"/>
在我的數據訪問層我用下面的編碼,以獲得Windows身份:
string windowsLogin = HttpContext.Current.User.Identity.Name.ToString();
現在我的問題是,當我訪問我的應用程序是正在採取應用程序池身份而不是Windows身份。
如果我在Web.config中將身份設置爲impersonate =「true」我能夠獲得Windows登錄,但應用程序和數據庫之間的通信發生在我的Windows登錄中,而不是應用程序池標識(服務帳戶)。
如何獲取訪問應用程序的用戶的身份而不是IIS APPPOOL用戶的身份?
目前還不清楚你在這裏試圖達到什麼樣的模仿和身份。身份模仿控制IIS工作進程運行時的身份。這通常不是大多數人想要的。他們只是希望HttpContext.Current.User.Identity是正確的。你真的希望工作進程作爲當前用戶運行嗎? –
這基本上是內聯網應用程序,我不想明確提供數據庫訪問給每個用戶,所以我創建了一個服務帳戶,並提供了完整的權限。當用戶點擊我的應用程序時,它應該使用他的Windows登錄名並顯示在我的用戶界面上,並且所有CURD操作應該只使用服務帳戶進行。 – Rajender
然後你不想冒充他人。相反,請在應用程序池屬性中指定您的應用程序用戶名。儘管保持Windows身份驗證,只需刪除模擬。 –