oauth2.0在监控宝项目中的应用一例

云智慧(北京)科技有限公司邓超

说起oauth2.0,我相信很多人对其已经非常熟悉,并且已经应用在很多开放平台上,如新浪微博开放平台,腾讯微博开放平台等;下面我将我个人对于Oauth2的理解以及Oauth2在监控宝开放平台上的是如何运用的做一下简单的阐述,有说的不到位的地方还望指点。

一、什么是Oauth2.0

官方定义:

OAuth(开放授权)是一个开放标准,允许用户让第三方应用访问该用户在某一网站上存储的私密的资源,而无需将用户名和密码提供给第三方应用。

OAuth允许用户提供一个令牌,而不是用户名和密码来访问他们存放在特定服务提供者的数据。每一个令牌授权一个特定的网站在特定的时段内访问特定的资源。这样,OAuth让用户可以授权第三方网站访问他们存储在另外服务提供者的某些特定信息,而非所有内容。

OAuth 2.0是OAuth协议的下一版本,但不向下兼容OAuth 1.0。OAuth 2.0关注客户端开发者的简易性,同时为Web应用,桌面应用和手机,和起居室设备提供专门的认证流程。

个人理解:

Oauth2.0就是一个互联网标准协议(基于https) ,可以让用户来实现跨平台数据共享。

比如有2个平台A和B,在A平台上有一些数据资源,现在B平台想拿到A平台上的某些数据资源,如果此时A平台支持Oauth2协议,那么B平台就可以通过协议向A平台请求相应的数据资源应用的B平台上。

二、Oauth的认证过程

OAuth在"客户端"与"资源服务端"之间,设置了一个授权层(authorization layer)。其过程如图(来自RFC 6749 ):

(A)“客户端”向“资源所属者”发出授权请求

(B)“资源所属者”同意给“客户端”授权

(C)“客户端”获得授权后向“认证服务端”请求令牌

(D)“认证服务端”向“客户端”发放令牌(Access Token)

(E)“客户端”通过令牌向“资源服务端”请求资源

(F)“资源服务端”确认令牌无误,向“客户端”发放资源

从以上步骤可以看出,“客户端”想拿到资源,关键点在于“资源所属者”的授权,只有拿到了授权,才可以进行接下来的步骤。

三、Oauth2.0的授权模式

OAuth 2.0定义了四种授权方式:

§ A、授权码模式(authorization code)

授权码模式(authorization code)的特点就是通过客户端的后台服务器,与"服务提供商"的认证服务器进行互动。

§ B、简化模式(implicit)

简化模式(implicit grant type)不通过第三方应用程序的服务器,直接在      浏览器中向认证服务器申请令牌,跳过了"授权码"这个步骤。所有步骤在浏览器中       完成,令牌对访问者是可见的,且客户端不需要认证。

§ C、密码模式(resource owner passwordcredentials)

密码模式(Resource Owner Password Credentials Grant)中,用户向      客户端提供自己的用户名和密码。客户端使用这些信息,向"服务商提供商"索要授       权。

