没有调用symfony Guard身份验证器

时间:2018-09-25 20:12:12

标签: symfony ldap symfony4 guard

我正在api端点中使用ldaptools-bundlefosuserbundle

我的security.yaml看起来像这样

security:
    encoders:
        FOS\UserBundle\Model\UserInterface: bcrypt
        LdapTools\Bundle\LdapToolsBundle\Security\User\LdapUser: plaintext

    role_hierarchy:
        ROLE_ADMIN: ROLE_USER
        ROLE_SUPER_ADMIN: ROLE_ADMIN

    providers:
        chain_provider:
            chain:
                providers: [ldap, fos_userbundle]
        fos_userbundle:
            id: fos_user.user_provider.username_email
        ldap:
            id: ldap_tools.security.user.ldap_user_provider

    firewalls:
        dev:
            pattern:  ^/(_(profiler|wdt)|css|images|js)/
            security: false
        login:
            pattern:  ^/login
            stateless: true
            anonymous: true
            provider: ldap
            json_login:
                check_path: /login
                username_path: username
                password_path: password
                success_handler: lexik_jwt_authentication.handler.authentication_success
                failure_handler: lexik_jwt_authentication.handler.authentication_failure
            guard:
                authenticators:
                    - ldap_tools.security.ldap_guard_authenticator
        main:
            pattern:   ^/
            provider: fos_userbundle
            stateless: true
            anonymous: true
            guard:
                authenticators:
                    - lexik_jwt_authentication.jwt_token_authenticator

    access_control:
        - { path: ^/login, roles: IS_AUTHENTICATED_ANONYMOUSLY }
        - { path: ^/, roles: ROLE_USER }

问题在于ldap防护身份验证器没有检查凭据。

当我将提供程序更改为ldap而不是fosuser时,我在BasePasswordEncoder类中得到了500个错误代码,如果我使用chain_provider,也会发生这种情况

  

警告:hash_equals():预期known_string为字符串,为null   给

是否缺少配置? 工作流程应如下:

  • 已通过ldap服务器对用户进行身份验证
  • 用户已正确加载,然后lexik负责令牌的生成
  

注意:工作流无需ldap即可工作,并且会生成令牌。

谢谢!

0 个答案:

没有答案