V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
HenryWang0723
V2EX  ?  WebSocket

websocket 在 springsecurity 下结合 jwt 的问题

  •  
  •   HenryWang0723 · 2020-11-09 15:43:48 +08:00 · 1503 次点击
    这是一个创建于 1267 天前的主题,其中的信息可能已经有所发展或是发生改变。

    腾讯云最新优惠活动来了:云产品限时1折,云服务器低至88元/年 ,点击这里立即抢购:9i0i.cn/qcloud,更有2860元代金券免费领取,付款直接抵现金用,点击这里立即领取:9i0i.cn/qcloudquan

    (福利推荐:你还在原价购买阿里云服务器?现在阿里云0.8折限时抢购活动来啦!4核8G企业云服务器仅2998元/3年,立即抢购>>>:9i0i.cn/aliyun

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

    第 1 条附言  ·  2020-11-10 17:48:43 +08:00
    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 条回复  ?  2020-11-10 11:06:21 +08:00
    okey
        1
    okey  
       2020-11-09 16:00:38 +08:00
    我理解的是后续走的不是 ws 协议,和 SpringSecurity 无关了。
    okey
        2
    okey  
       2020-11-09 16:03:25 +08:00
    @okey 是 ws 协议,打错了。
    uselessVisitor
        3
    uselessVisitor  
       2020-11-09 21:09:54 +08:00 via Android
    当时做毕设也是用的和你同样的架构,最后搞不定总得第三方的 ws
    HenryWang0723
        4
    HenryWang0723  
    OP
       2020-11-10 11:06:21 +08:00
    @okey 这么说来只要能在握手的那包 http 请求中 在 header 里加上 jwt token 通过 Security 的拦截器验证过了就 ok 了?
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   3415 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 36ms · UTC 11:03 · PVG 19:03 · LAX 04:03 · JFK 07:03
    Developed with CodeLauncher
    ? Do have faith in what you're doing.


    http://www.vxiaotou.com