展开
拓展 关闭
订阅号推广码
GitHub
视频
公告栏 关闭

权限认证(二):OAuth2协议简介

  • 角色
资源所有者:例如昵称和头像这些资源的拥有者
第三方应用:例如梦学谷网站要使用微信登录,梦学谷相当于微信而言就是第三方
认证服务器:用于身份认证的服务器
资源服务器:存储用户资源的服务器
服务提供商:即是资源服务器 + 服务提供商

  • 认证流程
当用户在梦学谷网站使用微信登录时,即是第三方应用使用其他服务提供商进行登录时
资源所有者向认证服务器发送一个认证请求,认证服务器向资源所有者返回一个认证页面,资源所有者输入用户名和密码并提交给认证服务器
认证服务器认证成功后将一个授权码返回给客户端
第三方应用通过授权码去认证服务器,认证服务器返回一个令牌给第三方应用
第三方应用拿着令牌去资源服务器获取用户的资源信息
获取到资源信息后进行登录

  • 授权方式
权码模式(Authorization Code):功能最完整,流程最严密的授权模式。国内各大服务提供商(微信、QQ、微博、淘宝 、百度)都采用此模式进行授权。可以确定是用户真正同意授权;
而且令牌是认证服务器发放给第三方应用的服务器,而不是浏览器上

简化模式(Implicit): 令牌是发放给浏览器的,oauth客户端运行在浏览器中 ,通过JS脚本去申请令牌。而不是发放给第三方应用的服务器

密码模式(Resource Owner Password Credentials):将用户名和密码传过去,直接获取 access_token 。用户同意授权动作是在第三方应用上完成 ,而不是在认证服务器上。第三方应用申请令牌时,
直接带着用户名密码去向
认证服务器申请令牌。这种方式认证服务器无法断定用户是否真的授权了,用户名密码可能是第三方应用盗取来的

客户端证书模式(Client credentials):用得少。当一个第三应用自己本身需要获取资源(而不是以用户的名义),而不是获取用户的资源时,客户端模式十分有用
  • 授权码模式

  • 简化模式

  • 密码模式

1. 用户向客户端直接提供认证服务器平台的用户名和密码。
2. 客户端将用户名和密码发给认证服务器,向后者请求令牌。
3. 认证服务器确认无误后,向客户端提供访问令牌
  • 客户端模式
1. 客户端向认证服务器进行身份认证,并要求一个访问令牌。
2. 认证服务器确认无误后,向客户端提供访问令牌

posted @ 2022-03-24 21:47  DogLeftover  阅读(46)  评论(0编辑  收藏  举报