Symfony 4 - Множественная аутентификация

Добрый день,

Здесь я работаю над Symfony 4 и над модулем безопасности Symfony. Мне нужно настроить аутентификацию моих пользователей без использования таких плагинов, как Fosuser. Это по следующим причинам:

Пользователь подключается к «главному» серверу (ldap) со своим логином / паролем. Мне нужно получить его учетные данные, чтобы параллельно протестировать его учетную запись на других серверах ldap.

Когда пользователь аутентифицируется на основном сервере, он перенаправляется на страницу, сообщающую ему, все ли в порядке на других серверах. Если это не так, у него есть возможность обновить свою учетную запись.

Но документация касается «простых» случаев, и здесь я немного заблудился. Я протестировал несколько возможностей (аутентификация с помощью Guard, тест создания персонализированного провайдера ...) безрезультатно.

Мне нужно было бы понять механизмы аутентификации Symfony, чтобы создать собственную аутентификацию. Если у кого-то есть зацепка, которая могла бы направить меня, это было бы здорово.

Заранее спасибо.

Что ты пробовал? Разместите код о частях, с которыми вы боретесь.

Jason Roman 12.06.2018 18:34
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Symfony Station Communiqué - 17 февраля 2023 г
Symfony Station Communiqué - 17 февраля 2023 г
Это коммюнике первоначально появилось на Symfony Station , вашем источнике передовых новостей Symfony, PHP и кибербезопасности.
Управление ответами api для исключений на Symfony с помощью KernelEvents
Управление ответами api для исключений на Symfony с помощью KernelEvents
Много раз при создании api нам нужно возвращать клиентам разные ответы в зависимости от возникшего исключения.
2
1
609
1

Ответы 1

Думаю, нужно разделить свое действие на 2 этапа:

  1. Аутентификация с помощью LDAP на первом сервере, то есть с Компонент Symfony LDAP - это можно сделать с помощью стандартной формы аутентификации и FOSUserBundle
  2. Когда вы уже аутентифицированы, взаимодействуйте со вторым сервером в действии контроллера. Это можно сделать, написав весь код в Controler или в сервисе, предназначенном для взаимодействия с этим сервером LDAP. Вы даже можете использовать тот же компонент Symfony LDAP, что и раньше, но вам нужно будет вручную настроить другой экземпляр службы.

Привет, Спасибо за ответ. Проблема, я знаю, как решить ее на простом php без использования пакета безопасности symfony. Настоящая проблема в том, что при аутентификации пользователя я хотел бы сохранить его логин и пароль в сеансе. В настоящее время я получаю только логин. Это позволило бы мне выполнить тест подключения на других серверах после первой аутентификации. Я просмотрел такие параметры, как eraseCredendials, в файле конфигурации, но безрезультатно. После того, как я не знаю, очень ли целесообразно сохранять логин и пароль в сеансе. Возможно, я не имею в виду правильный метод.

M Sebius Gebs 13.06.2018 11:16

Если вам нужно сохранить пароль в сеансе, вам обязательно нужно его зашифровать. Хранить простой пароль в сеансе небезопасно. Чтобы сохранить пароль в сеансе (зашифрованный или нет), вам нужно будет перегрузить контроллер FOSuserBundle, который обрабатывает форму входа и выполняет аутентификацию или, что еще лучше, службу, которая используется контроллером для аутентификации. Я думаю, что это FOSUserManager, но я не уверен.

Łukasz Jakubek 13.06.2018 13:28

Другие вопросы по теме