OAuth2.0学习笔记

1.OAuth2.0是什么?

OAuth2.0是工业标准的授权协议,本质是一种协议。Apache基金会提供了针对Java的oauth封装。我们做Java web项目想要实现oauth协议进行资源授权访问,直接使用该封装就可以。

2.协议的工作原理:

1.oauth2.0协议实现原理如下:
OAuth2.0在"客户端"与"服务提供商"之间,设置了一个授权层(authorization layer)。“客户端"不能直接登录"服务提供商”,只能登录授权层,以此将用户与客户端区分开来。"客户端"登录授权层所用的令牌(token),与用户的密码不同,用户可以在登录的时候,指定授权层令牌的权限范围和有效期。
"客户端"登录授权层以后,"服务提供商"根据令牌的权限范围和有效期,向"客户端"开放用户储存的资料。
2.关于该协议的开发都是围绕下面这张图展开的。
在这里插入图片描述

3.OAuth2.0的授权类型

1.在说授权类型之前,我们需要先了解一下OAuth2.0的角色有哪些,OAuth2.0有一下几种角色:

1. 客户端
客户端是指访问资源受限的第三方应用
2. 资源所有者
指拥有共享数据的人或应用 3. 资源服务器
存放用户账号信息和资源的服务器
4. 授权服务器
验证用户信息后给客户端发放资源访问的令牌
2.授权类型:
1.授权码模式(authorization code)
授权码模式是功能最完整、使用最广泛、流程最严密的授权模式,由于这是一个基于重定向的流,所以客户端必须能够与资源所有者的用户代理(通常是web浏览器)进行交互,并且能够从授权服务器接收传入的请求(通过重定向)。

2.简化模式(implicit)
简化模式(implicit grant type)不通过第三方应用程序的服务器,直接在浏览器中向认证服务器申请令牌,跳过了"授权码"这个步骤,因此得名。所有步骤在浏览器中完成,令牌对访问者是可见的,且客户端不需要认证

3.密码模式(resource owner password credentials)
密码模式中,用户向客户端提供自己的用户名和密码。客户端使用这些信息,向"服务商提供商"索要授权。
在这种模式中,用户必须把自己的密码给客户端,但是客户端不得储存密码。这通常用在用户对客户端高度信任的情况下,比如客户端是操作系统的一部分,或者由一个著名公司出品。而认证服务器只有在其他授权模式无法执行的情况下,才能考虑使用这种模式

4.客户端模式(client credentials)
客户端模式(Client Credentials Grant)指客户端以自己的名义,而不是以用户的名义,向"服务提供商"进行认证。严格地说,客户端模式并不属于OAuth框架所要解决的问题。在这种模式中,用户直接向客户端注册,客户端以自己的名义要求"服务提供商"提供服务,其实不存在授权问题

4.OAuth2.0的自己的理解案例

授权过程如下:
在这里插入图片描述
以上通过一个小例子来说明我对这个的理解:
角色说明:
客户端:照片打印的应用(即第三方应用)
资源服务器/验证服务器:QQ空间
资源拥有者:QQ用户
这里的资源拥有者,只是存放资源,真正拥有资源的是用户
资源服务器和验证服务器可以是同一个服务器,但不是必须的。
若资源服务器和验证服务器分开,两个服务器之间如何通信,需要开发者自己设计
验证服务器能够授权客户端应用访问资源拥有者所拥有的资源

例子背景如下,
现在我需要通过照片打印的应用去帮我把QQ空间的一些照片打印出来,但是我又不想暴露我个人过多的信息的情况下。
主要授权流程如下:
1.用户通过浏览器访问自己照片打印的应用去打印照片,此时应用提示用户需要QQ空间的照片资源授权
2.用户同意授权,此时会带着客户端的信息和redirectUrl(要跳转的url)去资源拥有者,验证客户端信息可靠性后,授权许可下发code
3.客户端拿到验证的code,以及redirectUrl等信息后,去验证服务器验证code和redirectUrl等信息,验证通过之后,验证服务器下发令牌即accessToken以及refreshToken
4.客户端拿到accessToken以及refreshToken之后,带上令牌去请求资源服务器换取资源。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值