Как автоматически войти на другой сайт, если требуется CSRF-токен (PHP, SSO, LDAP) - PullRequest
0 голосов
/ 20 февраля 2020

Я пытаюсь создать сайт intr anet, где, если это возможно, все его части должны быть единым входом, чтобы пользователь, который вошел в свою учетную запись Active Directory в Windows, сразу же вошел в систему. с той же учетной записью на всех страницах моего сайта через LDAP. Теперь основной компонент этого сайта построен с использованием CMS, и оттуда пользователь должен иметь возможность щелкать ссылки на этом сайте, чтобы перейти к другим инструментам, которые мы используем, например, к системе тикетов. Как CMS, так и программное обеспечение системы билетов могут самостоятельно подключаться через LDAP, но я хочу для этого единого решения.

Поэтому я искал и нашел это для сервера apache: mod_authnz_sspi Это, очевидно, позволяет вы используете $_SERVER['REMOTE_USER'] в PHP, чтобы прямо сейчас зарегистрировать пользователя windows. Теперь я застрял, так как я не совсем уверен, как использовать это для автоматического входа пользователя на сайты. Что мне с этим делать, чтобы получить желаемое SSO-решение?

Я думал о создании простой формы HTML с теми же полями, что и в форме билета, которую я пробую. войти. Затем я бы попытался отправить POST-данные в форму системы заявок и автоматически войти в систему. Для имени пользователя я бы отправил $_SERVER['PHP_AUTH_USER'], а для пароля $_SERVER['PHP_AUTH_PW']. Однако система тикетов защищена CSRF-токеном, который я должен был бы включить в отправленные POST-данные, но не могу знать заранее, поскольку он генерируется в момент доступа к странице.

Итак было бы очень полезно, если бы кто-то мог сказать мне, как заставить SSO работать с инструментом mod_authnz_sspi (или другим). Если нет другого способа, кроме как с помощью HTML -формы, которая отправляет данные POST, как я пытался, было бы полезно, если бы кто-то знал обходной путь для проблемы CSRF-Token!

1 Ответ

0 голосов
/ 20 февраля 2020

Вы можете создать приложение AUTH, которое администрирует ваших пользователей (подробности, разрешения и т. Д. c.). Когда пользователь обращается к другому приложению, если оно не вошло в систему, перенаправьте его в приложение AUTH. Приложение AUTH проверяет учетные данные пользователя, генерирует access_token и перенаправляет пользователя обратно в приложение, которое пытается получить доступ. Более подробную информацию вы найдете здесь https://www.mutuallyhuman.com/blog/choosing-an-sso-strategy-saml-vs-oauth2/

...