V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
whiplash211
V2EX  ›  程序员

OAuth 关于 state 的疑惑,求指教

  •  1
     
  •   whiplash211 · 2019-11-27 15:15:22 +08:00 · 1631 次点击
    这是一个创建于 1604 天前的主题,其中的信息可能已经有所发展或是发生改变。

    实现 OAuth 第三方登录的时候遇到个问题,想请教下各位前辈。 如何验证从服务提供商返回的请求中的 state 参数与用户发起三方登录时的 state 是一致的,即如何在用户没有登录的时候进行标记从而保证第三方登录请求确实是这个用户(终端)发起的?

    4 条回复    2019-11-27 18:50:32 +08:00
    whiplash211
        1
    whiplash211  
    OP
       2019-11-27 15:26:32 +08:00
    补充,看到一篇文章里有给出实现方式,但不会 node 不太明白这里的 req.session ( express-session 这个插件)本质上是如何实现的
    或者说其本质是如何判断 2 个请求属于同个 session 的


    ![image.png]( https://i.loli.net/2019/11/27/qnD421TBijumlwQ.png)
    ![image.png]( https://i.loli.net/2019/11/27/NiYEuoVyGlPeZIk.png)

    文章地址: https://shiya.io/how-to-do-3-legged-oauth-with-github-a-general-guide-by-example-with-node-js/
    whiplash211
        2
    whiplash211  
    OP
       2019-11-27 15:56:46 +08:00
    小弟困惑的点在于不知道怎么建立发起请求的客户端与 state 的对应关系,有做过 github 登录或者微信登录的老哥能解答一下🐴
    deepzz
        3
    deepzz  
       2019-11-27 18:47:27 +08:00 via iPhone
    发起三方登录的时候你根本不知道是谁要登录,只有从第三方获取用户信息的时候才知道谁在登录。state 可以携带一些其它标记信息 https://deepzz.com/post/what-is-oauth2-protocol.html
    whiplash211
        4
    whiplash211  
    OP
       2019-11-27 18:50:32 +08:00
    @deepzz 😹不是我不明白 state 干啥的,不过我现在知道怎么弄了,参考 flask 框架的 session 额外加个加密的 cookie 存 state,收到回调再验证
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   3151 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 13:15 · PVG 21:15 · LAX 06:15 · JFK 09:15
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.