Service unknown in Symfony

  Kiến thức lập trình

I’m working on Symfony 6.4, and I went to define two LDAP services (one main, one backup).

I have this configuration :

services:
    ...     
    main_ldap_adapter:
      class: SymfonyComponentLdapAdapterExtLdapAdapter
      arguments:
        - host: '%env(LDAP_SERVER_URL)%'
          port: 389
          options:
            protocol_version: 3
            referrals: false    

    backup_ldap_adapter:
      class: SymfonyComponentLdapAdapterExtLdapAdapter
      arguments:
        - host: '%env(LDAP_SERVER_BACKUP_URL)%'
          port: 389
          options:
            protocol_version: 3
            referrals: false   
    
    main_ldap:
      class: SymfonyComponentLdapLdap
      arguments: ['@ldap_adapter']
      tags: ['ldap']

    backup_ldap:
      class: SymfonyComponentLdapLdap
      arguments: ['@backup_ldap_adapter']
      tags: ['ldap']

    ...

My security.yaml file :

security:
    ...
    providers:
      ldap_main_provider:
        ldap:
          service: main_ldap
          base_dn: '%env(LDAP_BASE_DN)%'
          search_dn: '%env(LDAP_SEARCH_DN)%'
          search_password: '%env(LDAP_SEARCH_PASSWORD)%'
          default_roles: ROLE_USER
          uid_key: uid
       ldap_backup_provider:
        ldap:
          service: backup_ldap
          base_dn: '%env(LDAP_BASE_DN)%'
          search_dn: '%env(LDAP_SEARCH_DN)%'
          search_password: '%env(LDAP_SEARCH_PASSWORD)%'
          default_roles: ROLE_USER
          uid_key: uid
      ...
    firewalls:
        dev:
          pattern: ^/(_(profiler|wdt)|css|images|js)/
          security: false
        login:
          pattern: ^/api/login
          provider: ldap_main_provider
          form_login_ldap:
            login_path: api_login
            check_path: api_login
            username_parameter: login
            password_parameter: password
            service: SymfonyComponentLdapLdap
            dn_string: '%env(LDAP_DN_STRING)%'
            success_handler: AppSecurityAuthenticationAuthenticationSuccessHandler
            failure_handler: AppSecurityAuthenticationAuthenticationFailureHandler
     ...

When I try to connect, I have this error : “Cannot check credentials using the “SymfonyComponentLdapLdap” ldap service, as such service is not found. Did you maybe forget to add the “ldap” service tag to this service?”

Do you know why ?
When I’ve only one service defined this way :

SymfonyComponentLdapLdap:
      arguments: ['@ldap_adapter']
      tags: ['ldap']

and I use SymfonyComponentLdapLdap in my security.providers.ldap_main_provider.ldap.service, it’s working…

Do you know what I can do please ?
Thanks !

I see my services in php bin/console debug:container | grep ldap

New contributor

phpdev is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.

LEAVE A COMMENT