OAuth2、JWT

文章目录


OAuth2


在 RFC 6749 中说明


1、资源所有者 resource owner, 如 github 用户

2、客户端/第三方应用 client, 如 支持github 登录的 csdn

3、资源服务器 resource server, 如

4、授权服务器 authorization server


授权所需信息

  • 应用名称
  • 应用网站
  • 重定向 URI 或回调 URL(redirect_uri)
  • 客户端标识 client_id
  • 客户端秘钥 client_secret

如 github 授权 app:


OAuth 授权方式

有以下四种

  1. 授权码模式 Authorization Code,功能最完整、流程最严密
  2. 简化模式 Implict Grant;省去了第三方应用的服务器;不建议,token 会暴露。为web浏览器设置。
  3. 密码模式 Resource Owner Password Credentials Grant,csdn 让用户输入 github 账号密码,再将密码给 github 请求;不建议。为遗留项目设计。
  4. 客户端模式 Client Credentials Grant。用客户端的秘钥获取 token,不需要用户参与。为后台API 服务消费者设计。

授权码模式 参数

  • response_type,必须,固定为 code,表示这是一个授权码请求;
  • client_id,必须,在授权服务器祖册应用后的到的唯一标识;
  • redirect_uri,可选,通过客户端注册的重定向 URI,一般要求和注册时一致;
  • scope,可选,请求资源范围,多个空格隔开;
  • state,可选(推荐),如果存在,原样返回给客户端。

JWT

JWT : JSON Web Token,通过数字签名的方式,以 json 对象为载体,在不同的服务终端之间安全的传输信息。


常见应用场景:授权认证

一旦用户登录后,后续每个请求都包含 JWT,系统在每次处理用户请求之前,都要进行 JWT 安全校验,通过之后再进行处理。


JWT 由三部分组成,用 . 拼接

三部分分别是:

1、 Header

json 复制代码
{
	'typ': 'JWT', // token 类型
	'alg', 'HS256'  // 算法名称
}

2、Payload 载荷,存放有效信息

对这个数据进行 base64 加密

json 复制代码
{
	'sub': '1234567', //  
	'name', 'john'  //  
	'admin', true  //  
}

3、Signature

加密后的 Header 和 Payload 用 . 拼接,让后将结果,用 header 中申明的算法再加盐加密一次。

json 复制代码
var encodedstring = base64UrlEncoder(header) + '.' + base64UrlEncoder(payload);
var signature = HMACSHA256(encodedstring, 'secret')

参考


伊织 2022-03-26

相关推荐
易生一世4 天前
OpenID Connect的认证与授权详解
oauth·jwt·token·openid·pkce
曲幽6 天前
你的Agent API还在裸奔?从认证到沙箱,我用FastAPI搭了几道防线
python·fastapi·web·security·jwt·oauth2·limit·sandbox·ai agent
小小工匠7 天前
Spring AI RAG - 08 JWT 认证与用户体系设计
spring·jwt
總鑽風10 天前
单点登录sso 微服务加网关gateway
java·微服务·gateway·jwt·单点登录
易生一世12 天前
JWT详解
json·证书·jwt·token·ai skills
庞轩px15 天前
权限系统设计复盘——从RBAC模型到JWT双Token,方法级权限控制的完整实现
鉴权·jwt·rbac·aop·自定义注解·权限系统·双token
深念Y22 天前
Codex 买号登录问题排查与 auth.json 手动配置记录
gpt·jwt·coding·codex·email·refresh_token·access_token
Devin~Y25 天前
大厂Java面试实录:Spring Boot/Cloud + Redis/Kafka + JWT + RAG/Agent(小Y翻车版)
java·spring boot·redis·spring cloud·kafka·spring security·jwt
indexsunny1 个月前
互联网大厂Java求职面试实战:Spring Boot微服务在电商场景中的应用与挑战
java·spring boot·redis·面试·kafka·oauth2·microservices
Devin~Y1 个月前
大厂 Java 面试实战:Spring Boot 微服务 + Redis 缓存 + Kafka 消息 + Kubernetes + RAG(小Y水货翻车记)
java·spring boot·redis·kafka·spring security·jwt·oauth2