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
的作者
我需要从独立的 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
的作者