为什么我在 tomcat 上部署的 websockets 应用程序没有获取 shibboleth 标头?

为什么我在 tomcat 上部署的 websockets 应用程序没有获取 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

apache-tomcat http 连接器:

<Connector port="13042" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="13043" maxHttpHeaderSize="65536"/>

最后是应用程序,任何随附的 websockets 示例/例子应用二进制 tomcat 分发版

好消息websockets 应用程序和 shibboleth SP 都正常工作了!所以我可以玩经典的贪吃蛇视频游戏了,这个游戏由我们的 SSO 进行身份验证,并由我的 shibboleth SP 授权,太棒了!

在此处输入图片描述

,总有一个但是,坏消息如果我要求也好又老/servlets/servlet/RequestHeader示例我的口令标头不在那里,不好

在此处输入图片描述

启用请求转储过滤器在应用程序中,我可以看到命中 apache-tomcat 的 HTTP 请求标头:

===============================================================
 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,但是我不认为这与问题有关,或者也许我错了?

对此有什么想法吗?

提前致谢,

路易斯

附言:我想知道这是否与–enable-proxy_wstunnel =共享选项 请参阅“使用 Apache 隧道建立安全的 websocket 连接”

相关内容