开放平台OAuth 2.0授权开发实践
2013-05-27 17:53
459 查看
由于网站的用户规模小,一开始没有自建用户体系,使用的是国内流行的几个开放平台的第三方帐号登录。比如:新浪微博、QQ、淘宝、人人网。
这些网站使用的都是OAuth 2.0协议实现的认证和授权,下面是我按照自己理解画的OAuth 2.0认证和授权流程图:
整个流程设计3个角色:用户,或者称浏览器;应用服务器,也就是用户访问的站点;开放平台(微博、QQ等)。这里以Weibo为例详细讲讲各个步骤:
用户点击网站页面上的“登录”按钮:
网站收到用户请求后,向开放平台请求一个Authorization Code。网站发送的这个请求url中会包含开放平台分配的APP KEY和一个回调地址。回调地址的作用是用户授权后开放平台通过该回调地址将access token返回给应用服务器。
浏览器页面跳转到开放平台的登录页面,要求用户登录。可以注意到这时浏览器地址栏中的地址是开放平台的域名,而非用户访问的站点,因此不必当心应用站点知道你的开放平台用户名密码。
用户输入用户名、密码,点击“登录”
用户在开放平台登录成功后,如果用户之前没有对当前访问的站点授权,或者已经取消了授权,那么开放平台会将页面跳转到授权确认页面:
默认都是最普通的权限。如果网站想要更高级的权限,需要将权限对应的编码作为scope参数添加到2中的url中。
用户根据网站需要的权限内容选择授权或拒绝。不管用户有没有授权,其实到了这一步都已经完成了2A中的Authentication即认证这一步了。只是如果用户没有对网站授权的话,网站就无法获取到用户的数据,无法进一步为用户提供相关服务。
用户授权以后,开放平台会生成一个Authorization Code,并通过网站提供的回调地址将该code发送给网站。
网站在拿到授权码(Authorization Code)后,就可以使用授权码到开放站点换取Access Token了。Authorization Code只表示得到了用户授权,具体访问用户资源还需要Access Token。
开放站点将Access Token返回给应用服务器。
网站使用Access Token请求用户基本信息。这里由于各个开放平台的api不一样,有时候可能需要不止一次请求,但逻辑上已经没有多大区别了。一旦网站有了这个Access Token,就可以调用开放平台提供的接口请求授权的用户资源。
Access Token有一个有效时间,通常是24小时。在这段时间内,如果用户不做修改密码或取消授权等动作,网站都可以使用该token获取用户的资源。
开放平台校验Access Token无误后,将当前用户的基本信息返回给站点。通常这段信息中会包括用户的昵称、性别、头像等。
站点获取到用户信息后,将页面跳转到登录成功页面,并使用获取到的信息为用户提供一个友好的页面提示,也可以利用该信息为用户提供更多的个性化服务。
这些网站使用的都是OAuth 2.0协议实现的认证和授权,下面是我按照自己理解画的OAuth 2.0认证和授权流程图:
整个流程设计3个角色:用户,或者称浏览器;应用服务器,也就是用户访问的站点;开放平台(微博、QQ等)。这里以Weibo为例详细讲讲各个步骤:
用户点击网站页面上的“登录”按钮:
网站收到用户请求后,向开放平台请求一个Authorization Code。网站发送的这个请求url中会包含开放平台分配的APP KEY和一个回调地址。回调地址的作用是用户授权后开放平台通过该回调地址将access token返回给应用服务器。
浏览器页面跳转到开放平台的登录页面,要求用户登录。可以注意到这时浏览器地址栏中的地址是开放平台的域名,而非用户访问的站点,因此不必当心应用站点知道你的开放平台用户名密码。
用户输入用户名、密码,点击“登录”
用户在开放平台登录成功后,如果用户之前没有对当前访问的站点授权,或者已经取消了授权,那么开放平台会将页面跳转到授权确认页面:
默认都是最普通的权限。如果网站想要更高级的权限,需要将权限对应的编码作为scope参数添加到2中的url中。
用户根据网站需要的权限内容选择授权或拒绝。不管用户有没有授权,其实到了这一步都已经完成了2A中的Authentication即认证这一步了。只是如果用户没有对网站授权的话,网站就无法获取到用户的数据,无法进一步为用户提供相关服务。
用户授权以后,开放平台会生成一个Authorization Code,并通过网站提供的回调地址将该code发送给网站。
网站在拿到授权码(Authorization Code)后,就可以使用授权码到开放站点换取Access Token了。Authorization Code只表示得到了用户授权,具体访问用户资源还需要Access Token。
开放站点将Access Token返回给应用服务器。
网站使用Access Token请求用户基本信息。这里由于各个开放平台的api不一样,有时候可能需要不止一次请求,但逻辑上已经没有多大区别了。一旦网站有了这个Access Token,就可以调用开放平台提供的接口请求授权的用户资源。
Access Token有一个有效时间,通常是24小时。在这段时间内,如果用户不做修改密码或取消授权等动作,网站都可以使用该token获取用户的资源。
开放平台校验Access Token无误后,将当前用户的基本信息返回给站点。通常这段信息中会包括用户的昵称、性别、头像等。
站点获取到用户信息后,将页面跳转到登录成功页面,并使用获取到的信息为用户提供一个友好的页面提示,也可以利用该信息为用户提供更多的个性化服务。
相关文章推荐
- 开放平台OAuth 2.0授权开发实践
- 微信开放平台 公众号第三方平台开发 教程五 代公众号发起网页授权源码
- 微信开放平台开发-授权、全网发布(PHP)
- OAuth是一个关于授权(authorization)的开放网络标准,在全世界得到广泛应用,目前的版本是2.0版。 本文对OAuth 2.0的设计思路和运行流程,做一个简明通俗的解释,主要参考材料为R
- 微信开放平台开发(四) 授权
- 新浪开放平台---oauth2认证流程 casperjs自动登录和授权 api需要注意的问题及bug
- 微信开放平台 公众号第三方平台开发 教程五 代公众号发起网页授权源码
- [腾讯社区开放平台]介绍开放授权协议-OAuth
- 微信开放平台 公众号第三方平台开发 教程三 一键登录授权给第三方平台
- OAuth 2.0简单实战(以新浪开发平台为例)
- OAuth 2.0(开放授权)
- 微信开发之分清公众平台和开放平台、公众号全局凭证和网页授权凭证
- 转发:[腾讯社区开放平台]介绍开放授权协议-OAuth
- 微信开放平台 公众号第三方平台开发 教程五 代公众号发起网页授权源码
- 微信开放平台 公众号第三方平台开发 教程三 一键登录授权给第三方平台
- OAuth 2.0 开放授权的那些事儿
- 微信开放平台 公众号第三方平台开发 教程三 一键登录授权给第三方平台
- OAuth 2.0 授权(authorization)的开放网络标准
- React + Node 单页应用「二」OAuth 2.0 授权认证 & GitHub 授权实践
- 微信开放平台开发-授权、全网发布(PHP)