spring security oauth2(三)

spring security oauth2

1. OAuth2 介绍

Oauth2.0是Oauth家族延续产品,并不兼容Oauth1.0,相较于Oauth1.0而言更加简单更加安全。

2. OAuth2的应用场景

举个栗子:
假如我们公司开发了一个想美图秀秀的APP,用户登陆我们的APP,要想获取存在QQ空间里面的照片,之前的做法是直接把用户的账号和密码告诉APP,这样当然是可以获取用户空间的照片,但用户其它一些隐私(例如:用户好友列表)也告诉了APP,这时用户的隐私安全就受到威胁。这时我们可以采用Oauth2.0来解决,给APP只赋予查看QQ空间的权限,并且时间也是有限的。

3.OAuth 中重要角色

(1) Third-party application:第三方应用程序,本文中又称"客户端"(client),即上一节例子中的"云冲印"。

(2)HTTP service:HTTP服务提供商,本文中简称"服务提供商",即上一节例子中的Google。

(3)Resource Owner:资源所有者,本文中又称"用户"(user)。

(4)User Agent:用户代理,本文中就是指浏览器。

(5)Authorization server:认证服务器,即服务提供商专门用来处理认证的服务器。

(6)Resource server:资源服务器,即服务提供商存放用户生成的资源的服务器。它与认证服务器,可以是同一台服务器,也可以是不同的服务器。

4. OAuth 运行流程

OAuth运行流程
OAuth 提供了四种授权模式:

  • 授权码模式 Authorization code
  • 简化模式 implicit
  • 密码模式 resource owner Password credentials
  • 客户端模式 client credentials
    四种授权模式在我们项目中,授权码模式,和密码模式使用的最多,其它两种授权模式使用的较少。下面就对授权码模式和密码模式进行讲解。
    授权码模式
    授权码模式也是授权模式里面最复杂的一种,分为两个步骤:
    步骤一:
    引导用户到授权服务器,请求用户授权,用户授权后返回 授权码(Authorization Code)
    步骤二:
    客户端由授权码到授权服务器换取访问令牌(Access Token)

在步骤一中,客户端申请认证的URI,包含以下参数:

  • response_type:表示授权类型,必选项,此处的值固定为"code"
  • client_id:表示客户端的ID,必选项
  • redirect_uri:表示重定向URI,可选项
  • scope:表示申请的权限范围,可选项
  • state:表示客户端的当前状态,可以指定任意值,认证服务器会原封不动地返回这个值。
    下面是一个例子:
localhost:8080/oauth/authorize?response_type=code&redirect_uri=https://www.baidu.com/&client_id=myid&scope=all

当我们同意授权后,会跳转到redirect_uri指定的地址,并返回授权码code
步骤二:我们拿到步骤一返回的code去获取access_token,请求包含如下参数

  • grant_type:表示使用的授权模式,必选项,此处的值固定- 为"authorization_code"。
  • code:表示上一步获得的授权码,必选项。
  • redirect_uri:表示重定向URI,必选项,且必须与A步骤中的该参数值保持一致。
  • client_id:表示客户端ID,必选项。
  • scope 授权范围,与步骤一socpe保持一致。

密码模式
用户将账号和密码提供为第三方引用,第三方引用拿着这些信息向服务提供商获取access_token。
第三方应用引用拿着用户信息获取access_token,包含的参数有:

  • grant_type:表示授权类型,此处的值固定为"password",必选项。
  • username:表示用户名,必选项。
  • password:表示用户的密码,必选项。
  • scope:表示权限范围,可选项。

想更多的学习关于OAuth2.0的知识,可以看阮一峰老师的文章。http://www.ruanyifeng.com/blog/2014/05/oauth_2_0.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值