V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
wangyzj
V2EX  ›  程序员

关于单点登录平台 oauth2 授权的实现方案中验证授权信息保存的问题

  •  
  •   wangyzj · 1 天前 · 857 次点击
    正在做一个企业内部单点登录平台,也就是 idaas

    本来以为后端 api 给我获取到的 token 等授权信息

    前端自己存起来就可以了


    但后端这次方案使用了 Response 带 cookie ,前端调用 api 后直接作为只读 cookie 存在了前端

    然后产生了 302 跳转登录页

    我之前没这么做过,想咨询各位彦祖,哪种方案算是最佳实践

    前端为 react 单页应用
    后端应该是 springboot

    多谢
    15 条回复    2025-11-08 01:13:10 +08:00
    c3de3f21
        1
    c3de3f21  
       1 天前
    如果是携带 cookie 不用前端做事的情况下
    抓一个时间点,初次访问页面时尝试请求 user ,请求到 user 继续下面的流程
    请求不到 user 和后端协商,是你跳登录还是后端跳登录
    登录时候肯定携带了你的页面 url 走的,登录完了跳回来还是走 /user 请求
    然后正常流程设置系统信息,用户信息菜单权限等等
    wangyzj
        2
    wangyzj  
    OP
       1 天前
    @c3de3f21 #1 基本流程是这样的,但我就是想知道后端来处理跳转和 cookie 这个方案好么?
    Oktfolio
        3
    Oktfolio  
       1 天前
    对于不同类型的应用实现不同的逻辑,如果是 SPA 就接口 401 的时候前端跳转,如果是传统网页就后端跳转。当然,也不一定要根据类型,反正做成可配置的就好。
    Oktfolio
        4
    Oktfolio  
       1 天前
    SPA 做前端跳转,是因为前端跳转可以带上自己需要的参数,这样登录后就可以根据参数跳转回之前的页面了
    LittleFox
        5
    LittleFox  
       1 天前
    如果前后端同源的话会自动处理 cookie 吧?不同源可能需要手动处理一下,感觉前后端不同源还是用 token 或者 jwt 舒服一点
    wangyzj
        6
    wangyzj  
    OP
       1 天前
    @LittleFox #5 理论上要考虑不同源场景,毕竟不知道别的应用是什么域
    cus
        7
    cus  
       1 天前 via iPhone
    oauth2 bff 方案咯,公开的 client 被 SPA 用现在也被视为有风险的。没有不同源场景,逻辑是你不和 idaas 一个源,你和 bff 才是一个源。https://datatracker.ietf.org/doc/html/draft-ietf-oauth-browser-based-apps
    mmmNover
        8
    mmmNover  
       1 天前
    cookie 把,operas/cas 项目的标准方案
    c3de3f21
        9
    c3de3f21  
       1 天前
    @wangyzj 如果是类似您说的的这种方案,一定是同源,比如 100 个应用,他们应该都是 domain/统一前缀/服务名
    或者 domain/服务名
    wangyzj
        10
    wangyzj  
    OP
       1 天前 via iPhone
    @c3de3f21 #9 我想在你这我得到答案了。后端控制方案一定要同源,但 oauth2 不同源是很正常的需求,谢谢
    LittleFox
        11
    LittleFox  
       23 小时 23 分钟前
    @wangyzj 那就自己系统前后端同源,走 cookie ,oauth 应用用 jwt ?
    wangyzj
        12
    wangyzj  
    OP
       19 小时 33 分钟前 via iPhone
    @LittleFox #11 都 jwt
    meshell
        13
    meshell  
       16 小时 4 分钟前
    @wangyzj oauth2 不需要考虑同源这种,我们的系统都是 oauth2 的单点登录,前端也是 spa 。我们是采用后端控制的跳转加 cookie 的,spring 原生支持这套体系。
    skallz
        14
    skallz  
       14 小时 36 分钟前
    除了久远之前的系统,好像现在都不会第一时间考虑 cookie 了,很多平台对 cookie 还会做限制,到时候如果需要接入某个对 cookie 限制的平台还得重构,更何况 cookie 在现在除了自动携带也没任何好处了 QAQ (一般都是只拿 cookie 做中间存储跨站点传值而已)
    wangyzj
        15
    wangyzj  
    OP
       13 小时 38 分钟前
    @skallz #14 确实,很多系统已经对 cookie 受限了,应该尽量不用 cookie ,谢谢
    关于   ·   帮助文档   ·   自助推广系统   ·   博客   ·   API   ·   FAQ   ·   Solana   ·   2715 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 20ms · UTC 06:51 · PVG 14:51 · LAX 22:51 · JFK 01:51
    ♥ Do have faith in what you're doing.