前言技术之Oauth2全方面介绍

目录

一、Oauth2基本概念

1、定义

2、场景带入

1、外卖场景

2、互联网场景

3、令牌与密码

二、Oauth2的角色定义

三、Oauth2认证方式

        1、Oauth2四种认证方式

        2、授权码方式 

                 1、概念: 

                 2、步骤:

        3、隐藏式方式  

                 1、概念:        

                 2、步骤: 

        4、密码式方式 

                 1、概念:

                 2、步骤:  

        5、凭证式方式 

                 1、步骤

四、Oauth2与JWT的区别

        1、JWT机制

                 1、定义:

                 2、JWT的组成部分:

                 3、JWT解决的问题:

​                 4、适用的场景:

                 5、不适用的场景: 

         2、Oauth2机制


一、Oauth2基本概念

1、定义

Oauth2是目前最流行的授权机制,用来授权第三方应用,获取用户数据

2、场景带入

1、外卖场景

一户人家住在一个大型居住小区,小区有门禁系统,进入小区需要输入密码,这户人家经常性点外卖,必须让外卖人员进入到小区,如果把密码告诉外卖人员,这样的话,他就和户主拥有了一样的权限,这样安全隐患太大,给了外面人员密码之后,为了安全,必须要进行修改密码,这就很麻烦。

这时候Oauth2就诞生了,外卖人员的职责只是送货,没必要知道小区密码

Oauth2的实现步骤:

1、在门禁系统密码输入器下面,增加一个按钮,叫做“获取授权”,快递员需要首先按这个按钮,去申请授权

2、按下按钮之后,户主的手机就会弹出对话框,有人正在请求授权,系统会显示,该快递员的姓名,工号,和所属的快递公司,户主确认请求属实之后,就点击按钮,告诉门禁系统,户主给与他进入小区的权力

3、门禁系统得到我的确认后吗,向快递员显示一个进去小区的令牌,只在短时间内有效

4、快递员向门禁系统输入令牌,进去小区

2、互联网场景

把以上场景放置到互联网中,就是Oauth2的设计

1、首先,居住小区就是存储用户数据的网络服务,比如微信存储了我的好友信息,获取这些信息,就必须经过微信的"门禁系统"

2、其次,快递员就是第三方应用,想要穿过门禁系统进入小区

3、最后,户主同意第三方应用进入小区,获取户主数据

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

3、令牌与密码

令牌和密码的作用是一样的,都可以进入系统,但是有以下三点差异:

1、令牌是短期的,到期就会自动失效,用户自己无法进行修改,但是密码一般长期有效,用户不修改,就不会发生变化

2、令牌可以被所有者立即撤销,会立即失效,但是密码不会

3、令牌有权限范围,比如只能进入小区的几单元就进几单元。

二、Oauth2的角色定义

          Oauth2有四种角色,一个是客户端,一个是资源所有者,一个是授权服务器,还有一个是资源服务器

以上述外卖场景为例,

外卖人员----->客户端

户主----->资源所有者

保安----->授权服务器

小区----->资源服务器

 

三、Oauth2认证方式

        1、Oauth2四种认证方式

 注意:

不管是哪一种授权方式,第三方应用申请令牌之前,都必须先到系统备案,说明自己的身份,然后拿到两个身份的识别码,客户端和客户端密钥,这是防止密钥被滥用,没有备案过的第三方的应用,是不会拿到令牌的

        2、授权码方式 

                 1、概念: 

授权方式:第三方应用先申请一个授权码,然后再用改码获取令牌

                 2、步骤:

1、A网站提供一个链接,用户点击之后跳转到B网站,授权用户数据给A网站使用

2、用户跳转后,B网站会要求用户进行登录,然后询问是否同意给与A网站授权,用户表示同意,这时B网站就会跳回到redirect_uri参数指定路径,跳转时,会传回一个授权码。

3、A网站拿到授权码之后,就可以在后端向B网站请求令牌

4、B网站收到请求后,就会颁发令牌,具体做法是向redirect_uri指定地址,发送一个Json数据


        3、隐藏式方式  

                 1、概念:        

                 2、步骤: 

1、A网站提供一个链接,用户点击之后跳转到B网站,授权用户数据给A网站使用

2、用户跳转到B网站,登录后同意给与A网站授权,这时,B网站就会跳回redirect_uri

参数指定跳转网址,并把令牌作为URL参数传给A网站

        4、密码式方式 

                 1、概念:

                 2、步骤:  

1、A网站要求用户提供B网站的用户名和密码,拿到之后,A直接向B请求令牌

2、B网验证身份通过后,直接给出令牌(注意:这是不需要跳转

        5、凭证式方式 

                 1、步骤

1、A应用在命令行向B发送请求

2、B网站验证通过以后,直接返回令牌

这种方式给出的令牌,是针对第三方应用的,而不是针对用户的,即有可能多个用户共享一个令牌

四、Oauth2与JWT的区别

        1、JWT机制

                 1、定义:

                 2、JWT的组成部分:

                 3、JWT解决的问题:

                 4、适用的场景:

一次性的身份认证,api的鉴权

                 5、不适用的场景: 

具体的JWT知识自己博客也有写到,可以进行参考:

JWT介绍_I Want To IT Master的博客-CSDN博客

         2、Oauth2机制

上面已对Oauth2机制进行讲解,需要进行对比,只需将两个事务列出来,然后就一目了然

今天的知识就分享到这了,希望能够帮助到你!

  • 9
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值