【发布时间】:2018-02-08 23:28:21
【问题描述】:
我想为 Web 套接字连接实现基于令牌的身份验证。
我的后端系统是server,机器是client,机器和服务器之间收发消息时如何实现认证,这里不做用户认证。
@Configuration
@EnableWebSocketMessageBroker
public class MyConfig extends AbstractWebSocketMessageBrokerConfigurer {
@Override
public void configureClientInboundChannel(ChannelRegistration registration) {
registration.setInterceptors(new ChannelInterceptorAdapter() {
@Override
public Message<?> preSend(Message<?> message, MessageChannel channel) {
StompHeaderAccessor accessor =
MessageHeaderAccessor.getAccessor(message, StompHeaderAccessor.class);
if (StompCommand.CONNECT.equals(accessor.getCommand())) {
String authToken = accessor.getFirstNativeHeader("X-Auth-Token");
log.debug("webSocket token is {}", authToken);
Principal user = ... ; // access authentication header(s)
accessor.setUser(user);
}
return message;
}
});
}
}
但是,我完全失去了在“主要用户 = ... ;”中的表现。我将如何使用令牌获得 Principle?因为这里没有用户,只有机器和后端服务器之间的通信
【问题讨论】:
-
您是否在问如何在没有用户交互的情况下通过服务器验证客户端并创建要在客户端上使用的令牌?或者您是否已经有一个令牌并且您正在询问如何从令牌中获取委托人?
-
如何在没有用户交互的情况下通过服务器验证客户端并创建在客户端上使用的令牌?
-
您的应用程序如何进入客户端设备?用户是否下载并安装它?您能否提供有关客户端应用程序性质的更多信息?
-
客户端订阅主题中的消息并服务器从订阅url中获取消息,因为客户端将连接服务器......