OAuth 2.0的授权认证流程

1、Auth2.0 协议简介

2、OAuth 2.0的授权认证流程

            OAuth 2.0 的核心概念

            认证思路与流程

3、OAuth2.0 的四种模式

            授权码模式(authorization code)

            隐式授权模式(Implicit Grant)

        资源所有者密码凭证模式(Resource Owner Password Credentials Grant)

            客户端凭证模式(Client Credentials Grant)

4、相关文章

图片

Auth2.0 协议简介 

关于应用系统用户身份管理需求,包括身份认证、权限授权、单点登录、联合身份认证等业务场景,业界有一堆的标准和规范,比如单点登录的CAS、Kerberos,第三方身份认证OpenID,第三方用户授权OAuth,联合身份认证和授权数据标准SAML等。每种技术有各自的应用场景,也存在交叉场景,想要把他们搞清楚,需要了解各种技术的工作原理和应用场景。今天就从其中一个技术开始,对OAuth2.0用户授权框架做一个简单介绍,想对框架全面了解的可以参考框架的标准RFC6749。Oauth使用场景:

  • 第三方登录(确定登录的身份等信息)
  • API鉴权(确定请求方是否被许可)

在OAuth之前,HTTP Basic Authentication, 即用户输入用户名&密码的形式进行验证, 这种形式是不安全的。OAuth的出现就是为了解决访问资源的安全性以及灵活性。举一个通俗的例子,用户把照片、视频、联系人数据存储在内容托管云服务R(Resource)中的Picture、Video、Contact三个模块中;用户使用在线照片打印服务P(Printer),用户需要让P服务读取R服务中的照片进行打印,但不想让P服务读取R服务中的其他数据。传统方式下,用户只能向P服务提供R服务的用户名密码,P服务通过用户名密码登录R服务,读取照片,并且不能限制P服务读取的范围。使用OAuth框架,通过以下授权流程,在不暴露用户密码的情况下,向P服务授予有限的操作S服务的权限,整体流程如下:

  • 用户登录P服务,点击获取R服务权限的链接。
  • 浏览器跳转到R服务,用户登录R服务后,跳出向P服务授予权限的界面。
  • 用户选择授予Picture模块、只读、有效期1小时三个权限的授权选项,并提交。
  • 页面跳转回P服务,并携带R服务生产的授权码(Picture模块只读权限)。
  • P服务获得授权码,通过授权码(附加clint_id和client_secret)向R服务发起读取Picture模块请求。
  • R服务验证用户信息和授权码后,向P服务提供Picture的读取权限。

OAuth发展至今,共有三个版本,分别为:初始化版本OAuth1.0;漏洞修复版本OAuth 1.0a;不向后兼容的OAuth2.0版本。2.0版本主要是修复了前面版本的安全漏洞,对授权的流程进行了优化,提供了更丰富的使用场景,由于优化精简了授权的步骤,所以不能向后兼容。

图片

OAuth 2.0的授权认证流程 

OAuth 2.0 的核心概念

根据RFC描述,OAuth 2.0定义了4种服务角色,分别描述如下:

  • 资源所有者 Resource Owner,能够授予对受保护资源的访问权限的实体,当资源所有者是人员时,资源所有者就是最终用户。

  • 资源服务器 Resource Server,托管受保护资源的服务器,能够使用访问令牌(Access Token)接受和响应受保护的资源请求。

  • 客户端 Client,代表资源所有者,经其授权后向受保护资源发起请求的应用程序。

  • 授权服务器 Authorization Server,授权服务器对资源所有者进行认证并获取授权后,向客户端颁发访问令牌(Access Token)

在认证和授权的过程中涉及的一些概念:

访问令牌(access token)

访问令牌是在用户授权许可下,授权服务器下发给客户端的一个授权凭证,该令牌所要表达的意思是“用户授予该APP在多少时间范围内允许访问哪些与自己相关的服务”,所以访问令牌主要在 时间范围 和 权限范围 两个维度进行控制,此外访问令牌对于客户端来说是非透明的,外在表现就是一个字符串,客户端无法知晓字符串背后所隐藏的用户信息,因此不用担心用户的登录凭证会因此而泄露。

刷新令牌(refresh token)

刷新令牌的作用在于更新访问令牌,访问令牌的有效期一般较短,这样可以保证在发生访问令牌泄露时,不至于造成太坏的影响,但是访问令牌有效期设置太短存在的副作用就是用户需要频繁授权,虽然可以通过一定的机制进行静默授权,但是频繁的调用授权接口,之于授权服务器也是一种压力,这种情况下就可以在下发访问令牌的同时下发一个刷新令牌,刷新令牌的有效期明显长于访问令牌,这样在访问令牌失效时,可以利用刷新令牌去授权服务器换取新的访问令牌,不过协议对于刷新令牌没有强制规定,是否需要该令牌是客户端可以自行选择。

回调地址(redirect uri)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

临水逸

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值