Назад | Перейти на главную страницу

Попробуйте обратный прокси-сервер vsphere веб-клиента с Apache

Мы хотим защитить наш веб-клиент VMWare vsphere 6.5 с помощью уже существующего и работающего обратного прокси-сервера Apache 2.4 (преимущества, например, централизованный мониторинг, mod_security и др.)

И клиент связи <--> прокси, и прокси <--> бэкэнд (= vsphere) должны быть защищены TLS. Сертификаты есть и все в порядке. DNS настроен соответственно.

Клиенты уже могут получить доступ к стартовой странице vsphere через прокси-сервер, например. https: // vsphere.domain.tld /

Сетевой анализ Firefox показывает, что все запросы в порядке и приняты, например

    302 GET /vsphere-client/ [FQDN] document html

до /vsphere-client/UI.swf

Но как только пользователь щелкает ссылку «vSphere Web Client (Flash)» для аутентификации и входа в меню, выдается код состояния 400. Ссылка «vSphere Web Client (Flash)» указывает на / vsphere-client / и, очевидно, вызывает запрос SAML.

    400 GET https://vsphere.domain.tld/websso/SAML2/SSO/vsphere.local?SAMLRequest=zVRba9sw[...] [FQDN] subdocument

Журнал vsphere sso показывает:

    tomcat-http--38 ERROR org.opensaml.common.binding.decoding.BaseSAMLMessageDecoder] SAML message intended destination endpoint 'https://vsphere-internal.domain.tld/websso/SAML2/SSO/vsphere.local' did not match the recipient endpoint 'https://vsphere.domain.tld/websso/SAML2/SSO/vsphere.local'

Конфигурация виртуального хоста на обратном прокси-сервере Apache (отрывок):

    SSLProxyEngine on
    ProxyPreserveHost on
    ProxyRequests off
    ProxyPass        / https://vsphere.domain.tld/
    ProxyPassReverse / https://vsphere.domain.tld/

    ProxyPass        /vsphere-client https://vsphere.domain.tld/vsphere-client/
    ProxyPassReverse /vsphere-client https://vsphere.domain.tld/vsphere-client/
    ProxyPass        /websso/SAML2/SSO https://vsphere.domain.tld/websso/SAML2/SSO/
    ProxyPassReverse /websso/SAML2/SSO https://vsphere.domain.tld/websso/SAML2/SSO/

    # new, to solve the name binding problem (see 1st answer)
    RequestHeader set Host "vsphere-internal.domain.tld"

С последним дополнением «RequestHeader», которое фактически просто отменяет параметр PreserveHost, я теперь могу видеть страницу входа в vsphere и войти в систему, но затем страница снова зависает:

    tomcat-http--10 ERROR com.vmware.identity.BaseSsoController] Could not parse tenant request java.lang.IllegalStateException: org.opensaml.xml.security.SecurityException: SAML message intended destination endpoint did not match recipient endpoint

Есть предложения, как получить полную страницу?

Я решил решить первую проблему, то есть «предполагаемая конечная точка назначения ... не соответствует конечной точке получателя», добавив имя хоста серверной части (= веб-клиент vsphere) в конфигурацию vhost Apache:

    RequestHeader set Host "<backend hostname>"

(здесь: vsphere-internal.domain.tld), но, как правильно объяснил ezra-s, это просто отменяет параметр PreserveHost. Поэтому я удалил параметры RequestHeader и PreserveHost. Еще мучаюсь вторая проблема ...