Php 使用Active Directory的Symfony用户身份验证

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

是否有一种使用Active Directory对symfony应用程序中的用户进行身份验证的方法?你能指出一些文件吗

编辑

我需要的是在我的应用程序中有一个透明的登录。用户在windows登录时进行一次身份验证,然后应使用相同的凭据访问所有应用程序,而无需再次询问域\用户名和密码

我在一个简单的php脚本中尝试了以下内容:

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登录相关的请求头时,该过滤器将自动让您登录。您似乎必须寻找一些第三方库来完成这项工作。