文章目录 一、Oauth2是什么? 二、Oauth2的四种角色? 三、Oauth2的
OAuth是一个开放标准,也就是一个授权框架,使应用程序能够访问其它公司提供的资源,允许用户在第三方应用访问存储在其他服务器上的私密资源,而在整个过程不需要提供用户名和密码给到第三方应用,可以通过提供一个令牌(token)实现该功能,采用令牌的方式可以让用户灵活的对第三方应用授权或收回权限
Oauth一共定义了四种角色:
1.资源所有者(Resource Owner)
:即代表用户本身
2.资源服务器(Resource Server)
:存储受保护的账号信息
3.授权服务器(Authorization Server)
:在成功验证用户身份,并获得授权后,给客户端派发访问资源令牌
4.客户端(Client)
:即代表你访问的第三方应用
是最常用的模式,也是最繁琐的模式,同时也是最安全的模式。
用户通过浏览器访问第三方应用(client)的一张照片,但浏览器没有权限
通过请求重定向至授权页面,等待用户授权
用户授权完成,授权服务器返回一个 code 和 client_id 给浏览器
浏览器拿着code去请求client,client拿着code去和授权服务器换取Access_token和 Refresh_token
ps: refresh_token 的作用是刷新AccessToken。认证服务器会提供一个刷新接口,我们传入Refresh_token,认证服务器通过后会返回一个新的AccessToken,起到一个更新迭代的过程。
10.11:client拿着Accesstoken去和资源服务器换取照片信息,资源服务器验证access_Token的合法性,没问题就允许访问可控资源,返回照片列表给client
client拿到照片列表给到浏览器,浏览器返回视图给用户看
ps:也可以把访问照片理解成为,登录第三方应用
简化模式相比于授权码模式,少了code换取token这一步,但不安全,token可以被恶意脚本获取,同时token有效期短,浏览器关闭即失效。
可以看到浏览器请求授权,授权服务器问用户是否授权,用户同意之后,直接返回token给到浏览器,类似于我们的
ps:一般简化模式用于没有服务器端的第三方单页面应用,因为没有服务器端就无法使用授权码模式,适用于纯静态页面(前端),这个模式下access_token容易泄露且不可刷新
密码模式是用户直接将自己的用户名密码交给client(App),client用用户的用户名密码直接换取AccessToken。
该模式需要用户直接将账号密码发给client,后client用其换取Access_token和 Refresh_token
这种模式十分简单,但是却意味着直接将用户敏感信息泄漏给了client,因此这就说明这种模式只能用于client是我们自己开发的情况下。因此密码模式一般用于我们自己开发的,第一方原生App或第一方单页面应用。
ps:一般用在强信任的两个系统,比如两个产品都是同一个公司
只要client请求,我们就将AccessToken发送给它。
这种模式适用于内部系统之间的验证,应用维度的共享资源,不需要用户授权,适合后台服务间的认证和访问
严格来说,客户端模式并不属于oauth框架所要解决的问题,在这种模式下,已经与用户没有关系了,单纯的数据客户端以自己的名义要求资源提供商提供服务,不存在授权问题。
本文主要介绍了OAuth2的基本概念和四种认证模式,这四种模式各有优缺点,其中最常用的是授权码模式,如果是公司层面使用的话,还得考虑其他因素。
来源地址:https://blog.csdn.net/Huang_Ds/article/details/125533523
--结束END--
本文标题: 【OAuth2】详细讲解
本文链接: https://lsjlt.com/news/412909.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
2024-04-01
2024-04-03
2024-04-03
2024-01-21
2024-01-21
2024-01-21
2024-01-21
2023-12-23
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0