用户IIS APPPOOL \ WebExploit登录失败

时间:2017-09-15 08:31:27

标签: asp.net sql-server iis owin webdeploy

我在ASP.NET MVC网站中对Active Directory使用Windows身份验证。我现在正在尝试部署网站进行测试,但问题是我在登录时遇到以下异常:

  

无法打开登录请求的数据库“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 个答案:

答案 0 :(得分:2)

如果您执行了已发布的代码,则在master数据库中创建了用户,而不是在用户数据库中。因此,您应该在用户数据库中创建它并从master中删除它。

所以你需要执行以下代码:

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