Внедрение единого входа 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