我需要通过PHP代码使用Windows身份验证连接到Sql Server 2008,并像使用SQL身份验证连接到Sql Server时一样传递用户名和密码。我需要基于Windows身份验证的用户/密码进行身份验证。
当我使用SQL身份验证时,我能够通过在数据源(ODBC)配置工具中创建名为“DBconnect”的系统DSN来连接。然后,我可以使用以下php代码成功验证登录ID并使用用户输入的登录ID和密码连接到数据库:
现在当SQL Server使用Windows身份验证时,我需要做同样的事情。 我想在数据源(ODBC)配置工具中创建一个名为
我有这段代码:
现在我可以使用这段代码:
当我在打字输入用户名和密码时,就会看到一个弹出窗口提示我登录。它连接成功后,我可以使用相同的
不幸的是,基于这种方法,我无法对网站上的用户进行身份验证。当我在弹出窗口中输入错误的用户名和密码时,它没有任何响应(弹出窗口会再次出现)。如果我取消弹出窗口,它将显示401错误:
401-未经授权:由于凭据无效而拒绝访问。
我是否使用正确的方式通过Windows身份验证连接到SQL Server?是否有其他可能的方法通过动态传递Windows身份验证用户名和密码连接SQL Server?
我也尝试使用LDAP来对Active Directory进行身份验证,但它不起作用。
我正在使用Amazon EC2机器上的SQL SERVER 2008、IIS7和PHP5.3。
这是我正在使用的Flex应用程序:
如果在弹出窗口中输入错误的用户名/密码时能够接收到错误代码,那么可能会解决问题。其他通过Windows身份验证连接SQL Server并直接传递用户名/密码的方法也可以解决我的问题。
当我使用SQL身份验证时,我能够通过在数据源(ODBC)配置工具中创建名为“DBconnect”的系统DSN来连接。然后,我可以使用以下php代码成功验证登录ID并使用用户输入的登录ID和密码连接到数据库:
$con = odbc_connect("DBconnect", "sql_user", "sql_password");
现在当SQL Server使用Windows身份验证时,我需要做同样的事情。 我想在数据源(ODBC)配置工具中创建一个名为
DBConnect_NT
的系统DSN,并将其设置为使用网络登录ID使用Windows身份验证验证登录ID的真实性。我有这段代码:
$con = odbc_connect("DBconnect_NT", "windows_user", "windows_pass");
但是它没有起作用。我得到了这个错误:
查询准备/执行错误。28000
我在IIS7管理器的身份验证部分更改了一些设置。
Windows Authentication = Enabled
Anonymous Authentication = Disabled
现在我可以使用这段代码:
$con = odbc_connect("DBconnect_NT", "", "");
当我在打字输入用户名和密码时,就会看到一个弹出窗口提示我登录。它连接成功后,我可以使用相同的
$con
连接对象进行其他查询。不幸的是,基于这种方法,我无法对网站上的用户进行身份验证。当我在弹出窗口中输入错误的用户名和密码时,它没有任何响应(弹出窗口会再次出现)。如果我取消弹出窗口,它将显示401错误:
401-未经授权:由于凭据无效而拒绝访问。
我是否使用正确的方式通过Windows身份验证连接到SQL Server?是否有其他可能的方法通过动态传递Windows身份验证用户名和密码连接SQL Server?
我也尝试使用LDAP来对Active Directory进行身份验证,但它不起作用。
我正在使用Amazon EC2机器上的SQL SERVER 2008、IIS7和PHP5.3。
这是我正在使用的Flex应用程序:
http://example.net/Webservice/connect.php
。Flex从表单动态地将用户名/密码传递给此弹出窗口,因此连接。但是,当提供错误的用户名/密码时,弹出窗口难以处理。它不断回来,并使Flex应用程序挂起。如果在弹出窗口中输入错误的用户名/密码时能够接收到错误代码,那么可能会解决问题。其他通过Windows身份验证连接SQL Server并直接传递用户名/密码的方法也可以解决我的问题。
EXECUTE AS
更改为不同的用户:https://msdn.microsoft.com/en-us/library/ms181362.aspx - Nick.McDermaid