Oauth2.0: OAuth(开放授权)是一个开放标准,允许用户授权第三方应用访问他们存储在另外的服务提供者的信息,而不需要将用户名和密码提供给第三方应用或者分享他们数据的所有内容。
第三方认证 比如登录B站,可以用微信账号登录。B站通过微信提取用户信息,
微信经过户同意方可为B站生成令牌,B站拿到令牌方可从微信获取用户信息。
详细:https://www.ruanyifeng.com/blog/2014/05/oauth_2_0.html
JWT: Json web token (JWT), 是为了在网络应用环境间传递声明而执行的一种基于JSON的开放标准((RFC 7519).该token被设计为紧凑且安全的,特别适用于分布式站点的单点登录(SSO)场景。JWT的声明一般被用来在身份提供者和服务提供者间传递被认证的用户身份信息,以便于从资源服务器获取资源,也可以增加一些额外的其它业务逻辑所必须的声明信息,该token也可直接被用于认证,也可被加密。
JWT的构成 第一部分我们称它为头部(header),第二部分我们称其为载荷(payload, 类似于飞机上承载的物品),第三部分是签证(signature). 详细:https://www.jianshu.com/p/576dbf44b2ae
载荷(Payload) 我们先将用户认证的操作描述成一个JSON对象。其中添加了一些其他的信息,帮助今后收到这个JWT的服务器理解这个JWT。
{ “sub”: “1”, “iss”: “http://localhost:8000/auth/login”, “iat”: 1451888119, “exp”: 1454516119, “nbf”: 1451888119, “jti”: “37c107e4609ddbcc9c096ea5ee76c667” } 这里面的前6个字段都是由JWT的标准所定义的。
sub: 该JWT所面向的用户 iss: 该JWT的签发者 iat(issued at): 在什么时候签发的token exp(expires): token什么时候过期 nbf(not before):token在此时间之前不能被接收处理 jti:JWT ID为web token提供唯一标识
非对称加密算法:RS256 对称加密算法:HS256