相关疑难解决方法(0)

Spring中的Websocket身份验证和授权

我一直在努力用Spring-Security 正确实现Stomp(websocket)身份验证和授权.对于后代,我会回答我自己的问题,提供指导.


问题

Spring WebSocket文档(用于身份验证)看起来不清楚ATM(恕我直言).我无法理解如何正确处理身份验证和授权.


我想要的是

  • 使用登录名/密码验证用户.
  • 防止匿名用户通过WebSocket进行连接.
  • 添加授权层(用户,管理员,...).
  • 有Principal在控制器可用.


我不想要的

  • 在HTTP协商端点上进行身份验证(因为大多数JavaScript库不会与HTTP协商调用一起发送身份验证标头).

java authentication spring websocket spring-boot

26
推荐指数
1
解决办法
2万
查看次数

如何在HandshakeInterceptor中设置Principal

我正在使用Spring的WebSockets的非常薄的实现.WebSocketSession有方法getPrincipal(),但是如何在HandshakeInterceptor中设置它?

我想把Principal放在的方法是:

public boolean beforeHandshake(final ServerHttpRequest request, final ServerHttpResponse response, final WebSocketHandler wsHandler,
        final Map<String, Object> attributes) throws Exception {
    Principal = getPrincipal();
    // Now where to set the principal so it is available in WebSocketSession?

}
Run Code Online (Sandbox Code Playgroud)

spring-websocket

5
推荐指数
1
解决办法
1601
查看次数