发表于: 2021-05-13 23:12:47

1 1431


今天完成的事情:

学习spring cloud oauth2



明天计划的事情:
创建一个spring cloud oauth2项目
任务9深度思考

任务7,8,9总结




遇到的问题:


昨天没休息好    今天下午回去休息了


看书学spring cloud oauth2,但书是2018年出的,版本太旧了了,有很多代码都更新了,旧代码经常出错,还是google来学习oauth2吧





收获:


spring cloud oauth2


是什么?

简单说,OAuth 就是一种授权机制。数据的所有者告诉系统,同意授权第三方应用进入系统,获取这些数据。系统从而产生一个短期的进入令牌(token),用来代替密码,供第三方应用使用。




应用场景:

假设有两个网站  A  B,   用户在A中创建了自己用户


那么现在B  网站需要用到A网站的一些资源,那么就需要的到用户的授权,当然不能把用户的密码和账号给  B网站,  这样  B网站就拥有了获取用户储存在A所有资料的权力,用户没法限制"B网站"获得授权的范围和有效期。

OAuth就是为了解决上面这些问题而诞生的。



看邮箱发现了这个,这就是一个实例了:

学习OAuth 2.0之前,需要了解几个专用名词


(1) Third-party application:第三方应用程序,本文中又称"客户端"(client),即上一节例子中的"B  网站"。


(2)HTTP service:HTTP服务提供商,本文中简称"服务提供商",即上一例子中的A 网站


(3)Resource Owner:资源所有者,本文中又称"用户"(user)。


(4)User Agent:用户代理,本文中就是指浏览器。


(5)Authorization server:认证服务器,即服务提供商专门用来处理认证的服务器。


(6)Resource server:资源服务器,即服务提供商存放用户生成的资源的服务器。它与认证服务器,可以是同一台服务器,也可以是不同的服务器。




OAuth的思路:

(A)用户打开客户端以后,客户端要求用户给予授权。


(B)用户同意给予客户端授权。


(C)客户端使用上一步获得的授权,向认证服务器申请令牌。


(D)认证服务器对客户端进行认证以后,确认无误,同意发放令牌。


(E)客户端使用令牌,向资源服务器申请获取资源。


(F)资源服务器确认令牌无误,同意向客户端开放资源。


这里关键就是  (B)用户同意给予客户端授权。


这里面详细的步骤如下,我以前还不知道自己就授权一下,会发生这么多事情。


(A)用户访问客户端,后者将前者导向认证服务器。


(B)用户选择是否给予客户端授权。


(C)假设用户给予授权,认证服务器将用户导向客户端事先指定的"重定向URI"(redirection URI),同时附上一个授权码


(D)客户端收到授权码,附上早先的"重定向URI",向认证服务器申请令牌。这一步是在客户端的后台的服务器上完成的,对用户不可见。


(E)认证服务器核对了授权码和重定向URI,确认无误后,向客户端发送访问令牌(access token)和更新令牌(refresh token)。


C步骤中,服务器回应客户端的URI,包含以下参数:


code:表示授权码,必选项。该码的有效期应该很短,通常设为10分钟,客户端只能使用该码一次,否则会被授权服务器拒绝。该码与客户端ID和重定向URI,是一一对应关系。


state:如果客户端的请求中包含这个参数,认证服务器的回应也必须一模一样包含这个参数。


例子:
HTTP/1.1 302 Found
Location: https://client.example.com/cb?code=SplxlOBeZQQYbYS6WxSbIA
&state=xyz



参考网址:http://www.ruanyifeng.com/blog/2014/05/oauth_2_0.html

===========
===========







返回列表 返回列表
评论

    分享到