Внедрение единого входа Symfony2

У меня есть базовое понимание концепции безопасности в Symfony2. Теперь я пытаюсь реализовать функцию единого входа для многодоменного веб-сайта.

Сама концепция SSO довольно проста:

  • Домен A является доменом cookie; пользователи могут войти в этот домен
  • При входе в домен B пользователь перенаправляется в домен A, где запрашивается Одноразовый пароль. Для получения этого пароля пользователю требуется сеанс в домене.
  • После получения OTP пользователь возвращается в домен B, который будет соответствовать OTP сеансу в домене A.
  • Если это согласовано, сеанс будет создан для домена B. Сеанс будет проверен на сеанс в домене A для каждого последующего запроса с этой точки.

Реализация брандмауэра/аутентификации для домена А может быть выполнена, как обычно. По моему мнению, мне нужно:

  • Настройка брандмауэра для домена B
  • Создайте прослушиватель для этого брандмауэра, который каким-то образом перенаправляет пользователя в домен A (более конкретный: uri, который запрашивает OTP)
  • Создайте поставщик проверки подлинности, который обрабатывает OTP и создает сеанс для домена B
  • Создайте еще один прослушиватель, который проверяет достоверность сеанса на сеансе в домене A

Однако я мог бы действительно использовать некоторые советы о том, как это сделать в комплекте. Если кто-нибудь может помочь мне здесь, это будет здорово.

Кроме того, я еще не уверен, как реализовать OTP, или как сравнить эти два сеанса, и убедиться, что оба они действительны. Это произойдет позже, мне нужно сначала запустить этот рабочий процесс.

Ответы

Ответ 1

Чтобы получить многодоменное SSO, вы можете реализовать решение SAML. Посмотрите на программное обеспечение simplesamlphp и в этом расширении для symfony1 https://github.com/chtitux/sfSAMLPlugin

Чтобы решить проблему OTP, вы можете использовать, например, LinOTP2, совместимый с simplesamlphp: https://github.com/lsexperts/simplesamlphp-linotp