Почему мое приложение websockets, развернутое на tomcat, не получает заголовки shibboleth?
Мой стек выглядит так:
- Apache httpd сервер 2.4.12: с mod_shibd, mod_proxy_http и mod_proxy_wstunnel
- Шибболет 2,5
- Apache Tomcat 7.0.54
Наш сценарий выглядит так:
--------- -------------- ---------------
|Browser| <----> |Apache httpd| <----> |Apache Tomcat|
--------- HTTPS -------------- HTTP ---------------
Конфигурация apache httpd:
<LocationMatch (^/test-websockets/.*)>
AuthType Shibboleth
ShibRequestSetting requireSession true
ShibUseHeaders On
ShibExportAssertion Off
Require valid-user
</LocationMatch>
ProxyPass /test-websockets ws://db-00032:13042/test-websockets
ProxyPassReverse /test-websockets ws://db-00032:13042/test-websockets
HTTP-соединитель apache-tomcat:
<Connector port="13042" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="13043" maxHttpHeaderSize="65536"/>
И, наконец, приложения (я), любые примеры веб-сокетов, которые поставляются с приложениями / examples бинарного дистрибутива tomcat.
Хорошей новостью является то, что приложение websockets и shibboleth SP работают! Так что я могу играть в добрую и старую змеиную видеоигру, проходя аутентификацию в нашем SSO и авторизованную моим shibboleth SP, ура!
Но, всегда есть, но, плохая новость заключается в том, что если я запрашиваю также хорошие и старые / servlets / servlet / RequestHeaderExample, то мои заголовки shibboleth не будут здесь, нет bueno!
Включив фильтр дампа запросов в приложении, я вижу заголовки HTTP-запросов, которые попадают в apache-tomcat:
===============================================================
START TIME =26-Apr-2016 15:59:36
requestURI=/test-websockets/servlets/images/return.gif
authType=null
characterEncoding=null
contentLength=-1
contentType=null
contextPath=/test-websockets
cookie=_ga=GA1.2.1832568672.1461567525
cookie=_saml_idp=aHR0cHM6Ly9jZXJuLmNoL2xvZ2lu
cookie=_shibsession
header=host=
header=user-agent=Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101 Firefox/38.0
header=accept=image/png,image/*;q=0.8,*/*;q=0.5
header=accept-language=en-US,en;q=0.5
header=accept-encoding=gzip, deflate
header=referer=
header=cookie=
header=connection=keep-alive
header=if-modified-since=Fri, 26 Sep 2014 13:25:30 GMT
header=if-none-match=W/"1231-1411737930000"
header=cache-control=max-age=0
locale=en_US
method=GET
pathInfo=null
protocol=HTTP/1.1
queryString=null
remoteAddr=128.142.201.245
remoteHost=128.142.201.245
remoteUser=null
requestedSessionId=null
scheme=http
serverName=THE ONE DECLARED IN THE APACHE HTTPD VIRTUALHOST SECTION
serverPort=80
servletPath=/servlets/images/return.gif
isSecure=false
------------------=--------------------------------------------
------------------=--------------------------------------------
authType=null
contentType=null
header=ETag=W/"1231-1411737930000"
remoteUser=null
status=304
END TIME =26-Apr-2016 15:59:36
===============================================================
Однако когда я запускаю кеш браузера (Ctrl + F5), я получаю свои заголовки:
Хорошо, я вижу, что теперь в заголовке хоста я получаю apache-tomcat, но я не думаю, что это как-то связано с проблемой, или, возможно, я ошибаюсь?
Есть мысли по этому поводу?
Заранее спасибо,
Луис
PS: мне интересно, может ли это быть связано с параметром --enable-proxy_wstunnel=shared. См. "Туннелирование защищенных соединений через веб-сокеты с apache".