Spring WebSocket Security [Project Reactor]:如何对用户进行身份验证并在网页之间维护这种身份验证?

时间:2021-05-24 14:17:40

标签: spring-boot authentication websocket project-reactor spring-websocket

我正在尝试构建基于 WebSocketSpring Reactor 的解决方案。没有 Stomp 协议,既不使用也不需要任何类型的队列。

我已经建立了一个网页并且到 ws://myurl 的连接是可以的,但是握手是在其他一切之前进行的,我真的被安全问题所困扰,因为登录/密码只会在握手完成后第二次发生。 而且,握手完成后就OK了,连接只是TCP,不再是HTTP,所以我不能使用cookies之类的东西。

实际上,在建立连接(握手)后,我要求登录名和密码,以便我可以通过请求数据库来验证用户。 如果服务器以 AUTH_SUCCESS 回答,我使用 JS 中的 window.location.assign('myNewUrl') 将用户重定向到新页面。因此,没有提供/传输到目标页面的信息,例如身份验证信息,因为我无法从 JS 执行此操作,并且我看不到任何使用 WebSocket 处理程序执行此操作的方法,因为 'redirect' 不是可用。

我首先想将用户会话 ID 保存在 Map(在 Handler 类中,所有处理程序共享的静态 Map)中,以便我可以假设该用户已通过身份验证,并最终发送任何专门针对他的东西而不是广播(这个解决方案有很多例子)。 但是在更改页面甚至刷新页面时会话 ID 会发生变化,我真的不知道如何以这种方式维护用户身份,因为我不能依赖会话 ID。

是否有任何我可以阅读的页面或资源,以找到有关如何在使用 WebSocket 连接时对用户进行身份验证的完整示例/教程?

感谢帮助。

0 个答案:

没有答案