开放平台中的鉴权的实现

本文详细介绍了开放平台中鉴权的实现,基于OAuth2.0协议,阐述了鉴权的必要性、主要角色及流程。讨论了如何通过appkey、code、accessToken和refreshToken建立映射关系,以及接口设计与权限判断的实现策略,强调了在接口交互过程中的验证和超时管理。并以新浪和微信开放平台为例,展示了具体的操作步骤。
摘要由CSDN通过智能技术生成

转载请注明:http://blog.csdn.net/HEL_WOR/article/details/51660979

在描述鉴权和流控之前,可能需要先描述为什么需要搭建开放平台。
开放平台最先由FB推出,而后在2012年左右,国内比较大型的互联网公司都开始搭建自己的开放平台。搭建属于自己的开放平台的原因,一般是以下几点:

1.借助第三方满足用户的零碎需求
2.借助第三方提升自己的影响力
3.作为渠道获得第三方应用带来的红利
4.加深与用户的粘连

OAuth2.0协议是一个协议,不是具体的框架或者实现,这个协议定义了一个流程,保证这个流程的实现相应的保证权限管理的成功。
OAuth2.0中主要规定了三方。

1.第三方程序
2.用户
3.保存用户信息的服务器

OAuth2.0协议出现是为了解决第三方程序可以获取保存在服务器上的用户的信息但用户又能不将自己的账号密码告知第三方程序。
这个过程通过3个流程来实现。

1.第三方程序向平台注册应用,获取AppKey,Appsecret。
2.第三方程序向平台提供的接口1发起请求,平台向用户索要账号密码,验证通过后返回给第三方程序一个code(临时授权码)。
3.第三方程序拿着这个code再次向平台提供的接口2发起请求,并需一同提供AppKey,Appsecret,平台校验通过后返回accessToken,第三方程序就可以拿着这个accessToken开始真正的业务操作了。

code的出现,是为了防止中间人攻击,即,平台需要第三方程序证明是其需要获取用户的信息,而不是拦截下信息的其他程序。
除了accessToken,一些开放平台,比如微信,会一同返回refreshToken,其用来刷新accessToken。

以新浪开放平台和微信开放平台为例,描述鉴权的实现流程.
新浪API:
这里写图片描述

微信API:
这里写图片描述

所以,我们可以定义三个接口:

public String generateRequestToken(String appKey) throws AuthorizeException;

此接口用于获取code

public OpenRefreshToken generateAccessToken(String appKey, final String appSecret, String requestToken) throws AuthorizeException; 

此接口用于获取accessToken。
如果参见新浪api和微信api的授权返回值,其分别如下:

新浪API
{
 "accesstoken":"ACCESSTOKEN",
 "expires_in":"1234",
 "uid":"123456"
}
微信API
{
"accessToken":"ACCESS_TOKEN",
"expires_in":"7200",
"refresh_token":"REFRESHTOKEN",
"o
  • 5
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 9
    评论
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值