Java WebSocket 获取客户端的专有名称

Posted

技术标签:

【中文标题】Java WebSocket 获取客户端的专有名称【英文标题】:Java WebSocket get distinguished name of client 【发布时间】:2014-07-31 21:20:41 【问题描述】:

我有一个在 GlassFish 上运行的 Java WebSocket 服务器,用户将使用我们提供给他们的客户端 TLS 证书进行连接。证书中的专有名称是我们用来识别用户的名称。一旦与ServerEndpoint 建立连接,我的@OnOpen 方法就会被调用并被赋予Session 对象。

我可以判断session.isSecure(),但仅此而已。 Session 对象让我看不到 TLS 连接的属性。当客户端通过 WebSocket 连接时,如何获取客户端的专有名称?

【问题讨论】:

【参考方案1】:

我相信你只能在 websocket 握手中做到这一点 (see here for an idea)。

Websocket 是从 HTTP 请求“升级”的,请求的详细信息仅在该升级请求期间可用。您可以尝试从HandshakeRequest 中提取用户主体,这通常会为您提供X500Principal

【讨论】:

以上是关于Java WebSocket 获取客户端的专有名称的主要内容,如果未能解决你的问题,请参考以下文章

Java WebSocket:如何在不编写客户端的情况下测试服务器 WebSocket 端点 [关闭]

带有移动客户端的 websocket

初识websocket及java服务端的简单实现

获取 RPC 客户端的进程名称

java socket 接收服务端的信息出现乱码,该怎么解决

websocket的客户端端口号如何在谷歌浏览器中获取