了解OAuth2令牌认证

1.简介

在本教程中,我们将了解OAuth2令牌身份验证 ,以便只有经过身份验证的用户和应用程序才能获得有效的访问令牌,该令牌随后可用于访问服务器上的授权API(在OAuth术语中仅是受保护的资源)。

使用基于令牌的身份验证,通过与服务器的每次交互共享有效的访问令牌,用户/应用程序可以在特定时间段内访问受保护的资源。

2.令牌认证中涉及的事件

使用令牌身份验证,所涉及的事件已在下图中清晰地描述了–

  1. 客户端应用程序首先从用户(资源所有者)请求授权授权,因为我们经常会看到弹出授权或拒绝访问其他应用程序数据的授权弹出窗口。 例如,Goibibo要求从您的Facebook帐户访问朋友。
  2. 一旦用户通过在弹出窗口中单击“授权”进行授权 ,客户端应用程序(Goibibo)就会收到授权授权。
  3. 然后,客户端应用程序(Goibibo)向授权服务器(Facebook)请求访问令牌以及其自身的身份和在上一步中收到的授权授权。
  4. 如果客户端应用程序已通过身份验证,并且发现授权授予有效,则授权服务器(由Facebook)提供/向客户端应用程序(Goibibo)发出访问令牌。
  5. 然后,客户端应用程序(Goibibo)通过随后将访问令牌传递给资源服务器(由Facebook)来访问受保护的资源(facebook应用程序中的朋友),直到令牌在指定的时间段后过期。

3. OAuth2角色

以下列出了OAuth实现中的委托角色–

    1. 资源所有者 –能够授予对受保护资源访问权限的实体。 如果您登录Goibibo,并且希望通过您的Facebook帐户访问朋友,则您是资源所有者,需要提供授权授权。
    2. 资源服务器 –托管受保护资源的服务器(Facebook),可以使用访问令牌接受和响应受保护资源的请求。 这意味着朋友列表是服务器(Facebook)上托管的资源之一,可供其他第三方应用程序(Goibibo)访问。
    3. 客户端 –代表资源所有者(用户)并获得其授权的受保护资源请求的应用程序(Goibibo)。 我们将所有此类授权授予定义为上下文–
    4. 这意味着Gobibo作为客户端应用程序可以访问资源服务器(Facebook)上的管理好友列表。
    5. 授权服务器 –根据资源所有者(用户)接收到的客户端应用程序的身份和授权授予,向客户端应用程序提供访问令牌的服务器

4.授权补助

OAuth2提供四种类型的授权授予-

4.1授权码

  • 在服务器端应用程序中使用,因此维护了双方的隐私。
  • 最常见的。
  • 基于重定向的流。
  • 用户授权请求通过用户代理(Web浏览器)路由,并且客户端应用程序必须具有足够的能力与用户代理进行交互,并从另一端的授权服务器接收授权代码。

4.2隐式

  • 有点类似于授权码授予类型。
  • 更常用于移动应用程序和Web应用程序。
  • 在客户端,由于授权代码在移交给客户端应用程序之前与用户代理一起存储在本地,因此存在隐私风险。 这可以公开给用户设备上的其他应用程序。
  • 不支持刷新令牌。

4.3资源所有者密码凭证

  • 在受信任的应用程序之间使用。
  • 用户(资源所有者)直接与客户端应用程序共享凭据,客户端应用程序在成功验证用户凭据并进一步授权用户访问服务器上的有限资源后,请求授权服务器返回访问令牌。
  • 这是我们将用于演示应用程序的授权授予类型。

4.4客户凭证

  • 当应用程序需要访问其自己的服务帐户段时使用,只有在该服务帐户段的控制下它才能获取资源。
  • 因此,同一应用程序可能还有其他受信任的机密客户端,它们拥有自己的应用程序个人服务帐户,并可能在其控制下拥有不同的受保护资源。
  • 应用程序通过将其凭据,客户端ID和客户端密钥发送到授权服务器来请求访问令牌。

5.令牌存储

涉及的另一个重要组件是令牌存储,它定义了如何存储生成的令牌。 默认存储是内存中的实现 ,但是也可以使用其他一些实现,可以根据需要使用它们–

  1. InMemoryTokenStore –令牌存储在服务器内存中,因此存在授权服务器重新启动时丢失令牌的风险。
  2. JwtTokenStore –所有授权和访问授权数据都被编码到令牌本身中,并且此类令牌不会在任何地方持久化。 此类令牌使用解码器进行即时验证,并且依赖于JwtAccessTokenConverter
  3. JdbcTokenStore –令牌数据存储在关系数据库中。 使用此令牌存储,可以安全地重新启动授权服务器。 令牌也可以在服务器之间轻松共享,并且可以被吊销。 注意,要使用JdbcTokenStore,我们将在类路径中需要“ spring-jdbc”依赖项。

