发生Keycloak / TomEE未经授权的Websocket连接EOFException

时间:2018-08-18 07:20:49

标签: websocket keycloak tomee eofexception tomee-7

我在建立与TomEE-Plus WebApp的Websocket连接方面遇到一些麻烦。仅当我从配置文件中删除Keycloak或为websocket连接生成令牌时,websocket才能连接。

我正在使用以下版本:

  • TomEE:加上7.0.5
  • KeyCloak:4.2.1

我的web.xml文件:

...
<security-constraint>
    <web-resource-collection>
        <web-resource-name>Customers</web-resource-name>
        <url-pattern>/*</url-pattern>
        <http-method>OPTIONS</http-method>
    </web-resource-collection>
</security-constraint>

<security-constraint>
    <web-resource-collection>
        <web-resource-name>WS</web-resource-name>
        <url-pattern>/public/*</url-pattern>
        <http-method>GET</http-method>
        <http-method>OPTIONS</http-method>
        <http-method>POST</http-method>
        <http-method>HEAD</http-method>
        <http-method>DELETE</http-method>
        <http-method>TRACE</http-method>
        <http-method>PUT</http-method>
    </web-resource-collection>
</security-constraint>

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

<login-config>
    <auth-method>KEYCLOAK</auth-method>
    <realm-name>TeamServerInterface</realm-name>
</login-config>

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

例外:

  

java.io.EOFException       在org.apache.tomcat.util.net.NioEndpoint $ NioSocketWrapper.fillReadBuffer(NioEndpoint.java:1262)       在org.apache.tomcat.util.net.NioEndpoint $ NioSocketWrapper.read(NioEndpoint.java:1196)       在org.apache.tomcat.websocket.server.WsFrameServer.onDataAvailable(WsFrameServer.java:72)       在org.apache.tomcat.websocket.server.WsFrameServer.doOnDataAvailable(WsFrameServer.java:171)       在org.apache.tomcat.websocket.server.WsFrameServer.notifyDataAvailable(WsFrameServer.java:151)       在org.apache.tomcat.websocket.server.WsHttpUpgradeHandler.upgradeDispatch(WsHttpUpgradeHandler.java:148)       在org.apache.coyote.http11.upgrade.UpgradeProcessorInternal.dispatch(UpgradeProcessorInternal.java:54)       在org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:53)       在org.apache.coyote.AbstractProtocol $ ConnectionHandler.process(AbstractProtocol.java:800)       在org.apache.tomcat.util.net.NioEndpoint $ SocketProcessor.doRun(NioEndpoint.java:1471)       在org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)       在java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)       在java.util.concurrent.ThreadPoolExecutor $ Worker.run(ThreadPoolExecutor.java:617)       在org.apache.tomcat.util.threads.TaskThread $ WrappingRunnable.run(TaskThread.java:61)       在java.lang.Thread.run(Thread.java:745)

预先感谢

0 个答案:

没有答案