跳至主要內容
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?

4563博客

全新的繁體中文 WordPress 網站
  • 首頁
  • oauth2.0 授权码登录后,是如何和应用进行交互的?
未分類
23 10 月 2020

oauth2.0 授权码登录后,是如何和应用进行交互的?

oauth2.0 授权码登录后,是如何和应用进行交互的?

資深大佬 : jimmyismagic 7

比如授权 qq 登录后,我要发帖,通过什么方式应用知道我是我的?

大佬有話說 (10)

  • 資深大佬 : weitch

    授权后给你返回一个 code,用 code 后台去请求用户信息。

  • 主 資深大佬 : jimmyismagic

    @weitch 我是是登录后,用户信息都请求到了,然后用户要发帖,这时候和 qq 登录没任何关系了

  • 資深大佬 : qiayue

    你用 QQ 登录授权给 A 应用后,QQ 给 A 一个 code,A 拿着 code 去问 QQ 要你的信息,里边包含了一个 openid,就可以唯一代表你。
    A 一般会拿着你的 openid 去自己数据库查一查,是否有相关用户,如果有,就得到了你的 user_id,如果没有,就用 openid 去注册一个新用户,也会生成一个 user_id 。
    最后你去发帖,帖子表保存了你的 user_id 。

  • 主 資深大佬 : jimmyismagic

    @qiayue 但是发帖的时候,A 应用如何知道是我发的贴,交互的时候是有 cookie 还是其他信息?还是要再向 A 应用申请一个 token ?

  • 資深大佬 : Xusually

    @jimmyismagic #3 说的很清楚了,你在 A 应用发帖,用的是 A 应用的用户身份,鉴权从 OpenID 登录到 A 应用之后,就是 A 应用用自己的用户逻辑去处理了,你发帖肯定是 A 应用用自己系统的用户标示去匹配的你,至于是用的 cookie 还是用 A 应用自己的 url token,header 里面放 jwt 之类的,看具体实现。

  • 主 資深大佬 : jimmyismagic

    你发帖肯定是 A 应用用自己系统的用户标示去匹配的你,至于是用的 cookie 还是用 A 应用自己的 url token,header 里面放 jwt 之类的,看具体实现。

    @Xusually 这一步是什么时候发生的呢?用户是如何得到访问 A 应用的 jwt 的呢?

  • 資深大佬 : Xusually

    @jimmyismagic 你用 qq 登录的时候,qq 登录完成后会回调或者跳转到 A 应用的一个页面,A 应用可以在这个页面里给你种 cookie,加 url token,放 header

  • 資深大佬 : freakxx

    你这个问题可以拆成 2 个

    项目系统怎么知道,该用户是“我”, 阅读 auth + 登陆系统的资料可知;
    oauth 第三方 怎么让你知道这个人是谁,返回一个可查询的 token,让你去获取这个人资料

    回到你的问题
    你应该认真去看下原理以及认真看下请求流程图;

    流程大概可以是
    用户访问你页面 — 跳到 QQ 鉴权页面 — QQ 带回一个 code — 你用这个 code 通过一定的方式获取了一个唯一的值,无论它叫 uid 也好,openid 也好,qq 也好 —- 取回你的系统

    拿着这个值,去查表,查到之后,转换成你鉴权的方式,token 也好,就算你返回 123 也好,每次你鉴权看到这个值,就代表是这个用户。

    在上面这堆话里面,都是每个 oauth 写烂的东西,
    拆成 3 个基本问题就是
    怎么从第三方拿到一个唯一值
    怎么把这个唯一值跟你系统的用户联系起来
    知道用户之后,返回什么让他可以通过项目鉴权系统

  • 資深大佬 : eason1874

    用户点击 QQ 登录 -> 进入 QQ 授权页面 -> 确认登录后回调跳转到你的网站 -> 你的网站拿到回调 code 参数,通过 QQ 接口获取用户唯一 openid,拿到 openid 后查询数据库有没有对应用户 -> 有就进行登录,没有就转到注册

    能拿到 openid 就说明用户授权登录了,相当于用户输入账户密码并验证通过了,接下来的登录步骤是一样的,就是写 cookie 什么的

  • 資深大佬 : lori01

    你问题问错了,实际上想问《我在浏览器发了一个帖子,服务端如何知道是我发的》
    一个登录框架,实际上是分为认证和授权 2 部分。
    认证:你网站使用 QQ 登录,那么认证就是 QQ 帮你做的,至于如何做,上面很多人都解释了
    授权:你得自己绑定自己的用户后自己实现自己的授权逻辑

    比如 shiro 框架,qq 登录后,返回 code 和用户信息,你需要在自己系统里面创建一个用户来绑定 qq,并且进行自动登录,使用 shiro 可以实现无密码自动认证和授权,shiro 认证后,会产生一个 jessionid 发给客户端(浏览器),浏览器保存在 cookie 中,当你浏览器请求服务端时,会带上这个 cookie,shiro 框架取到这个 cookie 后,经过判断 jessionid 有效,即浏览器已登录用户
    至于如何知道谁登录的,shiro 的认证方法可以重构,一般也需要自己重构。认证方法在认证完成后,可以往 session 写入用户信息,当页面请求服务端时,controller 或 service 可以获取这个用户 session,就知道当前操作用户是谁了

文章導覽

上一篇文章
下一篇文章

AD

其他操作

  • 登入
  • 訂閱網站內容的資訊提供
  • 訂閱留言的資訊提供
  • WordPress.org 台灣繁體中文

51la

4563博客

全新的繁體中文 WordPress 網站
返回頂端
本站採用 WordPress 建置 | 佈景主題採用 GretaThemes 所設計的 Memory
4563博客
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?
在這裡新增小工具