在OAuth 2.0 中一共有四个角色,资源拥有者,授权服务,资源服务器和第三方软件,前面的文章分享了授权服务要做什么。
这篇文章分享一下第三方软件和资源服务器要怎么实现OAuth 2.0
首先我们回顾下他们的角色是什么,
第三方软件就是客户端,需要访问用户在某个软件上的资源,比如小兔打单软件需要访问商户在京东平台上的订单信息。
资源服务器就是资源所在的服务器,比如京东后台存储用户订单信息的服务器。
那先看一下第三方软件要做哪些工作,才能接入OAuth 2.0。
第三方软件总共需要四步,分别是注册信息、引导授权、使用访问令牌、使用刷新令牌。
1. 注册信息。第三方软件需要在授权服务器上注册,包括不仅限于app id, app secret,redirect link和scope等。这种方式也叫做静态注册
2. 引导授权。第三方软件需要有一个引导用户授权的页面,当用户点击授权后,跳转到授权服务器提供的授权页面。
3. 使用访问令牌。OAuth 2.0 官方建议有三种使用访问令牌的方式
Form-Encoded Body Parameter(表单参数)将访问令牌放入表单参数中,但这种方式会影响请求的参数的格式
URI Query Parameter(URI 查询参数)将访问令牌放入url中,这种很不安全
Authorization Request Header Field(授权请求头部字段)将访问令牌放入Bear Token中,这种最推荐。安全又不影响原有的业务代码的格式。
4. 使用刷新令牌。一个设计良好的第三方软件,在收到访问令牌时,应该要存下访问令牌的expire in的时间,在expire in快到期的时候,通过刷新令牌去刷新。
资源服务器需要实现的工作主要分两个部分,一个是校验访问令牌的有效性,一个是校验访问的权限
需要处理的权限类别有三种,
1. 不同的权限对应不同的操作,比如查询和修改有不同的权限控制
2. 不同的权限对应不同的数据,比如订单信息和个人账户信息就需要不同的权限
3. 不同的用户对应不同的数据,比如用户A不能访问用户B的数据
在现有的微服务架构中,在访问到资源服务器前都会先经过一层网关,网关就会负责其中部分的校验,比如令牌的有效性,等等
但是不代表资源服务器就不需要做校验了哦。
此文章为3月Day6学习笔记,内容来源于极客时间《OAuth2.0 实战课》,强烈推荐该课程!/推荐该课程