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