2016-06-09 2 views
0

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

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.username 


    access_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, а также этот пакет, wouldynt это будет проще использовать прямой PHP сделать это...?

+0

Вопрос2. Что вам нужно делать? Его не нужно расширять, если он не нужен –

+0

Вы должны использовать компонент Symfony LDAP. http://symfony.com/blog/new-in-symfony-2-8-ldap-component У меня никогда не было успеха с FR3DLdapBundle. – Mirouf

+0

@AndrzejPiszczek Я бы хотел, чтобы моя служба дала мне возможность подключаться к моему объявлению через LDAP, поэтому я могу ввести его и использовать то, что когда-либо ldap las является неприменимым для подключения и извлечения данных из моего AD – John

ответ

0

Вопрос 1:

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

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

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

+0

Эй, я знаю, как проверить существующие сервисы, на данный момент я не могу этого сделать, поскольку получаю сообщение об ошибке. И мой services.xlm загружается, поскольку у меня есть другие сервисы, которые уже используются. – John

Смежные вопросы