OAuth 2.0
OAuth 2.0
OAuth 2.0 是一种授权机制,主要用来颁发令牌(token)。OAuth 的核心就是向第三方应用颁发令牌。
概念及解释
- 授权码(authorization-code) // 需要经过授权码,适用于有前后端
- 隐藏式(implicit) // 适用于没有后端的应用,不需要授权码
- 密码式(password): // 直接用用户名密码,用于内部应用
- 客户端凭证(client credentials) // 适用与对APP授权,而不是单个用户
四种方式都需要在B站先注册
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 译为 签名,创建签名要分以下几个步骤:
- 从 接口服务端 拿到 密钥,假设为 secret。
- 对 header 进行 base64 编码,假设结果为 headerStr。
- 将 payload 进行 base64 编码,假设结果为 payloadStr。
- 将 headerStr 和 payloadStr 用 . 字符 拼装起来成为字符 data。
- 以 data 和 secret 作为参数,使用 哈希算法 计算出 签名。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
· 25岁的心里话