是否可以在PHP中使用用户Windows身份验证(在iis中设置)进行数据库连接?可以使用Windows身份验证与IIS上的PHP进行ODBC连接吗?
这是可能在.NET世界中通过一种称为“模拟”的技术。这是否也存在于PHP/IIS世界?
编辑:我使用的数据库是MS SQL Server 2005中
是否可以在PHP中使用用户Windows身份验证(在iis中设置)进行数据库连接?可以使用Windows身份验证与IIS上的PHP进行ODBC连接吗?
这是可能在.NET世界中通过一种称为“模拟”的技术。这是否也存在于PHP/IIS世界?
编辑:我使用的数据库是MS SQL Server 2005中
如果您可以使用Keberos对PHP应用程序进行身份验证,则可以使用Kerberos委派将凭据传递到辅助服务器。
Ken Schaefer有一系列关于Kerberos的博客,其中包括this article的授权。
必须将每个用户单独验证?如果没有,则可以将IIS设置为模拟一个人。
我知道如果您通过系统DSN创建它,您可以提供您想要与ODBC连接关联的登录名和密码。我假设登录un/pw可以是windows用户帐户。
这样做似乎限制你一个预定的帐户。 也许可以创建一个组,添加所需的用户,密码保护目录并只允许组访问该目录。
虽然你没有说你正在使用哪个数据库。如果你使用MS Access,我知道你可以隐藏你的数据库密码。看我的comment on another post。
你在PHP上运行IIS的方式是哪种?作为独立的CGI或ISAPI?
我的首选解决方案是在SQL Server上为访问提供一个单独的用户,而不是试图强制IIS以模拟用户的身份运行,这对开发机器来说很好,但稍后对于生产或甚至是升级。
但是,如果您使用的是FastCGI,则可以模拟一个用户,该用户使用配置文件从我记得的配置文件运行该进程,从而传递用户登录的凭据。
通过Kerberos模仿是最安全的答案,也是最简单的管理方式。在访问像数据库这样的资源时,单独的“合成”用户意味着您基本上绕过了数据库授权的所有可能性,获得了重复的访问管理点,并且在数据库级别获得了零追踪(您只能看到MySyntheticUser试图访问某些内容,而不是谁在它后面)。
话虽如此,我应该警告你,微软的Kerberos并不总是如你所期望的那样直截了当。在纯.NET解决方案,IIS,SQL Server 2005,AD域和Internet Explorer之间,我们遇到了很大的麻烦。其中大部分是为了完全正确地配置信任。另外,虽然我自己不是PHP开发人员,但我发现some indications可能在访问Kerberos库功能时遇到问题。找出你可以得到什么支持SSPI。此外,您的PHP进程必须具有模拟用户的必要权限,我相信这些权限可以通过IIS进行管理。
我不一定期待所有这些都很简单或容易,特别是微软很少有支持非微软语言和平台的煽动者。
可能工作。但分别验证每个用户会更可取... – 2009-02-27 09:51:04