JustAuth——开箱即用的整合第三方登录的开源组件

本文将就JustAuth中涉及到的一些配置、关键词做一下简单说明,方便使用者理解、使用。

本文相关名词

  • 开发者 指使用JustAuth的开发者
  • 第三方 指开发者对接的第三方网站,比如:QQ平台、微信平台、微博平台
  • 用户 指最终服务的真实用户

JustAuth中的关键词

以下内容了解后,将会使你更容易地上手JustAuth。

clientId 客户端身份标识符(应用id),一般在申请完Oauth应用后,由第三方平台颁发,唯一

clientSecret 客户端密钥,一般在申请完Oauth应用后,由第三方平台颁发

redirectUri 开发者项目中的有效api地址。用户在确认第三方平台授权(登录)后,第三方平台会重定向到该地址,并携带code等参数

state 用来保持授权会话流程完整性,防止CSRF攻击的安全的随机的参数,由开发者生成

alipayPublicKey 支付宝公钥。当选择支付宝登录时,必传该值,由开发者生成

unionId 是否需要申请unionid,目前只针对qq登录。注:qq授权登录时,获取unionid需要单独发送邮件申请权限。如果个人开发者账号中申请了该权限,可以将该值置为true,在获取openId时就会同步获取unionId。参考链接:UnionID介绍(opens new window)

stackOverflowKey Stack Overflow 登陆时需单独提供的key,由第三方平台颁发

agentId 企业微信登陆时需单独提供该值,由第三方平台颁发,为授权方的网页应用ID

source JustAuth支持的第三方平台,比如:GITHUB、GITEE等

uuid 一般为第三方平台的用户ID。以下几个平台需特别注意:

  • 钉钉、抖音:uuid 为用户的 unionid
  • 微信公众平台登录、京东、酷家乐、美团:uuid 为用户的 openId
  • 微信开放平台登录、QQ:uuid 为用户的 openId,平台支持获取unionid, unionid 在 AuthToken 中(如果支持),在登录完成后,可以通过 response.getData().getToken().getUnionId() 获取
  • Google:uuid 为用户的 subsub为Google的所有账户体系中用户唯一的身份标识符,详见:OpenID Connect(opens new window)

注:建议通过uuid + source的方式唯一确定一个用户,这样可以解决用户身份归属的问题。因为 单个用户ID 在某一平台中是唯一的,但不能保证在所有平台中都是唯一的。

参考资料

关于OAuth2相关的内容、原理可以自行参阅以下资料:

关于OAuth

请先查阅以下资料:

#OAuth 2 的授权流程

#参与的角色

  • Resource Owner 资源所有者,即代表授权客户端访问本身资源信息的用户(User),也就是应用场景中的“开发者A
  • Resource Server 资源服务器,托管受保护的用户账号信息,比如Github
  • Authorization Server 授权服务器,验证用户身份然后为客户端派发资源访问令牌,比如Github
    • Resource ServerAuthorization Server 可以是同一台服务器,也可以是不同的服务器,视具体的授权平台而有所差异
  • Client 客户端,即代表意图访问受限资源的第三方应用

#授权流程

     +--------+                               +---------------+
     |        |--(A)- Authorization Request ->|   Resource    |
     |        |                               |     Owner     |
     |        |<-(B)-- Authorization Grant ---|               |
     |        |                               +---------------+
     |        |
     |        |                               +---------------+
     |        |--(C)-- Authorization Grant -->| Authorization |
     | Client |                               |     Server    |
     |        |<-(D)----- Access Token -------|               |
     |        |                               +---------------+
     |        |
     |        |                               +---------------+
     |        |--(E)----- Access Token ------>|    Resource   |
     |        |                               |     Server    |
     |        |<-(F)--- Protected Resource ---|               |
     +--------+                               +---------------+

上面的流程图取自The OAuth 2.0 Authorization Framework#1.2(opens new window)

流程解析

  • (A) 用户打开客户端以后,客户端要求用户给予授权。
  • (B) 用户同意给予客户端授权。
  • (C) 客户端使用上一步获得的授权,向认证服务器申请令牌。
  • (D) 认证服务器客户端进行认证以后,确认无误,同意发放令牌
  • (E) 客户端使用令牌,向资源服务器申请获取资源。
  • (F) 资源服务器确认令牌无误,同意向客户端开放资源。

#授权许可 Authorization Grant

  • Authorization Code
    • 结合普通服务器端应用使用(web端常用的授权方式)
  • Implicit
    • 结合移动应用或 Web App 使用
  • Resource Owner Password Credentials
    • 适用于受信任客户端应用,例如同个组织的内部或外部应用
  • Client Credentials
    • 适用于客户端调用主服务API型应用(比如百度API Store)

#直白话 OAuth 2 流程

以上流程理解起来可能有些难度,这儿我们给出一个白话版的流程图

首先引入三个角色:

  • 用户A:可以理解成你自己
  • 网站B:可以理解成 OSChina
  • 第三方C:可以理解成 Github

需求:你(用户A)想通过 Github(第三方C) 登录网站B(OSChina)。

💡注:下面的内容为流程图,如果您在阅读的时候显示为纯文字,请尝试刷新页面,直到显示正常

 转自:OAuth流程 | JustAuth

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值