博客
关于我
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/

    你可能感兴趣的文章
    openlayers 入门教程(五):sources 篇
    查看>>
    openlayers 入门教程(八):Geoms 篇
    查看>>
    openlayers 入门教程(六):controls 篇
    查看>>
    openlayers 入门教程(十一):Formats 篇
    查看>>
    openlayers 入门教程(十三):动画
    查看>>
    openlayers 入门教程(十二):定位与轨迹
    查看>>
    openlayers 入门教程(十五):与 canvas、echart,turf 等交互
    查看>>
    openlayers 入门教程(十四):第三方插件
    查看>>
    openlayers 入门教程(四):layers 篇
    查看>>
    OpenLayers 项目分析(三)-OpenLayers中定制JavaScript内置类
    查看>>
    Openlayers下载与加载geoserver的wms服务显示地图
    查看>>
    Openlayers中使用Cluster+Overlay实现点击单个要素和聚合要素时显示不同弹窗
    查看>>
    Openlayers中使用Cluster实现点位元素重合时动态聚合与取消聚合
    查看>>
    Openlayers中使用Cluster实现缩放地图时图层聚合与取消聚合
    查看>>
    Openlayers中使用Image的rotation实现车辆定位导航带转角(判断车辆图片旋转角度)
    查看>>
    Openlayers中使用Overlay实现点击要素弹窗并且弹窗随之移动
    查看>>
    Vmware系列&虚拟机系列【仅供参考】:使用vCenter Auto Deploy制作ESXI系统封装(适合高版本vSphere)
    查看>>
    Openlayers中加载GeoJson文件显示地图
    查看>>
    Openlayers中加载Geoserver切割的EPSG:900913离线瓦片图层组
    查看>>
    Openlayers中加载Geoserver切割的EPSG:900913离线瓦片地图并显示
    查看>>