java - Spring Session、Websocket、REST token 安全

标签 java angularjs spring-security sockjs spring-session

我们目前有一个 Spring 应用程序,其中包含 REST API 和 Websocket 代理端点,用于获取数据库更改的实时更新。

我们已经成功迁移到带有嵌入式 Redis 服务器的 Spring Session 项目,该服务器通过基本身份验证进行身份验证,并且 session ID 可以在后续请求中用作 x-auth-token header 。

我们遇到的问题是保护 Websocket。在 Angular 上,我们在 stomp.js/sockjs 库周围有一个包装器指令,但我们似乎无法弄清楚如何在 Websocket 升级请求上设置 x-auth-token header 。

我们做错了什么吗?实现这种安全方案的推荐方法是什么?

堆栈:

  • Tomcat 7.0.57
  • Spring 安全 4.0.0.RC2
  • Spring session 1.0.0.RELEASE
  • Spring MVC 4.1.4
  • AngularJS 1.2.28

最佳答案

看起来 JS Websocket API 不允许在初始握手和升级请求上设置 HTTP header 。

正确的方案是在 CONNECT 帧上发送身份验证 token 并在服务器端进行相应处理。因此,现在我们已经迁移到浏览器 cookie session ,直到我们可以在服务器端找到合适的实现。

关于java - Spring Session、Websocket、REST token 安全,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29173749/

相关文章:

java - 将参数从 java 程序传递到 bash 脚本,该脚本使用参数调用另一个 java 程序

SpringBoot 应用程序 - 服务器上下文路径

ajax - Grails spring 安全核心插件 : how to remove the browser prompt for an ajax request

java - HTTPServletRequest.getParameterNames() 的顺序与 HTML 表单中不同

java - 如何从 glassfish 服务器发送邮件?

angularjs - Meteor-Angular 教程 : bad formatting in HTML template, 用于复制/粘贴代码

javascript - 使用指令或 ng-click 更改 AngularJS 中的预览

android - 使用 Ionic 的文件输入上传文件(使用 native 文件浏览器选择文件)

grails - 我无法在 Grails 中安装 spring-security-core 插件

java - 代号一工具栏高度