有没有办法在使用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>";
}
然后我弹出了身份验证表单。有没有办法将标题传递给Windows登录时使用的凭据?
谢谢, 拉杜。
答案 0 :(得分:1)
您可以尝试bhLDAPAuthPlugin吗?
答案 1 :(得分:1)
您可以通过编写自己的sfDoctrineGuardPlugin
可调用身份验证来实现这一目标(如果您使用的是Doctrine)。我在这里引用插件'README:
使用外部方法检查用户密码
如果你不想存储 因为你在数据库中的密码 已经有一个LDAP服务器了 .htaccess文件或存储您的 密码在另一个表中,你可以 提供你自己的
checkPassword
可调用的(静态方法或函数) 在app.yml
:all: sf_guard_plugin: check_password_callable: [MyLDAPClass, checkPassword]
当symfony打电话给
$this->getUser()->checkPassword()
方法,它会调用你的方法或 功能。你的功能必须2 参数,第一个是 用户名和第二个是 密码。它必须返回true或 假。这是一个这样的模板 功能:function checkLDAPPassword($username, $password) { $user = LDAP::getUser($username); if ($user->checkPassword($password)) { return true; } else { return false; } }