手把手教你搭建Oauth2授权服务!
手把手教你搭建Oauth2授权服务!用户认证授权是绝大多数系统中都会涉及到的业务需求,除了常规的账号密码授权、手机验证码授权外,基于第三方的Oauth2授权也是很常用的授权方式,接下来朱哥就系统地给大家讲解一下Oauth2的授权服务。本篇文章我们先来学习一下Oauth2的概念及授权模式。
Oauth2协议简介
1.简介
OAuth2是一个对外开放的第三方授权协议,允许用户不提供第三方应用的账号信息的前提下以授权的方式获得第三方应用资源的访问令牌,从而能够访问第三方资源。
2.相关概念
在Oauth2授权服务中,我们首先要了解几个技术名词:
Client :第三方应用客户端
Resource Owner:资源所有者(用户)
Authorizetion Server :授权服务器
Resource Server :资源服务器
3.授权模式
Oauth2提供了四种授权模式分别为、客户端模式、密码模式、授权码模式和简易模式,这四种方式说白了就是4种获取访问令牌的方式,接下来我们详细介绍每种模式的执行流程。
客户端模式
接下来给大家详细讲述一下客户端模式的执行流程
执行流程:
资源服务客户端向授权服务发送请求,并携带保留在授权服务的clientId和secret;
授权服务校验客户端身份是否合法,如果合法返回access token;
资源服务通过access token访问资源服务服务端(当然资源服务的服务端并不是必要的,可以不存在)。
说明:
这种模式适用于只有客户端没有服务端的场景,比如问卷调查等。这种模式不安全会导致客户端账号向用户泄漏,要求客户端与授权服务的完全互信。
密码模式
接着我们再来学习一下Oauth2的执行流程
执行流程:
资源拥有者向资源服务客户端发送登录请求;
响应登录界面(这个登录界面由第三方应用提供);
资源拥有者填写账户信息(注意:由于界面是第三方应用提供的,并不是授权服务提供的,所以这里存在泄漏账户风险);
资源拥有者向授权服务发送登录请求,授权服务校验用户信息;
如果用户信息合法那么响应access token;
资源服务客户端携带access token 访问资源服务服务端。
说明:
这种模式由于存在账号泄漏的风险,所以只能适用于授权服务与第三方应用完全互信的场景,例如公司内部系统。
授权码模式
我们继续来了解Oauth2的第三种授权模式
授权码模式是四种模式中最安全的,也是流程最复杂,交互次数最多的一种模式。具体流程如下:
资源拥有者请求登录界面;
资源拥有者点击授权登录,例如QQ登录(这一步直接携带clientId请求授权服务端点);
授权服务响应qq登录授权登录界面(注意这个界面是授权服务提供的,所以不存在账号泄漏);
用户同意授权;
授权服务响应授权码(授权码具备一次性特性);
资源服务客户端获取授权码,再次向授权服务发起请求,请求获取access token;
授权服务校验授权码,并响应access token;
资源服务客户端获取access token 通过access token访问资源服务服务端。
说明:
这种模式由于不泄露用户账户信息,所以非常安全,适用于授权服务与第三方应用完全不互信场景。
简易模式
最后,我们再来看一下Oauth2的第四种授权模式
执行流程:
资源拥有者请求登录界面;
资源拥有者点击授权登录,例如QQ登录(这一步直接携带clientId请求授权服务端点);
授权服务响应qq登录授权登录界面(注意这个界面是授权服务提供的,所以不存在账号泄漏);
用户同意授权;
授权服务响应access token;
资源服务客户端通过access token访问资源服务服务端。
说明:
简易模式相当于授权服务的简化版,省去了校验授权码的过程。由于不存在泄漏用户账号,所以适用于授权服务与第三方应用不互信的场景。
小结
本篇主要讲解了Oauth2授权服务的四种授权方式,其中授权码模式是广泛应用的一种模式,因为授权模式比较安全。授权码模式既可以对内系统授权也可以开放对外授权。QQ、微信、支付宝对外授权基本采用的是Oauth2授权模式中的授权码模式。那么怎么去搭建授权服务以及怎么去搭建资源服务,敬请持续关注,感谢阅读!
相关推荐HOT
更多>>算法评测标准---空间复杂度是什么?
算法评测标准---空间复杂度是什么?空间复杂度是什么?一. 空间复杂度的概念,复杂度(Space Complexity),是对一个算法在运行过程中临时占用存...详情>>
2023-03-23 20:15:04怎么用css画三角形?
怎么用css画三角形?border这里的像素值 和 border-left这里的像素值可以是不一样的,也可以是一样的,根据三角形的形状来进行具体设置值即可,要...详情>>
2023-03-23 15:27:16Maven集成 tomcat插件及使用教程
在实际的项目开发中,特别是分布式项目,往往有N多个子项目需要同时启动测试。这样多个项目引用tomcat插件,配置不同的端口,就可以同时启动N个...详情>>
2023-02-23 14:44:00扫盲CSS中常见的单位
Px是pixel的简写, 被称之为像素单位, px可以在计算机屏幕上,能达到预期的效果,在打印机和其它的高分辨率设备上,它又能取得所希望的效果, 一...详情>>
2023-02-16 13:47:00