当前位置: 首页 > 知识库问答 >
问题:

FR3DLDAPBundle-身份验证请求失败

满雨石
2023-03-14
fos_user:
    db_driver: orm # other valid values are 'mongodb' and 'couchdb'
    firewall_name: main
    user_class: AppBundle\Entity\User
    from_email:
        address: "%mailer_user%"
        sender_name: "%mailer_user%"

fr3d_ldap:
    driver:
        host: ldap.forumsys.com
        port: 389
        username: cn=read-only-admin,dc=example,dc=com
        password: password
        bindRequiresDn: true
    user:
        baseDn: dc=example,dc=com
        filter: (&(objectClass=person))
        attributes:
            - { ldap_attr: uid,  user_method: setUsername }
encoders:
    FOS\UserBundle\Model\UserInterface: bcrypt
    AppBundle\Entity\User: plaintext

erase_credentials: false

role_hierarchy:
    ROLE_ADMIN:       ROLE_USER
    ROLE_SUPER_ADMIN: [ROLE_USER, ROLE_ADMIN]

providers:
    chain_provider:
        chain:
            providers: [fr3d_ldapbundle,fos_userbundle]

    fr3d_ldapbundle:
        id: fr3d_ldap.security.user.provider

    fos_userbundle:
        id: fos_user.user_provider.username

firewalls:
    dev:
        pattern: ^/(_(profiler|wdt)|css|images|js)/
        security: false
    main:
        pattern:    ^/
        fr3d_ldap:  ~
        form_login:
            provider: chain_provider
            always_use_default_target_path: true
            default_target_path: /
        logout:     true
        anonymous:  true

encoders:
    AcmeBundle\Acme\User\LdapUser: plaintext

access_control:
    - { path: ^/login$, role: IS_AUTHENTICATED_ANONYMOUSLY }
    - { path: ^/, role: ROLE_USER }
fr3d_ldap:
driver:
    host: ldap.forumsys.com
    port: 389
    #version: 3
    username: cn=read-only-admin,dc=example,dc=com
    password: password
    bindRequiresDn: true

user:
    baseDn: uid=euclid,dc=example,dc=com
    filter: (&(objectClass=person))
    attributes:
        - { ldap_attr: uid,  user_method: setUsername }

但是这个配置的问题是我只能以用户Euclid的身份登录。但我想作为每一个可用的用户登录。

但是对于另一个配置,我会在日志中得到这样的消息,即找到了该用户,但已经发生了驱逐。

