[ 
https://issues.apache.org/jira/browse/AMQ-6491?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15667499#comment-15667499
 ] 

Neil Greatorex commented on AMQ-6491:
-------------------------------------

What I am attempting to do is use client certificates in order to authenticate 
connections from the web browser (Chrome in this case) to ActiveMQ. I've found 
that in order to get Chrome to pop up the box to allow the user to choose their 
client certificate, I need to first make a standard HTTPS request to the WSS 
endpoint. Once the user has chosen to present their certificate to this 
connection, the WebSocket connection will also present their certificate 
enabling the use of it for authentication. It could be argued that this is a 
"feature" in Chrome, but I equally think that passing the request on to the 
non-existent default servlet is not ideal.

My first preference would be to make it possible to define (somehow) a default 
servlet for the WebSocket servlet to pass the request onto. Failing that, I 
would prefer receiving an empty response over not implementing GET at all.

> WebSocket tries to call default servlet, when default servlet not configured
> ----------------------------------------------------------------------------
>
>                 Key: AMQ-6491
>                 URL: https://issues.apache.org/jira/browse/AMQ-6491
>             Project: ActiveMQ
>          Issue Type: Bug
>          Components: Transport
>    Affects Versions: 5.14.1
>            Reporter: Neil Greatorex
>            Priority: Minor
>              Labels: websocket
>
> With WebSocket connectors defined e.g.
> {noformat}
> <transportConnectors>
>     <transportConnector name="ws"
>                         
> uri="ws://0.0.0.0:61614?maximumConnections=1000&amp;wireFormat.maxFrameSize=104857600"/>
>     <transportConnector name="wss"
>                         
> uri="wss://0.0.0.0:61615?transport.wantClientAuth=true&amp;maximumConnections=1000&amp;wireFormat.maxFrameSize=104857600"/>
> </transportConnectors>
> {noformat}
> A request to https://127.0.0.1:61615/ gives HTTP 500 Internal Server Error 
> with the following in the log:
> {noformat}
>  WARN | org.eclipse.jetty.servlet.ServletHandler | /
> java.lang.NullPointerException
>         at 
> org.apache.activemq.transport.ws.jetty9.WSServlet.doGet(WSServlet.java:88)[activemq-http-5.14.1.jar:5.14.1]
>         at 
> javax.servlet.http.HttpServlet.service(HttpServlet.java:622)[tomcat-servlet-api-8.0.24.jar:]
>         at 
> org.eclipse.jetty.websocket.servlet.WebSocketServlet.service(WebSocketServlet.java:167)[jetty-all-9.2.13.v20150730.jar:9.2.13.v20150730]
>         at 
> javax.servlet.http.HttpServlet.service(HttpServlet.java:729)[tomcat-servlet-api-8.0.24.jar:]
>         at 
> org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:808)[jetty-all-9.2.13.v20150730.jar:9.2.13.v20150730]
>         at 
> org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:587)[jetty-all-9.2.13.v20150730.jar:9.2.13.v20150730]
>         at 
> org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)[jetty-all-9.2.13.v20150730.jar:9.2.13.v20150730]
>         at 
> org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:577)[jetty-all-9.2.13.v20150730.jar:9.2.13.v20150730]
>         at 
> org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1129)[jetty-all-9.2.13.v20150730.jar:9.2.13.v20150730]
>         at 
> org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:515)[jetty-all-9.2.13.v20150730.jar:9.2.13.v20150730]
>         at 
> org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1061)[jetty-all-9.2.13.v20150730.jar:9.2.13.v20150730]
>         at 
> org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)[jetty-all-9.2.13.v20150730.jar:9.2.13.v20150730]
>         at 
> org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:97)[jetty-all-9.2.13.v20150730.jar:9.2.13.v20150730]
>         at 
> org.eclipse.jetty.server.Server.handle(Server.java:499)[jetty-all-9.2.13.v20150730.jar:9.2.13.v20150730]
>         at 
> org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:310)[jetty-all-9.2.13.v20150730.jar:9.2.13.v20150730]
>         at 
> org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:257)[jetty-all-9.2.13.v20150730.jar:9.2.13.v20150730]
>         at 
> org.eclipse.jetty.io.AbstractConnection$2.run(AbstractConnection.java:540)[jetty-all-9.2.13.v20150730.jar:9.2.13.v20150730]
>         at 
> org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:635)[jetty-all-9.2.13.v20150730.jar:9.2.13.v20150730]
>         at 
> org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:555)[jetty-all-9.2.13.v20150730.jar:9.2.13.v20150730]
>         at java.lang.Thread.run(Thread.java:745)[:1.8.0_66-internal]
> {noformat}
> This occurs because no default servlet is defined. Either ActiveMQ should not 
> attempt to forward GET requests to the default servlet, or the embedded Jetty 
> instances should be configured with a proper default servlet.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to