Spring Session、Websocket、REST 令牌安全
Spring Session, Websocket, REST Token Security
我们目前有一个 Spring 应用程序,其中包含一个 REST API 和 Websocket 代理端点以获取数据库更改的实时更新。
我们已成功迁移到 Spring Session 项目,该项目具有嵌入式 redis 服务器,该服务器通过基本身份验证进行身份验证,并且 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
- SpringMVC 4.1.4
- AngularJS 1.2.28
看起来 JS Websocket API 不允许在初始握手和升级请求上设置 HTTP headers。
正确的方案是在 CONNECT 帧上发送身份验证令牌并在服务器端相应地处理它。所以现在我们已经迁移到浏览器 cookie 会话,直到我们可以在服务器端找到合适的实现。
我们目前有一个 Spring 应用程序,其中包含一个 REST API 和 Websocket 代理端点以获取数据库更改的实时更新。
我们已成功迁移到 Spring Session 项目,该项目具有嵌入式 redis 服务器,该服务器通过基本身份验证进行身份验证,并且 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
- SpringMVC 4.1.4
- AngularJS 1.2.28
看起来 JS Websocket API 不允许在初始握手和升级请求上设置 HTTP headers。
正确的方案是在 CONNECT 帧上发送身份验证令牌并在服务器端相应地处理它。所以现在我们已经迁移到浏览器 cookie 会话,直到我们可以在服务器端找到合适的实现。