OAuth 2.0

OAuth 2.0

OAuth 2.0 是一种授权机制,主要用来颁发令牌(token)。OAuth 的核心就是向第三方应用颁发令牌

概念及解释

OAuth 2.0 的一个简单解释

OAuth 2.0 的四种方式

  • 授权码(authorization-code) // 需要经过授权码,适用于有前后端
  • 隐藏式(implicit) // 适用于没有后端的应用,不需要授权码
  • 密码式(password): // 直接用用户名密码,用于内部应用
  • 客户端凭证(client credentials) // 适用与对APP授权,而不是单个用户

四种方式都需要在B站先注册

浅谈OAuth 和 OpenID 相关技术

OpenID 和 OAuth

两者很像,但本质上来说它们是截然不同的两个东西:

  • OpenID: 只用于 身份认证(Authentication),允许你以 同一个账户 在 多个网站登陆。它仅仅是为你的 合法身份 背书,当你以 Facebook 账号登陆某个站点之后,该站点 无权访问 你的在 Facebook 上的 数据。
  • OAuth: 用于 授权(Authorisation),允许 被授权方 访问 授权方 的 用户数据。

Access Token 和 Refresh Token

职责的分离:

  • refresh token: 负责 身份认证;
  • access token: 负责 请求资源。

JWT(JsonWebToken)

JWT 顾名思义,它是 JSON 结构的 token,由三部分组成:

  • header
  • payload
  • signature

header 用于描述 元信息,例如产生 signature 的算法:

{ "typ": "JWT", "alg": "HS256"}

payload 用于携带你希望 向服务端传递的信息。你既可以往里添加 官方字段,例如:iss(Issuer), sub(Subject), exp(Expirationtime),也可以塞入 自定义的字段

{ "userId": "b08f86af-35da-48f2-8fab-cef3904660bd"}

signature 译为 签名,创建签名要分以下几个步骤:

  1. 从 接口服务端 拿到 密钥,假设为 secret。
  2. 对 header 进行 base64 编码,假设结果为 headerStr。
  3. 将 payload 进行 base64 编码,假设结果为 payloadStr。
  4. 将 headerStr 和 payloadStr 用 . 字符 拼装起来成为字符 data。
  5. 以 data 和 secret 作为参数,使用 哈希算法 计算出 签名。
posted @   Nine4酷  阅读(120)  评论(0编辑  收藏  举报
编辑推荐:
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
· 25岁的心里话
点击右上角即可分享
微信分享提示