一,什么是OAuth2
OAuth2是一个标准的授权协议;
1.用户打开客户端,客户端询问用户授权。
2.用户同意授权
3.客户端向授权服务器申请授权
4.授权服务器对客户端进行认证,也包括用户信息的认证,认证成功后授权给令牌。
5.客户端获取令牌后,携带令牌向资源服务器请求资源。
6.资源服务器确认令牌正确无误,向客户端释放资源。
二,如何使用Spring OAuth2
.OAuth2 Provider负责公开被OAuth2保护起来的资源,
1.配置Authorization Server;
2.Resource Server的配置
三,JWT:json web token:
将各个主题的信息包装成为JSON对象,主题信息是通过数字签名,进行加密和验证的,常使用HMAC算法或RSA算法对JWT进行签名
1.紧凑型(compact),数据体积非常小,可以通过POST请求或HTTP请求头发送,传输速度快;
2.自包含型,JWT包含了主体的所有信息,所以避免了每个请求都需要向Uaa服务验证身份,
结构:
Header,
{
"alg":"123456"
"typ":"JWT"
}
Payload.
{
"sub":"123456"
"name":"John":"Doe"
"admin":true
}
Signature:
HMACSHA56{
base64UrlEncode(Header)+"."+base64UrlEncode(payload),secret
}
四,应用场景:
认证:
这是使用JWT最常见的场景,一旦用户登陆成功获取JWT后,后续每个请求都将携带JWT.例如:单点登录
信息交换::当Header和PayLoad计算签名时,还可以验证内容是否被篡改。
五,如何使用JWT?
1.登录
2.用密匙创建JWT;
3.返回JWT给浏览器;
4.在Header中加JWT;
5.检查解密JWT获取用户信息;
6.给客户端响应;