OAuth 关于 state 的疑惑,求指教

2019-11-27 15:15:22 +08:00
 whiplash211

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

1639 次点击
所在节点    程序员
4 条回复
whiplash211
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
2019-11-27 15:56:46 +08:00
小弟困惑的点在于不知道怎么建立发起请求的客户端与 state 的对应关系,有做过 github 登录或者微信登录的老哥能解答一下🐴
deepzz
2019-11-27 18:47:27 +08:00
发起三方登录的时候你根本不知道是谁要登录,只有从第三方获取用户信息的时候才知道谁在登录。state 可以携带一些其它标记信息 https://deepzz.com/post/what-is-oauth2-protocol.html
whiplash211
2019-11-27 18:50:32 +08:00
@deepzz 😹不是我不明白 state 干啥的,不过我现在知道怎么弄了,参考 flask 框架的 session 额外加个加密的 cookie 存 state,收到回调再验证

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/623615

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX