2017-09-15 99 views
0

我在ASP.NET MVC網站中使用Active Directory中的Windows身份驗證。我現在試圖部署該網站進行測試,但問題是我在登錄時會收到以下異常:用戶IIS登錄失敗APPPOOL WebExploit

無法打開登錄請求的數據庫「PrincipalServerDB」。登錄失敗。 用戶'IIS APPPOOL \ WebExploit'登錄失敗。

我按照這個教程部署到測試:https://docs.microsoft.com/en-us/aspnet/web-forms/overview/deployment/visual-studio-web-deployment/deploying-to-iis

而且我使用的身份驗證如下所述: http://tech.trailmax.info/2016/03/using-owin-and-active-directory-to-authenticate-users-in-asp-net-mvc-5-application/ 使用OWIN認證。

我意識到我的問題缺乏理解,但這是因爲我不明白髮生了什麼事情。我曾嘗試在這篇文章https://stackoverflow.com/a/7698316/4714502描述下列步驟,但我已經做了Grant.sql腳本授予訪問權限如下:

IF NOT EXISTS (SELECT name FROM sys.server_principals WHERE name = 'IIS APPPOOL\DefaultAppPool') 
BEGIN 
    CREATE LOGIN [IIS APPPOOL\DefaultAppPool] 
     FROM WINDOWS WITH DEFAULT_DATABASE=[master], 
     DEFAULT_LANGUAGE=[us_english] 
    END 
    GO 
    CREATE USER [WebExploitUser] 
     FOR LOGIN [IIS APPPOOL\DefaultAppPool] 
    GO 
    EXEC sp_addrolemember 'db_owner', 'WebExploitUser' 
    GO 

在第一個教程,他們說:

當應用程序運行在開發計算機上的IIS中,應用程序使用默認應用程序池的憑據訪問數據庫。但是,默認情況下,應用程序池標識沒有打開數據庫的權限。所以你必須運行腳本來授予該權限。在本節中,您將創建稍後運行的腳本,以確保應用程序可以在IIS中運行時打開數據庫。

這意味着它是具有權利的應用程序?不是真正的用戶? 不知道如何解決此問題...

如果我查看SSMS,在我的PrincipalServerDB屬性中,授權顯示WebExploitUser的定義。

這裏是我的IIS應用程序池:

enter image description here

'Démarré' 是指在法國開始。

+1

可以在IIS檢查哪些用戶被用來運行應用程序池?它看起來像是'IIS APPPOOL \ WebExploit'。如果是這樣,那就是問題所在,因爲你已經給了IIS APPPOOL \ DefaultAppPool帳戶訪問數據庫的權限。如果沒有,還有其他的東西沒有正確配置。 –

+0

@Jan_V我都在我的應用程序池中。我實際上已經嘗試使用「IIS APPPOOL \ DefaultAppPool」和「IIS APPPOOL \ WebExploit」運行授權腳本。我將在IIS –

回答

1

如果您執行的是您發佈的代碼,那麼您在master數據庫中創建了該用戶,而不是在用戶數據庫中。所以你應該在用戶數據庫中創建它並從master中刪除它。

所以,你需要執行下面的代碼:

use PrincipalServerDB; 
create user [IIS APPPOOL\WebExploit] from login [IIS APPPOOL\WebExploit]; 
EXEC sp_addrolemember 'db_owner', 'IIS APPPOOL\WebExploit'; 
+0

中添加我的應用程序池的屏幕截圖好的,我可以直接在SSMS中執行此操作嗎? –

+0

是的,當然,你可以在SSMS中執行它 – sepupic

+1

我用你的代碼更新了我的答案,使該db的用戶db_owner – sepupic

相關問題