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

原创 2015年07月10日 10:12:58
                                云智慧(北京)科技有限公司 邓超

说起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 password credentials)
密码模式(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年初加入云智慧(北京)科技有限公司。目前主要负责监控宝产品架构的优化与研发。

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

云智慧(北京)科技有限公司邓超 说起oauth2.0,我相信很多人对其已经非常熟悉,并且已经应用在很多开放平台上,如新浪微博开放平台,腾讯微博开放平台等;下面我将我个人对于Oauth2的理解以及Oa...
  • cloudwiseAPM
  • cloudwiseAPM
  • 2015年08月27日 14:15
  • 421

SpringAOP在项目中的简单应用

 SpringAOP在项目中的简单应用 一、前言 项目背景 由于公司的机房到期,需要做应用迁移(包括数据库),割接到云平台。但是又不能进行一次性割接,需要分三个阶段:第一阶段割...
  • keyingbo2008
  • keyingbo2008
  • 2014年04月03日 21:47
  • 3880

我与监控宝之间的点点滴滴

从事两年软件开发工作的我,在14年有幸接触到监控宝,当时听说有这个东西,也没过多的进行了解。去年公司在各种大中小型的项目中配备的有10多台服务器,全部放在办公楼4楼的一个机房里,进行统一的管理,而研发...
  • u010287024
  • u010287024
  • 2015年09月24日 09:44
  • 883

【SSH网上商城项目实战21】从Demo中看易宝支付的流程

目录(?)[+]获取易宝的API测试支付流程1 前台测试页面2 Servlet处理请求3 加密算法测试支付结果   这一节我们先写一个简单点的Demo来测试易宝支付的流程,熟悉这个流程...
  • wwww_com
  • wwww_com
  • 2017年01月13日 08:28
  • 199

jQuery Ajax在web应用开发中很常用

原文地址: http://www.php100.com/html/program/jquery/2013/0905/6004.html jQuery Ajax在web应用开发中很常用,它主要...
  • liujiayu10
  • liujiayu10
  • 2015年11月24日 10:04
  • 503

浅谈多线程在java程序中的应用

在一个高并发的网站中,多线程是必不可少的。下面先说一下多线程在程序中的作用。 1、提高前端请求的响应速度。当我们执行一个比较耗时的方法时,http请求得不到响应甚至会超时,这时如果业务上允许数据的延...
  • u014035172
  • u014035172
  • 2017年03月29日 10:54
  • 2073

实际项目中的spring的 DI 和 IOC

前两篇文章讲到了项目用到的消息中心和工作流模块,这篇文章来了解一下怎么样使用模块里面的功能。 spring的核心是DI 和IOC,那到底什么是DI(依赖注入)和IOC(控制反转)呢,依赖在core ...
  • David_lou
  • David_lou
  • 2017年02月08日 11:40
  • 436

Spring管理事物应用到实际的项目中--编程式事物

接着上一篇博客来写。。。 下面来看一下如何将Spring管理事物应用到实际的项目中,为了简化实现,这里只定义最简单的模型对象和不完整的DAO和Service层接口 1、定义项目中的模型对象,这...
  • cwzhsi
  • cwzhsi
  • 2014年11月30日 11:07
  • 1320

多线程的实际应用

在做项目功能:批量结账中,因为单套账套单个月份的结账需要检测的东西和修改的东西本身就比较多,所以再加上多月份多账套,效率自然就慢了很多,此时单线程已经不能满足我们的需求,需要使用多线程,让不同的线程在...
  • caoyujiao520
  • caoyujiao520
  • 2017年12月16日 19:26
  • 44

项目中用到的Shell脚本(部分)

Linux Shell脚本之重要性看看如下截图
  • wl101yjx
  • wl101yjx
  • 2014年05月23日 17:41
  • 1541
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:oauth2.0在监控宝项目中的应用一例
举报原因:
原因补充:

(最多只允许输入30个字)