当前位置:  开发笔记 > 后端 > 正文

IIS7,SQL 2008和ASP.NET MVC安全性

如何解决《IIS7,SQL2008和ASP.NETMVC安全性》经验,为你挑选了2个好方法。

我有一个我正在研究的ASP.NET MVC应用程序.我一直在使用IIS6和SQL 2008 Express在Windows Server 2003上进行开发,一切都运行良好.我最近决定试用Windows 7测试版,所以现在我正在使用IIS7,并且遇到了与我的数据库连接的问题,我似乎无法弄清楚.

我可以很好地运行/调试应用程序,但每当我尝试访问需要访问数据库的页面时,我都会收到以下错误:

"无法打开登录请求的数据库"MyDatabaseName".登录失败.用户'IIS APPPOOL\MyApplicationName'登录失败."

我显然有一些错误的安全配置设置,但我似乎找不到任何关于如何正确设置它的好文档.我试过在数据库上给予NETWORK SERVICE权限,但这似乎不起作用.任何人都知道我需要做什么来给这个数据库"IIS APPPOOL\MyApplicationName"权限?我错过了一些明显的东西吗

谢谢...



1> Eric Falsken..:

如果您不使用ActiveDirectory,请忽略上述所有其他解决方案.混乱源于IIS 7.5中新的ApplicationPoolIdentity设置默认值(MS不断更改身份机制)

    打开SQL Management Studio,以管理员身份连接到本地计算机.

    展开安全分支.

    右键单击Logins并选择New Login

    在" 登录名"字段中,键入" IIS APPPOOL\MyApplicationName ".千万不要点击搜索按钮.用户配置文件实际上并不存在于本地计算机上,而是根据需要动态创建.



2> pupeno..:

该错误表示Web应用程序无权访问您的数据库.在Windows 7/IIS 7上,默认情况下每个应用程序池都有自己的用户.似乎这个想法是通过限制Web应用程序可以执行的操作来提高安全性(如果它从外部受到攻击和控制).您可以更改正在运行的应用程序池的用户,但这将破坏其自身的目的.更好的方法似乎是为池的用户提供所需的权限(而不是更多).

在SQL Management Studio上,连接到您希望Web应用程序连接的服务器(使用SQL Server 2008测试).去

Security -> Log ins

右键单击,新登录.在出现的表单中,除了用户名之外,将所有内容保留为默认值,您必须键入Web应用程序尝试使用的任何用户名,在本例中为"IIS APPPOOL\MyApplicationName".请注意,该对话框的搜索功能无法找到或检查该用户是否有效,但它仍然有效.

仍然在连接到服务器的SQL Management Studio上

Databases -> *YOUR-DATABASE* -> Security -> Users

右键单击和新用户.我不确定用户名字段是否有任何影响,我只是将其设置为用户名的最后一部分,如MyApplicationName.然后我将登录名设置为IIS APPPOOL\MyApplicationName.您可以单击...按钮并使用检查和搜索,这次它可以工作.如果您不执行上一步,则该用户将不在此处.然后为此用户提供您想要的任何权限,例如db_datareader.

就是这样,你得到了许可.如果缺少权限是你的问题,那么它应该被解决(或者至少,我刚刚解决了这个问题).

我总共有2小时的IIS经验和大约三个星期的SQL Server以及不到两个月的微软技术,所以我的建议很简单,我可能完全错了.(如果其他人可以确认这些是正确的步骤,请随时删除最后一个警告).

推荐阅读
殉情放开那只小兔子
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有