记一次使用Oauth的情况

1.Oauth角色

  • 资源服务器(resource server)
  • 授权服务器(authorization server)
  • 资源所有者(resource owner)
  • 客户端(Client)

    2.Oauth授权模式

  • 授权码模式
  • 简化模式
  • 密码模式
  • 客户端模式

    3.业务逻辑(授权码模式)

    用户第一次进入客户端首页,先验证是否登录,如果没有登录则跳转至服务端授权登录
    //用户没有登录则去进行Oauth授权登录
    if(!$user){
    return (new SSoController())->index($request);
    }
    //用户已登录则处理下面的逻辑
    ...
    进入index()方法,检查有没有code,没有code的话,则构建authorize请求,去获取code,这时,认证服务中心判断用户是否登录,没登录,登录用户认证服务中心的账号密码,登录成功之后,返回一个临时code
    $url = "$this->authorize_url?client_id=$this->client_id&redirect_uri=$this->callback&response_type=code";
    header('Location: '.$url);
    exit;
    请求之后,授权服务器会重定向到我们$url里面的redirect_uri这里地址并带上我们code,这个地址也就是我们的应用入口地址,这时重复上面步骤,有code之后,则构建认证请求
    $url = "$this->access_token_url?client_id=$this->client_id&client_secret=$this->client_secret&redirect_uri=$this->callback&code=$code&grant_type=authorization_code";
    $result = $this->curl_get_https($url);
    认证服务中心返回该用户的token,我们拿到token,去资源服务中心获取用户信息,拿到用户信息比对本地用户数据,符合期望让他本地登录成功。
本作品采用《CC 协议》,转载必须注明作者和本文链接
心之所向,素履以往。
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!