Использовать NGINX для аутентификации AD обоих API пользователи и веб-пользователи

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

​   foobar.com
    |-foobar.com/api
    |-foobar.com/webapp
    |-foobar.com/proxy

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

Я видел сообщения вроде https://www.nginx.com/blog/nginx-plus-authenticate-users/ , в которых описывается, как заставить NGINX использовать AD-аутентификацию пользователей, когда пользователи заполняют форма входа в систему, но в нашем случае это не сработает. Это связано с тем, что некоторые из этих пользователей будут взаимодействовать со службой API и прокси-службой через операции HTTP CRUD и / или команды curl. Кроме того, эти пользователи API и прокси могут принадлежать другим приложениям, а не людям. В этом смысле они являются полностью программными взаимодействиями. Я хочу перенаправить порт 443 на IP C: 443 поэтому я могу подключить A: 443 ---- к --- c: 443, если я использую (A: 443 NAT на C: 443), это не сработало -A ...

у сервера два IP-адреса A и B (шлюз по умолчанию - B) Я хочу перенаправить порт 443 на IP C: 443 поэтому я могу подключить A: 443 ---- к --- c: 443

, если я использую (A: 443 NAT к C: 443), это не сработает

-A PREROUTING -d A/32  -p tcp -m tcp --dport 443 -j  DNAT --to-destination C:443
-A POSTROUTING -d C/32 -p tcp -m tcp --dport 443 -j SNAT --to-source A:443

, если я использую (B: 443 NAT для C: 443) Я могу подключить B: 443, но это не то, что я хочу

  -A PREROUTING -d B/32  -p tcp -m tcp --dport 443 -j  DNAT --to-destination C:443
  -A POSTROUTING -d C/32 -p tcp -m tcp --dport 443 -j SNAT --to-source B:443

, и это не сработало, даже если я использую (A: 443 NAT к B: 443 B: 443 к C: 443)

-A PREROUTING -d A/32  -p tcp -m tcp --dport 443 -j  DNAT --to-destination B:443
-A POSTROUTING -d B/32 -p tcp -m tcp --dport 443 -j SNAT --to-source A:443

-A PREROUTING -d B/32  -p tcp -m tcp --dport 443 -j  DNAT --to-destination C:443
-A POSTROUTING -d C/32 -p tcp -m tcp --dport 443 -j SNAT --to-source B:443

, поэтому как я могу сделать эту работу, спасибо

0
задан 26 October 2017 в 10:06
1 ответ

Если я правильно вас понял (если вы хотите перенаправить порт 443 с A на C), вам следует настроить iptables следующим образом:

*nat
-A PREROUTING -d A/32 -p tcp -m tcp --dport 443 -j DNAT --to-destination C:443
-A POSTROUTING -p tcp -m tcp --dport 443 -j MASQUERADE

Также вы должны проверить конфигурацию iptables на предмет правила -A FORWARD -j REJECT --reject-with icmp-host -hibited он вообще отключает пересылку. И вы должны были включить net.ipv4.ip_forward в sysctl .

0
ответ дан 5 December 2019 в 07:17

Теги

Похожие вопросы