Аутентификация PHP / LDAP с использованием VPN - PullRequest
1 голос
/ 16 февраля 2010

У меня интересная ситуация, и у Google, похоже, нет никакой информации по этой проблеме.

Я занимаюсь разработкой программного обеспечения на веб-языке, написанного на PHP. У большинства наших клиентов есть своего рода настройка сервера CAS для аутентификации, и мы просто указываем нашему сайту на их сервер аутентификации. У нас есть новый клиент, у которого нет сервера CAS, поэтому я сказал им, что мы можем использовать LDAP, предпочтительно с SSL (LDAPS). Я не уверен, что у них есть возможность делать LDAPS, но реальная проблема заключается в том, что (на данный момент) они требуют, чтобы соединение LDAP находилось в одной сети, поэтому мне сначала нужно было бы подключиться к их VPN, и затем запросите их сервер LDAP.

Теперь я уверен, что смогу установить VPN-соединение на нашем сервере и направить весь трафик через него, но это создаст единую точку отказа для всех наших клиентов и будет полностью вне нашего контроля. ; так что это действительно не вариант.

Я мог бы найти способ установить соединение, аутентифицировать пользователя, а затем освободить соединение; но это кажется плохим выбором, который занял бы много времени.

Итак, кто-нибудь знает, могу ли я (а) открыть VPN-соединение в только PHP и затем использовать это соединение для подключения к серверу LDAP или (2) каким-то образом кодировать PHP / настроить мой сервер так, что только запросы к серверу LDAP используют VPN, а все остальные запросы используют интернет-соединение по умолчанию?

Я действительно немного растерялся, что касается хорошего способа сделать это, любая помощь будет принята с благодарностью. Большое спасибо!

1 Ответ

1 голос
/ 16 февраля 2010

Есть ли SSH-сервер на стороне клиента? Если это так, возможно, вы могли бы договориться с клиентом о туннелировании соединения через SSH-сервер на их конце. Затем вы можете попросить ваше приложение открыть туннель SSH непосредственно перед его аутентификацией и закрыть его, когда это будет сделано, аналогично VPN.

Вы могли бы сделать это с VPN в зависимости от базовой ОС. В любом случае это не будет красиво и будет не хватать производительности. Так или иначе, туннель будет доступен для всех приложений на сервере, которые он будет использовать, пока он открыт.

Если бы это был я, я бы написал веб-сервис для проверки подлинности, заключил с клиентом соглашение о его размещении и передал бы все попытки проверки подлинности веб-службе. В идеале вы бы настроили его на использование HTTPS.

В зависимости от сети, настроенной между вашим приложением и вашим клиентом, а также от того, насколько вы оба контролируете свои сети, ваш клиент может перенаправлять запросы с одного из ваших IP-адресов в их сеть - мы делали это один раз с третий участник. Нам был необходим доступ к одной из их служб в частной подсети, и, поскольку мы оба работали с одним и тем же провайдером, мы договорились, что провайдер настроит и поддержит маршрутизацию, поэтому мы фактически получили полностью частный туннель.

...