2015-03-16 2 views
0

Я очень благодарен, если кто-то может помочь мне использовать аутентификацию LDAP в Symfony2 Framework. Основная идея заключается в том, чтобы правильно использовать LDAP, чтобы знать всех пользователей без использования таблицы interne и без логина (вставить имя пользователя/пароль), скажем, что я хочу быть чем-то вроде автоматической идентификации.Проверка подлинности с помощью Symfony с LDAP

+0

Существует множество пакетов, выполняющих аутентификацию LDAP. Проверьте на http://knpbundles.com/search?q=ldap –

+0

Извините ..., Да, это первый материал, который я делаю, но нашел только несколько пакетов, которые используют внутреннюю таблицу с FOSuserBundle, и у нас все еще есть классическая форма входа в систему, то, что я хочу сделать, - это автоматически получать идентификацию для каждого пользователя без того, чтобы пользователь вводил свой идентификатор/пароль на странице входа, надеюсь, что я скажу вам спасибо. – ASSUMA

+0

Я использовал https://github.com/Maks3w/FR3DLdapBundle вместе с FOSUserBundle довольно легко в прошлом. – qooplmao

ответ

0

Вы ищете единый вход в систему. Вам действительно не нужно иметь дело с LDAP, но ваш веб-сервер должен быть настроен правильно. Веб-сервер имеет дело с аутентификацией вместо вашего приложения. Затем вы можете получить логин пользователя из переменной среды REMOTE_USER. Это доверяет вам, что вы можете доверять. In Symfony is special security provider for that (начиная с версии 2.6).

Update: Добавлено более зависимая информация для IIS

  1. Включить проверку подлинности Windows на IIS (some maybe helpful link и убедитесь, что ваш сервер и клиенты находятся в домене).
  2. Попробуйте поймать $ _SERVER ['REMOTE_USER'] в простом скрипте PHP - вы должны увидеть свой домен.

Если все будет хорошо, вы можете играть с провайдером remote_user Symfony по ссылке выше. Вам также необходимо иметь пользователей в базе данных (т. Е. Только вход в домен, электронную почту и, возможно, некоторые флаги) для использования ролей, ведения журнала и т. Д. Также убедитесь, что ваш сервер находится в локальной зоне интрасети.

Обновление 2: Добавлен пример конфигурации Symfony

security.yml

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

    providers: 
    in_memory: 
     memory: 
     users: 
      - { name: 'DOMAIN\login', roles: [ 'ROLE_USER' ] } 

    firewalls: 
    dev: 
     pattern: ^/(_(profiler|wdt)|css|images|js)/ 
     security: false 

    secured_area: 
     pattern: ^/demo 
     remote_user: 
     provider: in_memory 

    access_control: 
    - { path: ^/demo/secured/login, roles: ROLE_ADMIN } 

Это пример для чистой установки Symfony 2.6 с AcmeDemoBundle. Попробуйте поиграть с ним самостоятельно. На домашней странице вы вообще не вошли в систему. Если проверка подлинности Windows работает, и ваш логин DOMAIN \ login, вы войдете в систему после нажатия кнопки «Запустить демонстрационную кнопку». Если вы попытаетесь получить доступ к /demo/secured/login, вы получите 403. Надеюсь, этого достаточно, как введение, которое Symfony может сделать для вас.

+0

Hy, спасибо, но я не могу обойтись без LDAP-сервера, это изначально, Да, я хочу, чтобы для всех пользователей был один знак, есть ли другой вариант? – ASSUMA

+0

Если вы хотите сделать возможным вход в систему для своих пользователей без имени пользователя и пароля, вы должны доверять своему веб-серверу и настроить его. Ваш веб-сервер будет использовать LDAP для аутентификации пользователей, и ваша задача - просто ввести имя пользователя из REMOTE_USER. Клиент должен быть зарегистрирован под учетной записью домена и использовать браузер, который может отправлять учетные данные через протокол ntlm или kerberos в фоновом режиме на веб-сервер. Что такое окружающая среда? Клиенты - это окна? Веб-сервер - это IIS, Apache или что-то еще? Какой браузер вы используете? – kba

+0

Hy Да, мой environement - это IIS, и я использую IE11 в качестве браузера. – ASSUMA

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