§ D、客户端模式(client credentials

客户端模式(Client Credentials Grant)指客户端以自己的名义,而不是      以用户的名义,向"服务提供商"进行认证。

四、Oauth2在监控宝API平台上的运用

§ 目前监控宝的API平台只对监控宝企业用户开发,而不对所有监控宝用户开发。基于这种情况,Oauth的密码授权模式比较适合(注:通过账号和密码,平台就可以认证是否为监控宝企业用户,从而来判断是否给予授权),所以我们果断采用了这种授权方式。

监控宝API平台简化了授权过程,平台将每一个企业账号当做一个客户端,并自动为其生成一个唯一的授权标识,所以每一个客户端可以直接向平台认证服务端请求令牌,然后通过令牌向平台资源服务端请求资源。如图(监控宝API平台认证过程):

关于监控宝API平台请具体参考:

http://www.jiankongbao.com/common/api_interface

关于作者:

邓超,云智慧软件开发工程师,2010年毕业于秦皇岛燕山大学,2012年初加入云智慧(北京)科技有限公司。目前主要负责监控宝产品架构的优化与研发。

时间: 2024-10-29 19:05:39

oauth2.0在监控宝项目中的应用一例的相关文章

主攻ASP.NET.4.5.1 MVC5.0之重生:在项目中使用zTree jQuery 树插件

效果图和json格式 Controllers代码 using HR.Models; using HR.Models.Repository; /************************************************************************************ * 命名空间:HR.Controllers * Controller: TreeController * 版本号: F 1.0.0.0 * 负责人: Markfan * 电子邮箱:[ema

第三方登录之QQ登录(二)——OAuth2.0处理流程介绍(以QQ登录为例)

为了让网站更快接入,腾讯提供了JS SDK的接入方案,具体点击这里或者点击这里进行查看. 不过也可以自己写代码,当然你需要了解QQ的OAuth2.0的处理流程(Web Server Flow). OAuth2.0的处理流程:点击这里查看官方Wiki. 1.授权:获取授权码Authorization Code 说明:第一步QQ必须得到要登录系统的授权信息,如果授权全成功,则会跳转到回调地址,同时授权码以参数形式,追加回调地址上. 当然还有一些其他参数,具体详情看官方介绍. 实例: https://

spring3.0结合Redis在项目中的运用

推荐一个程序员的论坛网站:http://ourcoders.com/home/ 以下内容使用到的技术有:Redis缓存.SpringMVC.Maven.项目中使用了redis缓存,目的是在业务场景中,提高SQL的查询效率,做出性能优化.先看pom.xml的配置文件中,Jedis是Redis的Java客户端,Jedis基本实现了Redis的所有功能.在使用的时候,我们创建一个Jedis对象,通过操作Jedis来操作Redis,实现我们的业务场景需求.项目中使用了Maven来托管,先看Jedis在p

使用Owin中间件搭建OAuth2.0认证授权服务器

前言 这里主要总结下本人最近半个月关于搭建OAuth2.0服务器工作的经验.至于为何需要OAuth2.0.为何是Owin.什么是Owin等问题,不再赘述.我假定读者是使用Asp.Net,并需要搭建OAuth2.0服务器,对于涉及的Asp.Net Identity(Claims Based Authentication).Owin.OAuth2.0等知识点已有基本了解.若不了解,请先参考以下文章: MVC5 - ASP.NET Identity登录原理 - Claims-based认证和OWIN

使用微服务架构思想,设计部署OAuth2.0授权认证框架

1,授权认证与微服务架构 1.1,由不同团队合作引发的授权认证问题 去年的时候,公司开发一款新产品,但人手不够,将B/S系统的Web开发外包,外包团队使用Vue.js框架,调用我们的WebAPI,但是这些WebAPI并不在一台服务器上,甚至可能是第三方提供的WebAPI.同时处于系统安全的架构设计,后端WebAPI是不能直接暴露在外面的:另一方面,我们这个新产品还有一个C/S系统,C端登录的时候,要求统一到B/S端登录,可以从C端无障碍的访问任意B/S端的页面,也可以调用B/S系统的一些API,

投票:OAuth2.0 技术选型你会怎么选

1. 前言 在使用 OAuth2.0 中 Authorization Server (授权服务器)是一个回避不了的设施,在大多数情况下我们调用的是一些知名的.可靠的.可信任的第三方平台,比如 QQ.微信.微博.github 等.我们的应用只作为 Client 进行注册接入即可.也就是说我们只需要实现 OAuth2.0 客户端的逻辑就可以了,无须关心授权服务器的实现.然而有时候我们依然希望构建自己的 Authorization Server.我们应该如何实现?今天不会讨论具体的技术细节,来谈谈 O

Senparc.Weixin.MP SDK 微信公众平台开发教程(十二):OAuth2.0说明

紧接上一篇<Senparc.Weixin.MP SDK 微信公众平台开发教程(十一):高级接口说明>,这里专讲OAuth2.0. 理解OAuth2.0 首先我们通过一张图片来了解一下OAuth2.0的运作模式: 从上图我们可以看到,整个过程进行了2次"握手",最终利用授权的AccessToken进行一系列的请求,相关的过程说明如下: A:由客户端向服务器发出验证请求,请求中一般会携带这些参数 ID标识,例如appId 验证后跳转到的URL(redirectUrl) 状态参数

微信OAuth2.0网页授权接口

微信OAuth2.0网页授权接口 微信OAuth2.0网页授权接口的thinkphp实现版本号.主要实现了oauth网页受权,以及部分其它接口. 用法 为什么用OAuth2.0受权? 通过OAuth2.0受权的网页将会获取到打开者的微信信息.甚至包含微信昵称.头像等实用的数据,开发人员们能够凭此设计出很多其它更丰富的页面应用,比方近期一直非常火爆的红包类活动.除此之外还有个额外的优点,就是能够控制页面在非微信浏览器中无法打开,能够降低代码被人窥窃的风险. 那么红包类活动是怎样使用OAuth2.0

在PHP应用中简化OAuth2.0身份验证集成:OAuth 2.0 Client

在PHP应用中简化OAuth2.0身份验证集成:OAuth 2.0 Client 阅读目录 验证代码流程 Refreshing a Token Built-In Providers 这个包能够让你以很简单的方式在在PHP应用中集成OAuth2.0身份验证. 用法 验证代码流程 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 4