Аутентификация PHP/LDAP с использованием VPN
Вопрос
У меня интересная ситуация, и у Google нет никакой информации по этой проблеме.
Я разрабатываю веб-программное обеспечение, написанное на PHP.У большинства наших клиентов есть своего рода настройка CAS-сервера для аутентификации, и мы просто указываем нашему сайту их сервер аутентификации.У нас есть новый клиент, у которого нет сервера CAS, поэтому я сказал им, что мы можем использовать LDAP, желательно с SSL (LDAPS).Я не уверен, есть ли у них возможность использовать LDAPS, но реальная проблема в том, что (на данный момент) им требуется, чтобы соединение LDAP было в той же сети, поэтому мне сначала нужно подключиться к их VPN, и затем запросите их сервер LDAP.
Я уверен, что мог бы установить VPN-соединение на нашем сервере и направить весь трафик через него, но это создало бы единую точку отказа для всех наших клиентов и было бы полностью вне нашего контроля;так что это действительно не вариант.
Вероятно, я мог бы найти способ установить соединение, аутентифицировать пользователя, а затем разорвать соединение;но это кажется плохим выбором, который займет много времени.
Итак, кто-нибудь знает, могу ли я (а) открыть VPN-соединение в только PHP, а затем использовать это соединение для подключения к серверу LDAP или (2) каким-то образом запрограммировать PHP/настроить мой сервер так, чтобы только запросы к серверу LDAP использовали VPN, а все остальные запросы использовали подключение к Интернету по умолчанию?
Я действительно немного растерян, как это сделать, буду очень признателен за любую помощь.Большое спасибо!
Решение
Есть ли SSH-сервер на стороне клиента?Если да, возможно, вы могли бы договориться с клиентом о туннелировании соединения к SSH-серверу на его конце.Затем вы можете попросить свое приложение открыть туннель SSH непосредственно перед аутентификацией и закрыть его после завершения, аналогично VPN.
Вы можете сделать это с помощью VPN в зависимости от базовой ОС.В любом случае это не будет красиво и будет неэффективно.Кроме того, в любом случае туннель будет доступен для использования всеми приложениями на сервере, пока он открыт.
Если бы это был я, я бы написал веб-сервис для аутентификации, заключил соглашение с клиентом о размещении этого для меня и передавал все попытки аутентификации веб-сервису.В идеале вам также следует настроить использование HTTPS.
В зависимости от сети, настроенной между вашим приложением и вашим клиентом, а также от того, насколько вы оба контролируете свои сети, ваш клиент может иметь возможность маршрутизировать запросы с одного из ваших IP-адресов в свою сеть — однажды мы сделали это с третьей стороной. .Нам нужен был доступ к одному из их сервисов в частной подсети, и, поскольку мы оба работали с одним и тем же интернет-провайдером, мы достигли соглашения, что интернет-провайдер будет настраивать и поддерживать маршрутизацию, так что мы фактически получили полностью частный туннель.