Я новичок в AWS ... Я установил один экземпляр EC2, на котором работают Nginx и PHP 7.1.6. а прокси-сервер <--> backend (= 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. По-прежнему страдает вторая проблема ...