Мы хотим защитить наш веб-клиент 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. Еще мучаюсь вторая проблема ...