• OAuth 2.0 第三方登录-微信授权


    是什么

    OAuth2.0 是一个开放标准,允许用户授权第三方移动应用访问他们存储在另外的服务提供者上的信息,而不需要将用户名和密码提供给第三方移动应用或分享他们数据的所有内容,u

    OAuth2.0是OAuth协议的延续版本,但不向后兼容OAuth 1.0即完全废止了OAuth1.0。授权框架使得第三方可以获取对用户资源的访问

    举个栗子:u

    通过你的允许, bilibili 可以去微信服务器获取你的头像,昵称,openId 等等,

    但你无需提供账号密码给 bilibili, 且 bilibili 对你的信息保存也有一定期限,超过这个期限的话,需重新获取授权进行登录。

    为什么

    传统授权方式,用户和第三方共享密码,缺点如下:

    1. 未来可能持续需要访问各种受限资源,所以第三方要存储用户密码,一般情况密码是明文,显然不安全;

    2. 第三方将可以访问所有的资源,而实际上它只应当访问部分资源;

    3. 用户不能撤销单个的第三方的访问权限,如果要改密码,所有的第三方都会失效。

     怎么做

    流程示意图: 用户通过微信登录的方式登录bilibili:

    1. bilibili 提供一个 “微信登录” 的 auth2  的链接, 用户点击跳转到微信授权服务器;

    2. 用户根据微信授权服务器提示,通过微信登录的方式授权给bilibili;

    3. 微信授权服务器返回用户代理(浏览器)一个授权码 wxCode,用户代理把这个授权码传给 bilibili;

    4. bilibili 凭借授权码向微信授权服务器请求令牌;

    5. 微信授权服务器发送令牌给 bilibili;

    6. 微信授权服务器发送令牌给 bilibili

    之后 bilibili 就可以带着令牌去微信资源服务器读取用户资料。

    【名词解释】:

    1. 资源服务器: 保存用户信息的服务器并且能够验证令牌是否合法,如微信服务器;

    2. 授权服务器: 发送令牌给第三方的服务器(可以和资源服务器是同一个);

    3. 客户端: 第三方应用程序,如:bilibili;

  • 相关阅读:
    【Java】IO流--文件夹的复制
    【Java】IO流--序列化与反序列化
    【Java】Java中的数组是对象吗?(转载)
    【Java】Java漫谈-数组(转载)
    【Java】IO流--对象流--ObjectInputStream、ObjectOutputStream
    【Java】IO流--数据流--DataInputStream、DataOutputStream
    【Java】IO流--打印流--PrintStream
    【Java】IO流--转换流--InpuStreamReader、OutputStreamWriter
    CentOS快速安装Nginx的方法,nginx如何启动重启停止
    Mac查看端口号是否被占用及释放
  • 原文地址:https://www.cnblogs.com/edwardwzw/p/12963738.html
Copyright © 2020-2023  润新知