返回顶部
首页 > 资讯 > 后端开发 > JAVA >【OAuth2】详细讲解
  • 846
分享到

【OAuth2】详细讲解

大数据javaspringbootwebapp 2023-09-20 14:09:35 846人浏览 独家记忆
摘要

文章目录                         一、Oauth2是什么?                         二、Oauth2的四种角色?                         三、Oauth2的

文章目录

                        一、Oauth2是什么?

                        二、Oauth2的四种角色?

                        三、Oauth2的四种模式

                        1.授权码模式

                        2.简化模式

                        3.密码模式 

                        4.客户端模式 

                        总结


一、OAuth2是什么?

        OAuth是一个开放标准,也就是一个授权框架,使应用程序能够访问其它公司提供的资源,允许用户在第三方应用访问存储在其他服务器上的私密资源,而在整个过程不需要提供用户名和密码给到第三方应用,可以通过提供一个令牌(token)实现该功能,采用令牌的方式可以让用户灵活的对第三方应用授权或收回权限

二、OAuth2的四种角色?

        Oauth一共定义了四种角色:

                1.资源所有者(Resource Owner)

                        :即代表用户本身

                2.资源服务器(Resource Server)

                        :存储受保护的账号信息

                3.授权服务器(Authorization Server)

                        :在成功验证用户身份,并获得授权后,给客户端派发访问资源令牌

                4.客户端(Client)

                        :即代表你访问的第三方应用

三、OAuth2的四种模式

1.授权码模式

是最常用的模式,也是最繁琐的模式,同时也是最安全的模式。

授权码模式

用户通过浏览器访问第三方应用(client)的一张照片,但浏览器没有权限

通过请求重定向至授权页面,等待用户授权

用户授权完成,授权服务器返回一个 code 和 client_id 给浏览器

浏览器拿着code去请求client,client拿着code去和授权服务器换取Access_token和 Refresh_token   

        ps: refresh_token 的作用是刷新AccessToken。认证服务器会提供一个刷新接口,我们传入Refresh_token,认证服务器通过后会返回一个新的AccessToken,起到一个更新迭代的过程。     

 10.11:client拿着Accesstoken去和资源服务器换取照片信息,资源服务器验证access_Token的合法性,没问题就允许访问可控资源,返回照片列表给client

client拿到照片列表给到浏览器,浏览器返回视图给用户看

        ps:也可以把访问照片理解成为,登录第三方应用

2.简化模式

简化模式相比于授权码模式,少了code换取token这一步,但不安全,token可以被恶意脚本获取,同时token有效期短,浏览器关闭即失效。

简化模式

可以看到浏览器请求授权,授权服务器问用户是否授权,用户同意之后,直接返回token给到浏览器,类似于我们的 

         ps:一般简化模式用于没有服务器端的第三方单页面应用,因为没有服务器端就无法使用授权码模式,适用于纯静态页面(前端),这个模式下access_token容易泄露且不可刷新

3.密码模式 

密码模式是用户直接将自己的用户名密码交给client(App),client用用户的用户名密码直接换取AccessToken。

时序图

 该模式需要用户直接将账号密码发给client,后client用其换取Access_token和 Refresh_token   

这种模式十分简单,但是却意味着直接将用户敏感信息泄漏给了client,因此这就说明这种模式只能用于client是我们自己开发的情况下。因此密码模式一般用于我们自己开发的,第一方原生App或第一方单页面应用。

        ps:一般用在强信任的两个系统,比如两个产品都是同一个公司

4.客户端模式 

只要client请求,我们就将AccessToken发送给它。

凭证模式

这种模式适用于内部系统之间的验证,应用维度的共享资源,不需要用户授权,适合后台服务间的认证和访问

 严格来说,客户端模式并不属于oauth框架所要解决的问题,在这种模式下,已经与用户没有关系了,单纯的数据客户端以自己的名义要求资源提供商提供服务,不存在授权问题。


总结

本文主要介绍了OAuth2的基本概念和四种认证模式,这四种模式各有优缺点,其中最常用的是授权码模式,如果是公司层面使用的话,还得考虑其他因素。

来源地址:https://blog.csdn.net/Huang_Ds/article/details/125533523

--结束END--

本文标题: 【OAuth2】详细讲解

