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 端点 [关闭]