SSO в приложении PHP с использованием учетных данных AD, независимых от веб-сервера - PullRequest
1 голос
/ 15 мая 2019

У меня есть приложение PHP, работающее с Nginx на сервере Linux, и оно успешно интегрируется с моим Active Directory, используя LDAP .

В текущем сценарии пользователь может создать новый логин для приложения или использовать свои учетные данные Windows для входа в приложение.

Теперь я пытаюсь реализовать полную систему единого входа (SSO), и пользователь, вошедший в систему со своими учетными данными на компьютере Windows в домене, сможет открыть приложение, зарегистрированное без повторного использования учетных данных.

Проводим некоторые исследования, поскольку мой сервер Linux не находится в одном домене, поэтому лучше всего использовать NTLM (старый и небезопасный), Протокол Kerberos или Согласовать протокол ( это будет выбор между NTLM и Kerberos для каждого запроса), в зависимости от версии Windows и того, что реализовано в контроллере домена.

В Интернете есть множество учебных пособий, а также хороших тем по теме здесь, в SO. Эта еще одна ссылка показывает хороший обзор возможностей использования Apache в качестве веб-сервера (для опции Kerberos я обнаружил порт Nginx , так что это не главная проблема).

Хорошо, я создал несколько тестовых приложений с использованием этих подходов (включая все изменения на стороне браузера , ограниченные Firefox), но все они являются зависимыми от веб-сервера (Apache, Nginx или даже IIS) , Поскольку мое приложение уже полностью интегрировано с AD через LDAP, я заинтересован в каком-либо независимом от веб-сервера решении. Есть ли способ «обойти» аутентификацию на веб-сервере и получить информацию о зарегистрированном пользователе прямо в моем PHP-коде (клиент (Firefox) на сервер (PHP))?

Мои лучшие догадки на данный момент - это некий тип "чистой" реализации PHP Kerberos , для которого требуется модуль PECL или NTLM , который небезопасен и по-прежнему запрашивает пользователя учетные данные в первом запросе.

Я знаю, что, возможно, это невозможно, но я спрашиваю об этом случае, когда я пропустил какую-то важную информацию в этом исследовании. Можно ли получить информацию о пользователях Windows напрямую в PHP?

1 Ответ

1 голос
/ 24 мая 2019

Если вы не настаиваете на nginx, используйте Apache Web Server 2.4 с mod_auth_gssapi, это отличный, высококачественный код, написанный людьми, которые знают, что они делают.Я занимаюсь этим уже много лет для своих вещей из PHP.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...