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

oauth2令牌刷新

oauth2令牌刷新_了解OAuth2令牌认证相关推荐

  1. OAuth2.0系列之使用JWT令牌实践教程(八)

    OAuth2.0系列之使用JWT令牌实践教程(八) 1.文章前言介绍 2.例子实验验证 3.功能简单测试 OAuth2.0系列博客: OAuth2.0系列之基本概念和运作流程(一) OAuth2.0系 ...

  2. 认证令牌_Java应用程序的令牌认证

    认证令牌 建筑物身份管理,包括身份验证和授权? 尝试Stormpath! 我们的REST API和强大的Java SDK支持可以消除您的安全风险,并且可以在几分钟内实现. 注册 ,再也不会建立auth ...

  3. 搭建认证服务器 - Spring Security Oauth2.0 集成 Jwt 之 【密码认证流程】 总结

    在搭建介绍流程之前,确保您已经搭建了一个 Eureka 注册中心,因为没有注册中心的话会报错(也有可能我搭建的认证服务器是我项目的一个子模块的原因):Request execution error. ...

  4. vue12Jwt详解+JWT组成+JWT的验证过程+JWT令牌刷新思路+代码

    目录 1. JWT是什么 2. 为什么使用JWT 3. JWT的工作原理: 4. JWT组成 JWT结构原理图: JWT实际结构: 4.1 Header 4.2 Payload(负荷) 4.3 sig ...

  5. java令牌化_令牌化如何工作?

    java令牌化 by Albert Ho 由何俊仁 令牌化如何工作? (How does tokenization work, anyway?) 并非所有内容都会被标记化,但可能会被标记化. (Not ...

  6. 信号量与令牌桶_限流的4种方式令牌桶实战

    限流的4种方式 正文 限流 限流是对某一时间窗口内的请求数进行限制,保持系统的可用性和稳定性,防止因流量暴增而导致的系统运行缓慢或宕机.常用的限流算法有令牌桶和和漏桶,而Google开源项目Guava ...

  7. java令牌桶_简单分析Guava中RateLimiter中的令牌桶算法的实现

    令牌桶算法是网络流量整形(Traffic Shaping)和速率限制(Rate Limiting)中最常使用的一种算法.典型情况下,令牌桶算法用来控制发送到网络上的数据的数目,并允许突发数据的发送. ...

  8. oauth2.0 php简化模式,OAuth2.0学习(1-5)授权方式2-简化模式(implicit grant type)

    授权方式2-简化模式(implicit grant type) 简化模式(implicit grant type)不通过第三方应用程序的服务器,直接在浏览器中向认证服务器申请令牌,跳过了"授 ...

  9. oauth2 单点登录_Spring Security Oauth2和Spring Boot实现单点登录

    最近在学习单点登录相关,调查了一下目前流行的单点登录解决方案:cas 和 oauth2,文章主要介绍oauth2 单点登录.希望这篇文章能帮助大家学习相关内容. 我们将使用两个单独的应用程序: 授权服 ...

最新文章

  1. 微信小程序中的tabBar设置
  2. 一起谈.NET技术,asp.net控件开发基础(20)
  3. FPGA实验——译码器原理及实现
  4. RabbitMQ(五):Exchange交换器--topic
  5. python怎样遍历列表中数字_关于Python列表的遍历和数字列表
  6. SAP Leonardo平台机器学习API的一些错误处理机制
  7. anaconda创建新环境_【创建社会主义新农村】怀城街道:转变整治理念 农村人居环境换新颜...
  8. vscode:设置语言为中文
  9. mysql的sql语句where,SQL之WHERE语句
  10. S7-1500系统内使用ET200S 1SI模块实现Modbus 从站通信
  11. 手把手教你DosBox的配置(附下载资源)
  12. h3c服务器怎么更换无线密码,如何更换无线网密码_怎么更换无线网密码?-192路由网...
  13. 怎么把linux装入移动硬盘,把Ubuntu装进你的移动硬盘中
  14. 压缩文件中文件名乱码问题
  15. 樊胜美有可能跑到与安迪一样的终点…
  16. 智能化里面计算机网络设计思路,智能化设计思路.doc
  17. FusionCharts简单教程(一)---建立第一个FusionCharts图形
  18. Python入门到精通(4):关系与逻辑表达式
  19. 免费的DNS服务OpenDNS、Google Public DNS
  20. 笔记本按开机键电源灯不亮

热门文章

  1. 互达的集合(线段树)
  2. [LOJ 6042]「雅礼集训 2017 Day7」跳蚤王国的宰相(树的重心+贪心)
  3. 2021 NOI游记
  4. 理解至上:数位dp(ybtoj-B数计数)
  5. bzoj#4722-由乃【倍增,抽屉原理,bitset】
  6. 牛客练习赛69D-火柴排队【dp】
  7. jzoj1764-游戏【dp,dfs】
  8. Mybatis生成器插件扩展,生成OR操作
  9. 全文搜索!收藏这篇Solr ElasticSearch 长文就可以搞定
  10. 汇编语言(二十九)之数值的二进制和十进制