V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
HenryWang0723
V2EX  ›  WebSocket

websocket 在 springsecurity 下结合 jwt 的问题

  •  
  •   HenryWang0723 · Nov 9, 2020 · 2621 views
    This topic created in 1996 days ago, the information mentioned may be changed or developed.

    项目是前后端分离,SpringBoot+Vue,目前的接口都用的 SpringSecurity 框架,禁用了 session 改为了 jwt 单点登录,现在项目要加入 websocket 。我理解的 websocket 只在握手的时候发 http,那么在握手时在请求的 header 里加 jwt token (貌似 STOMP 可以做到),依旧用 Security 进行拦截,后续 websocket 建立好之后的通信就自动放过了?还是说每一包通信依旧是 http 会被 Security 全部拦截..?

    Supplement 1  ·  Nov 10, 2020
    Spring STOMP 并不能设置握手的 Http Header 。问题查了查没看到合适的,https://stackoverflow.com/questions/53019779/authenticate-websocket-connection-on-handshake-using-jwt-authentication-filter 这个提问基本一致,目前看到的解决方法是 spring security 放过 websocket 的 url,然后再 handshake 中加拦截器单独验证,是通过把 jwt token 放在 ws 的 url 里做验证。但是这种方法实际上脱离了 spring security,鉴权管理也要单独处理,头疼
    4 replies    2020-11-10 11:06:21 +08:00
    okey
        1
    okey  
       Nov 9, 2020
    我理解的是后续走的不是 ws 协议,和 SpringSecurity 无关了。
    okey
        2
    okey  
       Nov 9, 2020
    @okey 是 ws 协议,打错了。
    zm8m93Q1e5otOC69
        3
    zm8m93Q1e5otOC69  
       Nov 9, 2020 via Android
    当时做毕设也是用的和你同样的架构,最后搞不定总得第三方的 ws
    HenryWang0723
        4
    HenryWang0723  
    OP
       Nov 10, 2020
    @okey 这么说来只要能在握手的那包 http 请求中 在 header 里加上 jwt token 通过 Security 的拦截器验证过了就 ok 了?
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   1084 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 33ms · UTC 22:43 · PVG 06:43 · LAX 15:43 · JFK 18:43
    ♥ Do have faith in what you're doing.