带有spnego的Java Websocket客户端

问题描述 投票:1回答:1

我需要连接到一个Websocket服务,该服务使用来自独立Java进程的spnego身份验证。

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

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

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

java websocket spnego
1个回答
0
投票

您可以使用Kerb4J生成SPNEGO令牌,然后使用ClientEndpointConfig.Configurator.beforeRequest(Map> headers)方法将其添加到标头中。

如果您的websocket在wss://ws.server.com上运行,并且您使用svc_consumer帐户和/opt/myapp/consumer.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的作者>

© www.soinside.com 2019 - 2024. All rights reserved.