| |
|
开发:
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.0OAuth 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。 五?授权码模式安全建设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 协议进行通信保护传输数据的安全性。 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
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- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |