博客
关于我
OAuth2图解
阅读量:186 次
发布时间:2019-02-28

本文共 1506 字,大约阅读时间需要 5 分钟。

OAuth2解决什么问题

OAuth2是一种用于开放系统间授权的协议,旨在解决以下核心问题:

1. 开放系统间的授权

照片拥有者希望在云冲印服务上打印照片,而云冲印服务需要访问云存储服务上的资源。这种场景需要一种安全的方式来允许云冲印服务在拥有者允许的情况下访问其资源。


2. 图例说明

  • 资源拥有者:照片的所有者。
  • 客户应用:如云冲印服务。
  • 受保护资源:照片。

3. 早期的解决方案:用户名密码复制

传统的方法是将云存储服务的用户名和密码直接暴露给云冲印服务。这种做法存在以下问题:

  • 安全性低:云冲印服务会永久保存用户密码,存在被滥用或泄露的风险。
  • 灵活性不足:用户无法限制云冲印服务获取资源的范围和有效期。
  • 依赖密码安全:单纯的密码登录并不能完全保障安全。
  • 影响其他服务:一旦用户更改密码,所有依赖此密码的第三方应用都会失效。
  • 潜在风险:第三方应用被破解时,可能导致用户密码泄露和数据安全问题。

这种方法仅适用于同一公司内部的多个系统,但不适用于不受信的第三方应用。


4. OAuth2的通用开发者密钥

另一种方法是使用预先约定的密钥(Development Key),主要用于合作伙伴或业务部门间的授权。这种方式适用于特定的业务场景,但并未完全解决通用授权的需求。


5. OAuth2的令牌机制

OAuth2通过颁发令牌(Token)来实现安全的资源访问。核心流程包括:

  • 申请令牌:客户应用请求令牌。
  • 颁发令牌:授权服务器审核请求后颁发令牌。
  • 令牌管理:包括令牌的生命周期管理、权限范围的定义以及令牌的吊销机制。

OAuth2简介

OAuth2(RFC 6749)是OAuth授权框架的最新版本,主要目标是标准化资源授权流程。其核心角色包括:

1. OAuth的主要角色

  • 授权服务器(Authorization Server):负责颁发和验证令牌。
  • 资源拥有者(Resource Owner):资源的原始所有者。
  • 客户应用(Client):请求资源的应用程序。
  • 资源服务器(Resource Server):存储和保护资源的服务器。

2. OAuth2的最简向导

OAuth2领域的专家川崎高彦开发了“OAuth2 as Service”服务,并撰写了《OAuth2最简向导》用于向投资人解释 OAuth2 的核心概念。该文章简明扼要地介绍了 OAuth2 的主要特点和应用场景。


OAuth2的应用

1. 微服务安全

在微服务架构下,系统和设备的多样化使得传统的用户名密码登录方式难以适用。OAuth2通过颁发令牌,提供了一种基于 token 的安全登录方式,解决了传统方法在复杂场景下的不足。

2. 社交登录

OAuth2也可以用于社交登录,例如通过微信、QQ等第三方账号登录目标应用。这种方式提升了用户体验,同时降低了账号泄露的风险。


OAuth2.0核心图解

1. OAuth2.0授权框架(RFC 6749)

OAuth2.0的核心流程包括以下几个步骤:

  • 客户应用授权服务器提出资源请求。
  • 授权服务器验证客户应用的身份,并决定是否授予访问权限。
  • 授权服务器向客户应用颁发一个访问令牌(Access Token),用于标识客户应用。
  • 客户应用使用访问令牌向资源服务器请求资源。
  • 资源服务器验证令牌的有效性,并允许访问资源。
  • 令牌的终结:资源服务器验证完成后,会将令牌终结,防止多次使用。
  • 2. 访问令牌的校验

    资源服务器必须具备验证访问令牌的能力,以确保只有合法的客户应用可以访问受保护资源。


    通过以上机制,OAuth2 不仅解决了资源共享的安全性问题,还为现代应用提供了一种灵活且安全的授权方式。

    转载地址:http://reqj.baihongyu.com/

    你可能感兴趣的文章
    npm install无法生成node_modules的解决方法
    查看>>
    npm install的--save和--save-dev使用说明
    查看>>
    npm node pm2相关问题
    查看>>
    npm run build 失败Compiler server unexpectedly exited with code: null and signal: SIGBUS
    查看>>
    npm run build报Cannot find module错误的解决方法
    查看>>
    npm run build部署到云服务器中的Nginx(图文配置)
    查看>>
    npm run dev 报错PS ‘vite‘ 不是内部或外部命令,也不是可运行的程序或批处理文件。
    查看>>
    npm scripts 使用指南
    查看>>
    npm should be run outside of the node repl, in your normal shell
    查看>>
    npm start运行了什么
    查看>>
    npm WARN deprecated core-js@2.6.12 core-js@<3.3 is no longer maintained and not recommended for usa
    查看>>
    npm 下载依赖慢的解决方案(亲测有效)
    查看>>
    npm 安装依赖过程中报错:Error: Can‘t find Python executable “python“, you can set the PYTHON env variable
    查看>>
    npm.taobao.org 淘宝 npm 镜像证书过期?这样解决!
    查看>>
    npm—小记
    查看>>
    npm介绍以及常用命令
    查看>>
    NPM使用前设置和升级
    查看>>
    npm入门,这篇就够了
    查看>>
    npm切换到淘宝源
    查看>>
    npm切换源淘宝源的两种方法
    查看>>