6.刷新令牌流

一旦访问令牌在设计的时间段(根据下面的示例为119)后过期,我们可以使用refresh token重新生成一个新的有效访问令牌 。 发出原始访问令牌时会附带刷新令牌,如下所示–

{  "access_token":"04f12761-501b-415b-8941-52bce532ce60","token_type":"bearer","refresh_token":"fc348b4f-de62-4523-b808-9935b1f2e46f","expires_in":119
}

单击此处导航到官方OAuth2文档

翻译自: https://www.javacodegeeks.com/2017/09/understanding-oauth2-token-authentication.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/348957.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java 9:好的,坏的和私有的接口方法

Java 9 是在几周前发布的。 查看发行说明 ,其中包含许多有趣的功能。 不过,我觉得并非一切都是不如甲骨文和Java行家似乎图片吧 。 我看到了Java世界中的三个趋势,分别是好,坏和丑陋。 让我们从好的开始。 Birdman(20…

PagingAndSortingRepository –如何与Thymeleaf一起使用

在本教程中&#xff0c;我将演示如何通过分页显示Thymeleaf中的企业客户列表。 1 –项目结构 我们有一个正常的Maven项目结构。 2 –项目依赖性 除了正常的Spring依赖关系之外&#xff0c;我们还添加Thymeleaf和hsqldb&#xff0c;因为我们使用的是嵌入式数据库。 <?x…

matlab里方差分析的盒子图怎么看,Matlab方差分析

Matlab 方差分析(T检验)在工农业生产和科学研究中,经常遇到这样的问题:影响产品产量、质量的因素很多,我们需要了解在这众多的因素中,哪些因素对影响产品产量、质量有显著影响.为此,要先做试验,然后对测试的结果进行分析.方差分析就是分析测试结果的一种方法.在方差分析中,把在…

使用Okta的单点登录保护您的Vert.x服务器

“我喜欢编写身份验证和授权代码。” 〜从来没有Java开发人员。 厌倦了一次又一次地建立相同的登录屏幕&#xff1f; 尝试使用Okta API进行托管身份验证&#xff0c;授权和多因素身份验证。 Vert.x是Spring生态系统中增长最快的元素之一&#xff0c;保护Vert.x服务器可能是一个…

Apache Kafka简介

什么是Apache Kafka&#xff1f; Apache Kafka是一个分布式流系统&#xff0c;具有发布和订阅记录流的功能。 在另一方面&#xff0c;它是企业消息传递系统。 它是一个快速&#xff0c;水平可扩展和容错的系统。 Kafka有四个核心API&#xff0c; 生产者API&#xff1a; 该API允…

oracle查看存储过程最近编译,Oracle恢复被误编译覆盖的存储过程

同事在写Oracle存储过程时候&#xff0c;是在以前已经写好的过程基础上修改的&#xff0c;想换个名字&#xff0c;由于疏忽没有改名字就编译了&#xff0c;编译完才意识到。这时原来的那个已经没有了。找我想办法恢复回原来的那个过程。通过查资料想到个方法&#xff0c;也不知…

oracle安装 redo log file,Oracle Dump Redo Log File 说明

关于Dump redo log 的示例&#xff0c;MOS 上的文档&#xff1a;[ID 1031381.6] 有详细说明。Dump 有两种方式&#xff1a;(1)使用一. dump redo 说明关于Dump redo log 的示例&#xff0c;MOS 上的文档&#xff1a;[ID 1031381.6] 有详细说明。Dump 有两种方式&#xff1a;(1)…

unity 飞机 残骸模型_训练残骸模式– Java 8中的改进实现

unity 飞机 残骸模型Venkat Subramaniam在今天的演讲中提到了有关“级联方法”模式或“火车残骸”模式的内容&#xff0c;如下所示&#xff1a; >someObject.method1().method2().method3().finalResult()很少有人会将此与构建器模式相关联&#xff0c;但事实并非如此。 无…

datastage配置oracle,IBM Datastage8.5配置问题

大家好&#xff0c;最近因学习需要&#xff0c;在虚拟机REHL5.5上安装了IBM Datastage8.5的服务器端&#xff0c;在windows端安装客户端&#xff0c;调试连接时&#xff0c;提示密码不正确&#xff0c;我修改了密码&#xff0c;重启了服务器&#xff0c;还是提示密码不正确&…

使用Spring @Transactional进行数据源路由

卡尔帕帕&#xff08;Carl Papa&#xff09;在Spring框架中使用方面来确定要使用的DataSource &#xff08;读写或只读&#xff09;启发了我。 所以&#xff0c;我正在写这篇文章。 我必须承认&#xff0c;我对Spring的AbstractRoutingDataSource早已熟悉。 但是我不知道在哪里…

linux设置新硬盘权限,Linux 下挂载新硬盘以及更改为普通权限

1、启动终端&#xff0c;以root用户登录2、查看硬盘信息&#xff1a;#fdisk -l3、进入磁盘&#xff0c;对磁盘进行分区&#xff1a;#fdisk /dev/sda(注意看你要挂载哪一个磁盘&#xff0c;我的是sda&#xff0c;有的是sdb)4、格式化分区&#xff1a;#mkfs.ext3 /dev/sda1 //注&…

使用Payara Micro的Easy Java EE Microservices

想知道如何开始使用Java EE Microservices&#xff1f; 使用Java EE API只需很少的步骤即可部署微服务。 许多人认为Java EE无法与微服务一起使用&#xff0c;但事实并非如此……特别是如果您仅使用服务所需的Java EE规范。 在这篇简短的文章中&#xff0c;我将演示如何使用Jav…

linux终端lex程序运行,lex的简单使用

Lex & Flex 简介Lex是lexical compiler的缩写&#xff0c;是Unix环境下非常著名的工具&#xff0c; Lex (最早是埃里克施密特和 Mike Lesk 制作)是许多 UNIX 系统的标准词法分析器(lexical analyzer)产生程式&#xff0c;而且这个工具所作的行为被详列为 POSIX 标准的一部分…

Linux内存page,Linux虚拟内存管理 - Page Table的作用

虚拟内存的作用&#xff1a;1.扩展实际有限的物理内存&#xff0c;当然这种扩展是虚拟的&#xff0c;比如物理内存512M&#xff0c;对于一个需要1G空间的进程来说&#xff0c;照样可以运行。这增加了操作系统是应用范围。2.使得进程中的数据空间增大&#xff0c;增大到多少与硬…

openoffice+linux+jodconverter+乱码,OpenOffice安装和转换乱码解决方案

前言&#xff1a;OpenOffice项目中用途&#xff1a;word转换pdfWindows安装、转换&#xff1a;安装包下载后一路OK就可以正常安装&#xff0c;转换没有问题Linux安装、转换&#xff1a;安装有分DEB包和RPM包&#xff0c;下面会说明各自安装方法在en_US.UTF-8 系统环境下会出现乱…

junit 参数化测试用例_JUnit:在参数化测试中命名单个测试用例

junit 参数化测试用例几年前&#xff0c;我写了有关JUnit参数化测试的文章 。 我不喜欢它们的一件事是JUnit使用数字命名了单个测试用例&#xff0c;因此&#xff0c;如果它们失败&#xff0c;您将不知道是哪个测试参数导致了失败。 以下Eclipse屏幕快照将向您展示我的意思&…

MX250和第三方Linux版区别,MX250和MX350哪个好一点,区别和差距在哪里?求推荐?_科技数码通...

MX350系列显卡使笔记本颜值变得更高&#xff0c;性能更强&#xff0c;更轻便&#xff0c;在轻便笔记本需求变得越来越大&#xff0c;但性能也要求越来越高&#xff0c;特别是在图像处理方面&#xff0c;这个时候MX系列的显卡便应运而生&#xff0c;其拥有者超低的功耗&#xff…

linux r包默认安装位置,R-Language(R语言或称r-project)的安装

1、R语言的简介R语言(r-project)是主要用于统计分析、绘图的语言和操作环境。2、配置yum源2.1、安装说明由于编译安装相对繁琐&#xff0c;故而安装使用repoforge的源解决&#xff0c;免去编译的麻烦。注意&#xff1a;请根据实际的系统OS版本选取合适的YUM源。2.3、rpmforge源…

aws s3 命令行_通过命令行界面使用AWS ElasticMapReduce

aws s3 命令行在本文中&#xff0c;我将通过使用EMR的CLI使用AWS MapReduce服务&#xff08;称为ElasticMapReduce &#xff09;。 使用EMR的过程可以大致分为三个步骤&#xff1a; 设置并填充S3存储桶 创建并运行EMR作业 从S3存储桶中获取结果 在开始这三个高级步骤之前&…

在5分钟内将Spring Boot作为Windows服务启动

最近&#xff0c;我不得不将Spring Boot应用程序部署为Windows服务&#xff0c;并且对使用winsw如此容易感到惊讶。 我之前曾写过关于使用procrun – Java程序作为Windows服务的文章 &#xff0c;但是winsw更加容易 入门 Spring Boot文档的第59节是有关安装Spring Boot应用程序…