【OAuth2】详细讲解

文章目录

                        一、Oauth2是什么?

                        二、Oauth2的四种角色?

                        三、Oauth2的四种模式

                        1.授权码模式

                        2.简化模式

                        3.密码模式 

                        4.客户端模式 

                        总结


一、OAuth2是什么?

        OAuth是一个开放标准,也就是一个授权框架,使应用程序能够访问其它公司提供的资源,允许用户在第三方应用访问存储在其他服务器上的私密资源,而在整个过程不需要提供用户名和密码给到第三方应用,可以通过提供一个令牌(token)实现该功能,采用令牌的方式可以让用户灵活的对第三方应用授权或收回权限

二、OAuth2的四种角色?

        Oauth一共定义了四种角色:

                1.资源所有者(Resource Owner)

                        :即代表用户本身

                2.资源服务器(Resource Server)

                        :存储受保护的账号信息

                3.授权服务器(Authorization Server)

                        :在成功验证用户身份,并获得授权后,给客户端派发访问资源令牌

                4.客户端(Client)

                        :即代表你访问的第三方应用

三、OAuth2的四种模式

1.授权码模式

是最常用的模式,也是最繁琐的模式,同时也是最安全的模式。

授权码模式

1.2.3:用户通过浏览器访问第三方应用(client)的一张照片,但浏览器没有权限

4:通过请求重定向至授权页面,等待用户授权

5.6:用户授权完成,授权服务器返回一个 code 和 client_id 给浏览器

7.8.9:浏览器拿着code去请求client,client拿着code去和授权服务器换取Access_token和 Refresh_token   

        ps: refresh_token 的作用是刷新AccessToken。认证服务器会提供一个刷新接口,我们传入Refresh_token,认证服务器通过后会返回一个新的AccessToken,起到一个更新迭代的过程。     

 10.11:client拿着Accesstoken去和资源服务器换取照片信息,资源服务器验证access_Token的合法性,没问题就允许访问可控资源,返回照片列表给client

12.13:client拿到照片列表给到浏览器,浏览器返回视图给用户看

        ps:也可以把访问照片理解成为,登录第三方应用

2.简化模式

简化模式相比于授权码模式,少了code换取token这一步,但不安全,token可以被恶意脚本获取,同时token有效期短,浏览器关闭即失效。

简化模式

可以看到浏览器请求授权,授权服务器问用户是否授权,用户同意之后,直接返回token给到浏览器,类似于我们的 

         ps:一般简化模式用于没有服务器端的第三方单页面应用,因为没有服务器端就无法使用授权码模式,适用于纯静态页面(前端),这个模式下access_token容易泄露且不可刷新

3.密码模式 

密码模式是用户直接将自己的用户名密码交给client(App),client用用户的用户名密码直接换取AccessToken。

时序图

 该模式需要用户直接将账号密码发给client,后client用其换取Access_token和 Refresh_token   

这种模式十分简单,但是却意味着直接将用户敏感信息泄漏给了client,因此这就说明这种模式只能用于client是我们自己开发的情况下。因此密码模式一般用于我们自己开发的,第一方原生App或第一方单页面应用。

        ps:一般用在强信任的两个系统,比如两个产品都是同一个公司

4.客户端模式 

只要client请求,我们就将AccessToken发送给它。

凭证模式

这种模式适用于内部系统之间的验证,应用维度的共享资源,不需要用户授权,适合后台服务间的认证和访问

 严格来说,客户端模式并不属于oauth框架所要解决的问题,在这种模式下,已经与用户没有关系了,单纯的数据客户端以自己的名义要求资源提供商提供服务,不存在授权问题。


总结

本文主要介绍了OAuth2的基本概念和四种认证模式,这四种模式各有优缺点,其中最常用的是授权码模式,如果是公司层面使用的话,还得考虑其他因素。

  • 28
    点赞
  • 165
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
### 回答1: OAuth2是一种开放的授权框架,它允许用户通过向第三方应用程序授权其接入受保护资源的权限,而无需将其凭据(如用户名和密码)提供给第三方应用程序。 OAuth2使用令牌,而不是密码,来授权访问第三方应用程序的资源。 ### 回答2: OAuth2是一种开放标准的身份验证和授权协议,用于在不需要提供密码的情况下授权第三方应用程序访问用户帐户的资源。它是为了解决传统身份验证和授权方式中的一些问题而设计的。 OAuth2的核心概念是用户、客户端应用、授权服务器和资源服务器。用户是资源的所有者,客户端应用是要访问用户资源的应用程序,授权服务器是用于验证用户身份并生成访问令牌的服务器,资源服务器是托管用户资源的服务器。 OAuth2的工作流程如下: 1. 客户端应用向授权服务器发送请求,请求授权访问某个特定的资源。 2. 用户通过授权服务器进行身份验证,并授权客户端应用访问自己的资源。 3. 授权服务器验证用户身份后,生成访问令牌,并将令牌返回给客户端应用。 4. 客户端应用使用访问令牌向资源服务器发送请求,请求访问用户的资源。 5. 资源服务器验证访问令牌的合法性,并根据权限决定是否授权客户端应用访问用户资源。 OAuth2的优点在于: 1. 安全性:OAuth2使用了访问令牌而不是密码,使得用户的密码不会被暴露在第三方应用程序中。 2. 用户体验:由于用户可以根据需要选择哪些资源和权限提供给第三方应用程序访问,用户体验更加灵活和安全。 3. 可扩展性:OAuth2是一个开放标准,可以轻松地与其他身份验证和授权协议进行集成。 4. 第三方应用集成:OAuth2使得第三方应用程序可以安全、可控地访问用户资源,促进了不同应用之间的集成和合作。 总之,OAuth2是一种先进的身份验证和授权协议,可以在保证安全的前提下,让用户有更好的控制权和使用体验,同时也促进了应用程序之间的集成和合作。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值