IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> 深入理解OAuth 2.0 -> 正文阅读

[Java知识库]深入理解OAuth 2.0

目录

一?OAuth 2.0 是什么

二 为什么用?OAuth 2.0

三?OAuth 2.0?四种授权流程

3.1?授权码模式

3.2 密码模式

3.3?客户端模式

3.4 简化模式

四 授权码模式详解

4.1 授权页面

4.2?code 生成

4.3?token 签发

五?授权码模式安全建设

5.1?业务安全

5.2 传输安全


一?OAuth 2.0 是什么

OAuth 2.0 是一种授权协议。

二 为什么用?OAuth 2.0

OAuth 2.0 这种授权协议,能保证第三方软件只有在获得授权之后,才可以进一步访问授权者的数据,能保证授权者数据的安全性。

三?OAuth 2.0?四种授权流程

在 OAuth 2.0 的体系里面有 4 种角色,它们分别是资源拥有者、客户端、授权服务和受保护资源。

为了详细的讲解四种授权流程,以产品 A 集成产品 B 进行授权登录为例,来具体说明四种授权流程和应用场景。

3.1?授权码模式

1 用户访问产品 A,产品 A 上集成了产品 B 作为第三方授权登录,引导用户跳转到授权页面。

2 用户点击授权后,产品 A 就可以访问用户在产品 B 的资源了。

应用场景:授权码模式是 OAuth 2.0 体系中迄今流程最完备、安全性最高的授权流程。目前主流的授权模式都是使用该流程。

3.2 密码模式

1 用户使用产品 B 的用户名和密码来登录产品 A。

2 产品 A 通过用户名和密码访问 B 开放平台授权服务来获取 access_token。

3 B 开放平台授权服务生成 access_token,返回给产品 A。

4 产品 A 获取到 access_token 之后就可以访问用户在 B 产品上的受保护资源。

应用场景:如果说产品 A 和产品 B 都属于同一家公司的官方出品,那么可以使用密码模式。

3.3?客户端模式

0 A 产品在 B 开放平台注册生成 client_id、client_secret。

1?A 产品通过?client_id、client_secret?向 B 开放平台授权获取 access_token。

2 B 开放平台授权服务向 A 产品返回 access_token。

3 A 产品通过 access_token 访问 B 开放平台受保护资源。

应用场景:如果说 A 产品访问的是 B 平台的开放资源,且该资源不属于任何一个第三方用户,那可以直接使用客户端模式。

3.4 简化模式

1 用户访问 A 产品,直接向 B 开放平台授权服务获取 access_token。

2 B 开放平台授权服务向用户返回 access_token。

3 用户通过 access_token 访问 B 开放平台受保护资源服务。

应用场景:

嵌入到浏览器端的应用且没有服务端,那就只能选择简化模式。

四 授权码模式详解

授权码模式主要有三个核心流程:授权页面、code 生成、token 签发。

4.1 授权页面

用户访问产品 A,A 产品引导用户用产品 B 进行授权,B 开放平台会对 A 客户端进行合法性校验、同时也需要对产品 B 的登录态进行验证,返回授权列表信息给用户。

4.2?code 生成

授权页面生成之后,用户点击授权,B 开放平台会对 A 客户端进行合法性校验、同时也需要对产品 B 的登录态进行验证,生成 code,返回给 A 客户端。

4.3?token 签发

A 客户端将 code 给到 A 服务端,A 服务端通过 code、client_id、client_secret 向 B 开放平台请求获取 access_token、refresh_token。B 开放平台验证 code、client_id、client_secret 的合法性,进行 token 签发。token 生成可以使用 JWT。

JWT 实现 token 认证_新猿一马的博客-CSDN博客目录一 什么是 JWT二 JWT 适用场景2.1 认证2.2 信息交换三 几种认证方式3.1 session 认证3.2 token 认证四 JWT 的数据结构4.1 header4.2 playload4.3 signature4.4 总结五 JWT 的使用方式六 JWT的优点七 JWT的使用注意八 JWT 等待解决的问题九 参...https://blog.csdn.net/jack1liu/article/details/92131519

五?授权码模式安全建设

5.1?业务安全

A?授权码 code 必须设置有效期,且只能使用一次。

B 页面进行重定向的时候需要对 URI 做安全校验。

C token 必须是有有效期的,access_token 有效期较短,refresh_token 有效期较长。access_token 过期后,refresh_token 进行续约,重新签发 access_token,此时 refresh_token 也需要更新。如果 refresh_token 也过期了,需要用户重新授权。

D 如果用户修改了账号密码或者对账号进行了注销,token 应该都失效。

5.2 传输安全

使用 HTTPS 协议进行通信保护传输数据的安全性。

  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2022-05-04 07:25:22  更:2022-05-04 07:25:25 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 1:19:23-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码