【发布时间】:2017-09-14 12:16:56
【问题描述】:
根据https://github.com/spring-projects/spring-framework/blob/master/src/docs/asciidoc/web/web-websocket.adoc#token-based-authentication,我正在尝试实现基于令牌的身份验证。
我对我的 HTTP 请求使用基本身份验证,因此 Spring 在成功身份验证后返回一个 x-auth-token。我正在将此令牌添加到 STOMP CONNECT 命令中。
@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?有没有人能解释一下?
【问题讨论】:
标签: spring-security spring-websocket