SymfonyでLDAP(Active Directory)を使ったユーザ認証
参考サイト
https://symfony.com/doc/3.4/components/ldap.html
https://symfony.com/doc/3.4/security/ldap.html
https://alvinbunk.wordpress.com/2017/09/07/symfony-ldap-component-ad-authentication/
PHPでLDAPを使うために
php.iniでldapを有効にする必要があります。
extension=ldapがコメントアウトされていたので解除しました。
libsasl.dllファイルの確認
今回はxampp環境で実行しました。
C:\xampp\apache\bin、C:\xampp\php内にlibsasl.dllがありますが、バージョンがphpとapacheで異なる場合には失敗するようです。
今回はphp内のファイルが新しかったため、apache側のlibsasl.dllを置き換えました。
下記のように設定し、Basic認証でログインすることができました。
設定箇所抜粋
# security.yml
security:
providers:
my_ldap:
ldap:
service: Symfony\Component\Ldap\Ldap
base_dn: dc=domain,dc=com
search_dn: "CN=admin,DC=domain,DC=com"
search_password: password
default_roles: ROLE_USER
uid_key: sAMAccountName
firewalls:
main:
provider: my_ldap
pattern: ^/
http_basic_ldap:
service: Symfony\Component\Ldap\Ldap
dn_string: 'DOMAIN\{username}'
# services.yml
services:
Symfony\Component\Ldap\Ldap:
arguments: ['@Symfony\Component\Ldap\Adapter\ExtLdap\Adapter']
Symfony\Component\Ldap\Adapter\ExtLdap\Adapter:
arguments:
- host: 192.168.1.10
port: 389
encryption: none
options:
protocol_version: 3
referrals: false