Java 带有 spnego 的 websocket 客户端

Java websocket client with spnego

我需要从独立的 java 进程连接到使用 spnego 身份验证的 websocket 服务。

任何人都可以提供一个 java 示例或向我指出具有此功能的库吗?

我可以使用 SpnegoHttpURLConnection 在同一台服务器上查询休息 api - 所以 spnego kerberos 部分工作。
如果我在服务器上禁用身份验证,我也可以连接到 websocket。

但是 SpengoHttpURLConnection 没有任何简单的方法来升级到 websocket 的连接,而且我找不到允许我配置 spnego 身份验证的 websocket 客户端库。

您可以使用 Kerb4J and add it to headers using ClientEndpointConfig.Configurator.beforeRequest(Map> headers) 方法生成 SPNEGO 令牌。

如果您的 websocket 在 wss://ws.server.com 上是 运行 并且您使用 svc_consumer 帐户和 /opt/myapp/consumer.keytab keytab 进行身份验证,代码将如下所示:

SpnegoClient spnegoClient = SpnegoClient.loginWithKeyTab("svc_consumer", "/opt/myapp/consumer.keytab");

@Override
public void beforeRequest(Map<String,List<String>> headers) {
    SpnegoContext context = spnegoClient.createContext("https://ws.server.com");
    headers.put("Authorization", Collections.singletonList(context.createTokenAsAuthroizationHeader()));
}

免责声明:我是 Kerb4J

的作者