我有一个在GlassFish上运行的Java WebSocket服务器,用户将使用我们提供的客户端TLS证书进行连接。证书中的专有名称是我们用来标识用户的名称。与ServerEndpoint
建立连接后,我的@OnOpen
方法会被调用并被赋予Session
个对象。
我可以判断是session.isSecure()
,但仅此而已。 Session对象使我无法看到TLS连接的属性。当他们通过WebSocket连接时,如何获取客户端的可分辨名称?
答案 0 :(得分:0)
我相信你只能在websocket握手(see here for an idea)中这样做。
Websocket已升级"来自HTTP请求,请求的详细信息仅在该升级请求期间可用。您可以尝试从HandshakeRequest
中提取用户主体,通常应该为您提供X500Principal
。