Настройка и обслуживание Symfony FR3DLdapBundle

Я пишу тестовое приложение в Symfony3 и пытаюсь настроить аутентификацию пользователей LDAP поверх моей FOSUserBundle Я нашел этот пакет Symfony LDAP: FR3DLdapBundle Я следовал за документацией и «я думаю, что настроил это правильно». После того как я сделал конфигурацию, как указано Вот когда я обновляю свою страницу, ничего не происходит, ошибок тоже нет. Чтобы проверить, произошло ли что-нибудь, я использовал Wireshark, чтобы отследить, был ли вызов / пакет LDAP, но ничего.

security.yml:

security:
erase_credentials: false

firewalls:
main:
pattern: ^/
fr3d_ldap:  ~
form_login:
always_use_default_target_path: true
default_target_path: /profile
provider: fos_userbundle
csrf_token_generator: security.csrf.token_manager
# if you are using Symfony < 2.8, use the following config instead:
# csrf_provider: form.csrf_provider

logout:       true
anonymous:    true

role_hierarchy:
ROLE_ADMIN:       ROLE_USER
ROLE_SUPER_ADMIN: ROLE_ADMIN

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

fr3d_ldapbundle:
id: fr3d_ldap.security.user.provider

fos_userbundle:
id: fos_user.user_provider.usernameaccess_control:
- { path: ^/login$, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/register, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/resetting, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/admin/, role: ROLE_ADMIN }

`Congig.yml:

fos_user:
db_driver: orm # other valid values are 'mongodb', 'couchdb' and 'propel'
firewall_name: main
user_class: Test\TestBundle\Entity\User

# app/config/config.yml
fr3d_ldap:
driver:
host:                ldap.forumsys.com
#       port:                389    # Optional
#       username:            foo    # Optional
#       password:            bar    # Optional
#       bindRequiresDn:      true   # Optional
#       baseDn:              ou=users, dc=host, dc=foo   # Optional
#       accountFilterFormat: (&(uid=%s)) # Optional. sprintf format %s will be the username
#       optReferrals:        false  # Optional
#       useSsl:              true   # Enable SSL negotiation. Optional
#       useStartTls:         true   # Enable TLS negotiation. Optional
#       accountCanonicalForm: 3 # ACCTNAME_FORM_BACKSLASH this is only needed if your users have to login with something like HOST\User
#       accountDomainName: HOST
#       accountDomainNameShort: HOST # if you use the Backslash form set both to Hostname than the Username will be converted to HOST\User
user:
baseDn: ou=users, dc=host, dc=foo
filter: (&(ObjectClass=Person))
#       usernameAttribute: uid # Optional
attributes:          # Specify ldap attributes mapping [ldap attribute, user object method]
#           - { ldap_attr: uid,  user_method: setUsername } # Default
#           - { ldap_attr: cn,   user_method: setName }     # Optional

#           - { ldap_attr: ...,  user_method: ... }         # Optional
#   service:
#       user_hydrator: fr3d_ldap.user_hydrator.default # Overrides default user hydrator
#       ldap_manager: fr3d_ldap.ldap_manager.default   # Overrides default ldap manager`

Документация по этому пакету плохая, но ее рекомендуют все, кого я ищу в Google ldap Symfony.

Вопрос 1. Как я могу проверить или узнать, что что-то происходит …?

Предположим, что это работает, тогда я создал сервис, подобный этому:

`        <!-- LDAP Connection -->
<service id="test.testldap.ldap_adapter"class="Test\TestBundle\CambioLDAP\LdapAdapter">
<argument type="service" id="fr3d_ldap.driver"/>
</service>`

Также добавлен LdapAdapter:

<?php

namespace Test\TestBundle\CambioLDAP;

use FR3D\LdapBundle\Model\LdapUserInterface;

class LdapAdaptor
{
private $ldap;

public function __construct
(
LdapUserInterface $userInterface
) {
$this->ldap = $userInterface;
}
}

Даже не уверен, что его LdapUserInreface, который я должен использовать, дает мне только два варианта:

getDn
setDN

В любом случае Symfony выдает мне эту ошибку:

The service "test.testldap.ldap_adapter" has a dependency on a non-existent service "fr3d_ldap.driver".

Конечно, fr3d_ldap.driver из config.yml.

Вопрос2 Какие классы я должен расширять

Извините за длину этого вопроса, но кажется, что Symfony2-3 очень плохо охвачен LDAP, так же как и этим пакетом, не будет ли проще использовать прямой php для этого …?

0

Решение

Вопрос 1:

Список загруженных сервисов вы можете проверить в консоли:

PHP отладка приложения / консоли: контейнер | grep YOUR_SERVICE_ID

Может быть, ваш XML-файл со службами не загружается? Проверьте в файле YourBundle \ DependencyInjection \ YourBundleExtension, какой файл службы загружается.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]