Safari,Jetty:未发送不作为身份验证标头使用的Web套件

时间:2018-03-16 12:47:28

标签: authentication websocket safari jetty

我们有一个Spring-MVC应用程序,在Jetty服务器上部署了websockets。我们还有如下所示的HashLoginService配置为jetty。当应用程序启动时,我们可以使用FF,Chrome,Opera,IE上完整的websockets功能访问它,但不能访问Safari。我们唯一得到的是401.禁用HashLoginService后,websockets工作正常。 Jetty中是否存在某些配置或需要某些配置,以便websockets在Safari中使用身份验证。谢谢。

Safari version : 11.0.3(desktop version)
Jetty - 9.4 

jetty.xml:

  <Arg>
            <New class="org.eclipse.jetty.security.HashLoginService">
               <Set name="name">Default Realm</Set>
               <Set name="config"><SystemProperty name="jetty.home" default="."/>/etc/realm.properties</Set>
            </New>
         </Arg>
      </Call>
来自项目的

web.xml:

<security-constraint>
            <web-resource-collection>
                <web-resource-name>username</web-resource-name>
                <url-pattern>/*</url-pattern>
            </web-resource-collection>
            <auth-constraint>
                <role-name>user-role</role-name>
            </auth-constraint>
        </security-constraint>

            <security-constraint>
                <web-resource-collection>
                    <web-resource-name>username</web-resource-name>
                    <url-pattern>/*</url-pattern>
                </web-resource-collection>
                <auth-constraint>
                    <role-name>user-role</role-name>
                </auth-constraint>
            </security-constraint>

        <security-role>
            <role-name>user-role</role-name>
        </security-role>

知道我们能做什么吗?谢谢。

1 个答案:

答案 0 :(得分:1)

Safari和WebSockets显然不支持标准HTTP身份验证。

请参阅:https://bugs.webkit.org/show_bug.cgi?id=80362

您可以在不同的stackoverflow答案中找到一些解决方法。

HTTP headers in Websockets client API