本文链接: https://lsjlt.com/news/412909.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 【OAuth2】详细讲解
    文章目录                         一、Oauth2是什么?                         二、Oauth2的四种角色?                         三、Oauth2的...
    99+
    2023-09-20
    大数据 java spring boot web app
  • OAuth2 详细介绍!
    目录 一、文章介绍 二、OAth2 2.1 简介 2.2 OAuth2  授权总体流程 2.3 四种授权模式 1.授权码模式 2.简化模式 3.密码模式 4. 客户端模式 2.4 OAuth2 标准接口 2.5 GitHub 授权登录 1...
    99+
    2023-09-15
    github java
  • springmvc详细讲解
    一、SpringMVC 1.1 引言 java开源框架,Spring Framework的一个独立模块。 MVC框架,在项目中开辟MVC层次架构 对控制器中的功能 包装 简化 扩展践行工厂...
    99+
    2023-10-21
    servlet java spring mvc
  • GoLangunsafe包详细讲解
    目录1.前言2.指针类型转换3.指针运算4.获取大小和偏移5.关于string1.前言 开发中,[]byte类型和string类型需要互相转换的场景并不少见,直接的想法是像下面这样进...
    99+
    2024-04-02
  • C++BoostAtomic详细讲解
    目录一、说明二、示例和代码一、说明 Boost.Atomic 提供类 boost::atomic,可用于创建原子变量。它们被称为原子变量,因为所有访问都是原子的。 Boost.Ato...
    99+
    2022-11-21
    C++ Boost Atomic C++ Atomic
  • AndroidSwipeRefreshLayout超详细讲解
    目录1. 控件说明2. API介绍3. 使用方法3.1 布局文件3.2 界面代码4. 注意事项1. 控件说明 SwipeRefreshLayout是google官方推荐使用的下拉刷新...
    99+
    2022-11-13
    Android SwipeRefreshLayout Android SwipeRefreshLayout控件
  • AndroidLayerDrawable超详细讲解
    目录1. 前言2. 实例1. 前言 Android LayerDrawble 包含一个Drawable数组,系统将会按照这些Drawable对象的数组顺序来绘制他们,索引最大的 Dr...
    99+
    2022-11-13
    Android LayerDrawable Android LayerDrawable原理
  • SpringCloudNetflixRibbon超详细讲解
    目录一、Ribbon简介1、什么是Ribbon2、Ribbon能干什么二、使用Ribbon1、客户端导入依赖2、application.yml配置3、Controller配置4、Co...
    99+
    2022-11-13
    SpringCloud Netflix Ribbon SpringCloud Ribbon
  • Spring详细讲解@Autowired注解
    目录java注解spring注解(1)配置文件形式(2)注解形式@Autowired的解析@Autowired的生效流程java注解 在解释spring的注解之前,先了解一下什么是j...
    99+
    2024-04-02
  • Java 枚举详细讲解
    目录 什么是枚举? 如何使用Java枚举? 如何使用Java枚举中的常量值? 如何在Java枚举中添加方法? 什么是枚举? 枚举是一种特殊的数据类型,用于定义具有固定个数的常量集。它可以帮助我们更好地管理常量,使代码更易于阅读和维护。 ...
    99+
    2023-09-01
    java 开发语言 javase 面向对象 枚举
  • SSM框架详细讲解
    SSM框架 文章目录 SSM框架(白痴都看完都会)介绍SSM框架一、什么是SSM框架? 1.Spring2.Spring MVC3.Mybatis (核心是SqlSession)二、代码实战 1.创建配置工程2.代码实战(查询记录数...
    99+
    2023-09-01
    mybatis spring java
  • Spring和SpringMvc详细讲解
      🏆今日学习目标: 🍀Spring和SpringMvc详细讲解 ✅创作者:林在闪闪发光 ⏰预计时间:30分钟 🎉个人主页:林在闪闪发光的个人主页  🍁林在闪闪发光的...
    99+
    2023-10-25
    spring java
  • C++BoostUuid超详细讲解
    目录一、说明二、Boost.Uuid库示例和代码一、说明 Boost.Uuid 为 UUID 提供生成器。 UUID 是不依赖于中央协调实例的通用唯一标识符。例如,没有数据库存储所有...
    99+
    2022-12-08
    C++ Boost Uuid C++ Uuid标识符
  • C++BoostUtility超详细讲解
    目录一、说明二、Boost.Utility库示例和代码一、说明 Boost.Utility 库是杂项、有用的类和函数的集合,它们太小而无法在独立库中维护。虽然实用程序很小并且可以快速...
    99+
    2022-12-08
    C++ Boost Utility C++ Utility库
  • AndroidIntent通信详细讲解
    目录IntentIntnet 种类Intent FilterIntent 将Activity 、Serivce 、 BroadReceive 之间通信 使用Intent Intent...
    99+
    2022-12-17
    Android Intent通信 Android Intent
  • SpringCloud Feign超详细讲解
    目录一、什么是Feign二、Feign能干什么三、Feign的使用步骤1、新建一个module2、配置Pom.xml3、配置applicatin.yaml4、配置configBean...
    99+
    2022-11-13
    SpringCloud Feign原理 SpringCloud Feign使用
  • PHP7安装OAuth2扩展的详细步骤
    在PHP开发中,OAuth2是一种常用的授权框架,用于实现用户认证和授权。安装OAuth2扩展可以简化开发过程并提高安全性。本文将详细介绍如何在PHP7中安装OAuth2扩展,并提供具...
    99+
    2024-04-02
  • SpringBoot超详细讲解@Value注解
    目录一、非配置文件注入1、注入普通字符串2、注入JAVA系统变量3、注入表达式4、注入其他Bean属性5、注入文件资源6、注入URL资源二、通过配置文件注入1、注入普通字符串2、注入...
    99+
    2024-04-02
  • Python爬虫超详细讲解
    本篇文章给大家带来了关于Python的相关知识,其中主要整理了爬虫的相关问题,网络爬虫(又被称为网页蜘蛛,网络机器人)就是模拟浏览器发送网络请求,接收请求响应,一种按照一定的规则,自动地抓取互联网信息的程序,下面一起来看一下,希望对大家有帮...
    99+
    2022-07-14
    python
  • mysql中my.cnf的详细讲解
    这篇文章主要讲解了“mysql中my.cnf的详细讲解”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“mysql中my.cnf的详细讲解”吧!#*** cli...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作