相关疑难解决方法(0)

Spring中的Websocket身份验证和授权

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


问题

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


我想要的是

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


我不想要的

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

java authentication spring websocket spring-boot

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

如何结合 Spring Security 和 js sockjs-client

我想创建一个 Spring Server 和一个通过 sockjs-client 连接的 Broswer javascript 客户端。连接应该通过 Spring Security 来保护。

我有以下困境:

  1. Spring Security 似乎假设 websocket 握手是通过经过身份验证的 http 会话发生的(例如 JSESSIONID cookie 设置,登录发生)。

  2. 然而,sockjs-client 似乎对开发人员施加了限制,即不得使用经过身份验证的 http 会话(参见https://github.com/sockjs/sockjs-client/issues/196),以任何方式强制执行此操作。

我对困境的评估是否正确,是否有任何明显的解决方案来实现带有 websockets 的 spring 服务器的安全性,以便 sockjs-client 可以安全地连接?

如果用于创建经过身份验证的 HttpSession,在 GET /info 请求中传递任何身份验证令牌的建议解决方案似乎是绕过 SockJS 安全限制的黑客。

这似乎是一些人出现问题的基础,例如:

java spring spring-security sockjs spring-websocket

5
推荐指数
0
解决办法
1109
查看次数