2017-04-20 09:36:16]ldap_driver.debug:ldap_search(dc=example,dc=com,(&(&(objectclass=person))(UID=einstein)),[array]){“操作”:“ldap_search”,“base_dn”:“dc=example,dc=com”,“filter”:“(&(&(objectclass=person),(UID=einstein))”,“attributes”:[]}[]

[2017-04-20 09:36:17]security.info:在LDAP上找到用户einstein{“操作”:“LoadUserbyUsername”,“Username”:“einstein”,“结果”:“found”}[]

[2017-04-20 09:36:17]ldap_driver.debug:ldap_bind(einstein,****){“action”:“ldap_bind”,“bind_rdn”:“einstein”}[]

[2017-04-20 09:36:17]ldap_driver.debug:异常“zend\ldap\exception\ldapexception”,消息“0x1:未能检索帐户:einstein的DN[0x1:意外的结果计数(16)for:(&(ObjectClass=Person))],在/vendor/zendframework/zend-ldap/src/ldap.php:805堆栈跟踪:#0/vendor/fr3D/ldap-bundle/driver/zendldapdriver.php(82):zend\ldap\ldap->bind(”manager.php(78):fr3D\ldapbundle\driver\zendldapdriver->bind(Object(appbundle\entity\user),'password')#2/vendor/fr3D/ldap-bundle/security/authentication/ldapauthenticationprovider.php(90):fr3D\ldapbundle\ldap\manager->bind(Object(appbundle\entity\user),'password')#3....

[2017-04-20 09:36:17]ldap_driver.debug:ldap_search(dc=example,dc=com,(&(&(objectclass=person))(uid=einstein))),[array]){“操作”:“ldap_search”,“base_dn”:“dc=example,dc=com”,“filter”:“(&(&(objectclass=person)”(uid=einstein))“,”attributes“:[]}[]

[2017-04-20 09:36:17]security.info:在LDAP上找到html" target="_blank">用户einstein{“操作”:“LoadUserbyUsername”,“Username”:“einstein”,“结果”:“found”}[]

[2017-04-20 09:36:17]安全信息:身份验证请求失败。{“Exception”:“[object](symfony\component\security\core\exception\badcredentialsException(code:0):错误凭据。在/vendor/symfony/symfony/src/symfony/src/symfony/crc/sympony/component/security/core/corent/authentication/provider/userauthenticationprovider.php:90,

我不知道我做错了什么,我刚刚开始使用LDAP。

我已经改变了我的代码,就像Alvin发布的示例一样。但是我得到以下错误:Symfony Dev log。系统创建用户,但我在日志文件中得到错误。

共有1个答案

夏知
2023-03-14

所以我最终发现了我的代码中的问题。

我忘记正确设置用户实体中DN字段的set和get函数。这是我的代码:

/**
 * Set Ldap Distinguished Name.
 *
 * @param string $dn Distinguished Name
 */
public function setDn($dn)
{
    // TODO: Implement setDn() method.
}

/**
 * Get Ldap Distinguished Name.
 *
 * @return null|string Distinguished Name
 */
public function getDn()
{
    // TODO: Implement getDn() method.
}

但这是阿尔文教程中正确的一条:

 /**
 * {@inheritDoc}
 */
public function setDn($dn)
{ $this->dn = $dn; }

/**
 * {@inheritDoc}
 */
public function getDn()
{ return $this->dn; }

谢谢艾尔文的帮助和很棒的教程。

 类似资料:
  • 我试图得到一个API查询到python。命令行 给出一些json输出。myToken是一个十六进制变量,始终保持不变。我想从python中调用它,这样我就可以循环使用不同的ID并分析输出。有什么想法吗?在需要身份验证之前,我已经使用urllib2完成了这项工作。我还查看了requests模块,但不知道如何实现。 非常感谢。

  • Tweepy API请求twitter return me Twitter错误响应:状态代码=401。 这是我的实际代码: 我曾试图用tweepy软件包删除推文,并获得了所有必需的密钥。镊子包装不起作用吗?有人能帮我解决这个问题吗。

  • 当使用Firebase Auth进行身份验证时,我想自动输入通过SMS接收的代码。我能够接收短信并手动完成身份验证过程,但当我使用SmsRetriever时,应用程序崩溃,然后显示底部工作表对话框。这是Logcat中显示的所有内容: [SmsRetrieverHelper]SMS校验码请求失败:未知状态代码:17010 null 用户输入其电话号码的代码片段: 这是片段中的代码,用户必须在其中输入

  • 编辑: org.springframework.security日志: ***但是,如果我在获得有效身份验证后查看日志中的一些请求: 调试2022-01-17 12:31:03.945 IST“将SecurityContextHolder设置为SecurityContextImpl[Authentication=OAuth2AuthenticationToken[Principal=com..se

  • 问题内容: 尝试使用JavaMail中的NTLM连接到Exchange服务器。我可以连接到SMTP,但不能连接到IMAP。我还可以使用相同的主机/用户名/密码通过OS X Mail.app应用程序进行身份验证,帐户类型=“ IMAP”,端口143,ssl = false,authentication = NTLM,域名=“。 连接代码: 输出: 我尝试通过http://www.oracle.com

  • 我相对来说是JMeter的新手,但是我很难让HTTP Sampler登陆到一个安全的网页上。我认为它需要NTLM认证,所以我使用HTTP授权管理器来传递BlazeMeter指南中指定的凭证 我的授权管理器具有以下值: 基本网址: https:// [测试站点] 用户名: [我的用户名] 密码: [我的密码] 域:与基本网址相同 机制: BASIC_DIGEST 然而,我只是得到一个401错误(见下