我正在使用Symfony 3.1开发一个应用程序,我在Ldap身份验证方面遇到了问题。以下代码:
services.yml
ldap:
class: 'Symfony\Component\Ldap\LdapClient'
arguments:
- server.test.br # host
- 389 # port
- 3 # version
- false # SSL
- false # TLS
security.yml
security:
providers:
chain_provider:
chain:
providers: [my_ldap]
my_ldap:
ldap:
service: ldap
base_dn: dc=test,dc=br
search_dn: cn=s00027,ou=Contas Administrativas de Sistemas,ou=Departamento de Tecnologia,dc=test,dc=br
search_password: pass
default_roles: ROLE_USER
uid_key: sAMAccountName
filter: '({uid_key}={username})'
firewalls:
dev:
pattern: ^/(_(profiler|wdt)|css|images|js)/
security: false
admin:
anonymous: true
pattern: ^/
form_login_ldap:
provider: chain_provider
service: ldap
dn_string: 'sAMAccountName={username}'
check_path: /login_check
login_path: /login
logout:
path: /logout
target: /
default:
form_login_ldap:
provider: chain_provider
service: ldap
dn_string: "uid={username},DC=test,DC=br"
check_path: /login_check
login_path: /login
access_control:
- { path: ^/login, roles: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/admin, roles: ROLE_ADMIN }
SecurityController.php
/**
* @Route("/login_check", name="login_check")
*/
public function loginAction(Request $request) {
$authenticationUtils = $this->get('security.authentication_utils');
$error = $authenticationUtils->getLastAuthenticationError();
$lastUsername = $authenticationUtils->getLastUsername();
return $this->render(
'AppBundle:Security:login.html.twig', array(
// last username entered by the user
'last_username' => $lastUsername,
'error' => $error,
)
);
}
我已尽力而为,并且在日志中没有收到任何错误,只有关于LdapClient类的消息已被弃用。
有人能帮帮我吗?请。
答案 0 :(得分:1)
Hello Symfony 3开发人员!
解决了这个问题我认为问题不是使用Guard,尽管是Symfony 3.1。但是,使用LdapTools解决了我的问题,并且很容易使用。 谢谢!
答案 1 :(得分:0)
如果Symfony LDAP解决方案不起作用,您可能必须使用“FR3DLdapBundle”和FOSBundle。
我在这里有一个教程: https://alvinbunk.wordpress.com/2016/03/25/symfony-ad-integration/
这绝对有效,因为我一直都在使用它。
编辑#2
我创建了第二篇文章,使AD身份验证更容易: https://alvinbunk.wordpress.com/2017/09/07/symfony-ldap-component-ad-authentication/
我应该解决你上面提到的问题。