Php 使用Active Directory的Symfony用户身份验证
是否有一种使用Active Directory对symfony应用程序中的用户进行身份验证的方法?你能指出一些文件吗 编辑 我需要的是在我的应用程序中有一个透明的登录。用户在windows登录时进行一次身份验证,然后应使用相同的凭据访问所有应用程序,而无需再次询问域\用户名和密码 我在一个简单的php脚本中尝试了以下内容:Php 使用Active Directory的Symfony用户身份验证,php,windows,symfony1,active-directory,apache2.2,Php,Windows,Symfony1,Active Directory,Apache2.2,是否有一种使用Active Directory对symfony应用程序中的用户进行身份验证的方法?你能指出一些文件吗 编辑 我需要的是在我的应用程序中有一个透明的登录。用户在windows登录时进行一次身份验证,然后应使用相同的凭据访问所有应用程序,而无需再次询问域\用户名和密码 我在一个简单的php脚本中尝试了以下内容: if (!isset($_SERVER['PHP_AUTH_USER'])) { header('WWW-Authenticate: Basic realm="my re
if (!isset($_SERVER['PHP_AUTH_USER'])) {
header('WWW-Authenticate: Basic realm="my realm"');
header('HTTP/1.0 401 Unauthorized');
exit;
} else {
echo "<p>Hello {$_SERVER['PHP_AUTH_USER']}.</p>";
echo "<p>You entered {$_SERVER['PHP_AUTH_PW']} as your password.</p>";
}
if(!isset($\u SERVER['PHP\u AUTH\u USER'])){
标题('WWW-Authenticate:Basic realm=“我的领域”);
标题(“HTTP/1.0 401未经授权”);
出口
}否则{
echo“你好{$\u服务器['PHP\u AUTH\u USER']}.”;
echo“您输入了{$\u SERVER['PHP\u AUTH\u PW']}作为密码。”;
}
然后我就弹出了身份验证表。有没有办法将windows登录时使用的凭据传递给标头
谢谢,
Radu.您可以尝试一下吗?您可以通过为
sfDoctrineGuardPlugin
编写自己的身份验证调用来实现这一点(如果您使用的是doctor)。我在这里引用插件的话:
使用外部方法检查用户密码
如果您不想存储
数据库中的密码,因为您
已经有一个LDAP服务器,一个
.htaccess文件,或者如果存储
密码在另一个表中,您可以
提供您自己的checkPassword
可调用(静态方法或函数)
在app.yml
中:
all:
sf_guard_plugin:
check_password_callable: [MyLDAPClass, checkPassword]
symfony什么时候会打电话给
$this->getUser()->checkPassword()
方法,它将调用您的方法或
功能。你的函数必须取2
参数,第一个是
用户名,第二个是
密码。它必须返回true或true
错。下面是一个这样的模板
功能:
function checkLDAPPassword($username, $password)
{
$user = LDAP::getUser($username);
if ($user->checkPassword($password))
{
return true;
}
else
{
return false;
}
}
但是,有没有一种方法可以使用用户在windows登录时已经提供的凭据自动登录用户?好的,没有。对我来说,唯一正确的方法是创建类似于
sfGuardBasicSecurityFilter
的过滤器,当他注意到与windows登录相关的请求头时,该过滤器将自动让您登录。您似乎必须寻找一些第三方库来完成这项工作。