从Baidu云平台体会OAuth2.0的设计理念

Baidu云平台采用OAuth2.0开放授权标准,第三方应用无需获取用户的账号和密码即可访问用户在服务端存储的私有数据。其中较为常用的是Authorization Code授权模式。在实际开发Baidu云平台应用的过程中,可以体会到OAuth2.0的设计理念。

首先需要创建一个应用。在服务端看来,应用是发出API调用的主体,无论具体是从哪个进程哪个IP发出API调用,只要是以同一个应用的名义发出,服务端就不区别对待。具体来讲,一个应用的身份验证信息包括一组client_id和client_secret,相当于这个应用作为一个用户的账户和密码。

服务端通常提供多组功能不同的API。在使用某组API之前,某应用A必须申请这组API的调用权限(实际申请时通常要说明使用频率等信息,以供服务端进行审核)。审核通过后,应用A获取这组API的调用权限。这时以应用A的名义发出的对这组API的调用请求,服务端才会受理。

进一步,当应用A需要访问某个用户B存储在服务端的私有数据时,还需要用户B的授权。具体来讲,应用A会引导用户B访问一个位于服务端的URL,这个URL是一个授权页面。由于URL中附带了应用A的client_id参数,则用户B看到的页面就包含申请授权的应用A的身份信息。在页面中,用户B需要输入账户密码进行授权(Login & Authorization)。由于这个页面位于服务端,因此用户B的账户密码并不经过应用A。

用户B授权之后,服务端会生成一个authorization code,通常通过重定向用户浏览器的方式将这个code交给应用A。应用A可以使用code从服务端换取一个access token,至此授权结束。之后,应用只需在每次调用API时附加这个token即可(具体可以放在URL参数或HTTP header)。

从授权流程中可以发现,这个access token唯一对应了一个应用和一个用户。一个token对应一个应用的意义是,服务端可以根据API调用中附加的token判断发出API调用的是哪个应用,进而判断这个应用是否有对这个API的调用权限。一个token对应一个用户的意义是,服务端可以判断这次API调用要访问的是哪个用户的数据。一个token对应一个应用加一个用户的意义是,服务端可以判断这次API调用是否具有对该用户私有数据的访问权限。因此,在生成access token之后,只需在API调用中附加token就确认了一次API调用中的三个重要信息,主体(应用身份,API调用权限),客体(用户身份,被访问的数据),关系(访问权限)。

时间: 2024-10-04 06:41:00

从Baidu云平台体会OAuth2.0的设计理念的相关文章

(转)微信公众平台开发 OAuth2.0网页授权

微信公众平台开发 OAuth2.0网页授权认证 网页授权获取用户基本信息 作者:方倍工作室 微信公众平台最近新推出微信认证,认证后可以获得高级接口权限,其中一个是OAuth2.0网页授权,很多朋友在使用这个的时候失败了或者无法理解其内容,希望我出个教程详细讲解一下,于是便有了这篇文章. 一.什么是OAuth2.0 官方网站:http://oauth.net/   http://oauth.net/2/ 权威定义:OAuth is An open protocol to allow secure

微信公众平台开发 OAuth2.0网页授权认证

一.什么是OAuth2.0 官方网站:http://oauth.net/   http://oauth.net/2/ 权威定义:OAuth is An open protocol to allow secure authorization in a simple and standard method from web, mobile and desktop applications. OAuth是一个开放协议,允许用户让第三方应用以安全且标准的方式获取该用户在某一网站.移动或桌面应用上存储的私

OAuth2.0学习(5-1)新浪开放平台-微博OAuth2.0认证

http://open.weibo.com/wiki/%E9%A6%96%E9%A1%B5

微信公众平台开发(71)OAuth2.0网页授权

微信公众平台开发 OAuth2.0网页授权认证 网页授权获取用户基本信息 作者:方倍工作室 微信公众平台最近新推出微信认证,认证后可以获得高级接口权限,其中一个是OAuth2.0网页授权,很多朋友在使用这个的时候失败了或者无法理解其内容,希望我出个教程详细讲解一下,于是便有了这篇文章. 一.什么是OAuth2.0 官方网站:http://oauth.net/   http://oauth.net/2/ 权威定义:OAuth is An open protocol to allow secure

oauth2.0学习笔记

简介 oauth2.0是一种目前被广泛使用的开放式授权协议.各个服务平台可以使用oauth2.0协议来允许平台用户授权第三方来获取用户的信息数据等. 术语 Client : 第三方应用 Resource Owner : 资源拥有者,即平台用户 Authorization Server : 认证服务器,即平台提供的专门处理认证的服务 Resource Server : 资源服务器,平台给第三方提供资源访问的服务器,它与认证服务器可以是同一台也可以不是同一台 User Agent : 用户代理,即浏

Spring Cloud云架构 - SSO单点登录之OAuth2.0登录认证(1)

今天我们对OAuth2.0的整合方式做一下笔记,首先我从网上找了一些关于OAuth2.0的一些基础知识点,帮助大家回顾一下知识点: 一.oauth中的角色 client:调用资源服务器API的应用 Oauth 2.0 Provider:包括Authorization Server和Resource Server (1)Authorization Server:认证服务器,进行认证和授权 (2)Resource Server:资源服务器,保护受保护的资源user:资源的拥有者 二.下面详细介绍一下

(十) 整合spring cloud云架构 - SSO单点登录之OAuth2.0登录认证(1)

之前写了很多关于spring cloud的文章,今天我们对OAuth2.0的整合方式做一下笔记,首先我从网上找了一些关于OAuth2.0的一些基础知识点,帮助大家回顾一下知识点: 一.oauth中的角色 client:调用资源服务器API的应用 Oauth 2.0 Provider:包括Authorization Server和Resource Server (1)Authorization Server:认证服务器,进行认证和授权 (2)Resource Server:资源服务器,保护受保护的

(十三) 整合spring cloud云架构 - SSO单点登录之OAuth2.0 根据token获取用户信息(4)

上一篇我根据框架中OAuth2.0的使用总结,画了SSO单点登录之OAuth2.0 登出流程,今天我们看一下根据用户token获取yoghurt信息的流程: /** * 根据token获取用户信息 * @param accessToken * @return * @throws Exception */ @RequestMapping(value = "/user/token/{accesstoken}", method = RequestMethod.GET) public Resp

微信公众平台开发—利用OAuth2.0获取微信用户基本信息

1.首先在某微信平台下配置OAuth2.0授权回调页面: 2.通过appid构造url获取微信回传code值(appid可在微信平台下找到) 1).微信不弹出授权页面url: A.code回传到页面wxProcess2.aspx,不带参数 [csharp] view plain copy Response.Redirect("https://open.weixin.qq.com/connect/oauth2/authorize?appid=" + appid + "&