Аутентификация PHP/LDAP с использованием VPN

StackOverflow https://stackoverflow.com/questions/2273993

  •  20-09-2019
  •  | 
  •  

Вопрос

У меня интересная ситуация, и у 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-адресов в свою сеть — однажды мы сделали это с третьей стороной. .Нам нужен был доступ к одному из их сервисов в частной подсети, и, поскольку мы оба работали с одним и тем же интернет-провайдером, мы достигли соглашения, что интернет-провайдер будет настраивать и поддерживать маршрутизацию, так что мы фактически получили полностью частный туннель.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top