之前写过一个基于签名的公网API访问安全控制,另一种方式是基于OAuth认证协议做安全控制。

说明

用户访问A客户端,使用B的服务及资源。B只有征得用户的授权,才允许A客户端使用B上用户的资源和服务。

名词

  • 第三方客户端,A客户端。

  • 服务提供商,B服务。

  • 资源所有者,用户。

  • 用户代理,比如浏览器。

  • 认证服务器,B服务上用来提供认证的服务器。

  • 资源服务器,B服务上用来存储用户的资源的服务器。

通过一个权限配置管理界面,业务方配置之后,获取appid,secret,redirect_url。

  • 通过授权获取授权码。

  • 通过授权码+appid+secret获取access_token。

  • 通过access_token操作api。

OAuth在客户端与服务提供商之间,设置一个授权层。

客户端不直接登陆服务提供商,只登陆授权层,以此将用户与客户端区分开。

客户端登陆授权层所用的令牌,与用户的密码不同。用户可以在登陆的时候,指定授权层令牌的授权范围和有效期。

客户端登陆授权层,服务提供商根据令牌的权限范围和有效期,向客户端开发对应服务。

  • 用户打开客户端,客户端要求用户给予授权。

  • 用户同意给予客户端授权。

  • 客户端使用上一步获取的授权,向认证服务器申请令牌。

  • 认证服务器对客户端进行认证后,确认无误,同意发放令牌。

  • 客户端使用令牌,向资源服务器申请获取资源。

  • 资源服务器确认令牌无误,同意向客户端开发资源。

核心:用户给客户端授权,有了授权之后,客户端可以获取令牌,凭令牌获取资源。

]

参照URL:

客户端授权:

/authorize/app-connect?appid=APPID&redirect_url=xxx&response_type=code&state=xxx

验证通过,授权服务器重定向到配置的REDIRECT_URL&code=xxx 授权码

通过授权码获取access_token:

/authorize/access-token?appid=APPID&secret=SECRET&code=授权码&grant_type=authorization_code

验证通过,返回access_token,refresh_token,expires_in(过期时间戳)

通过refresh_token更新access_token:

/authorize/refresh-token?appid=APPID&grant_type=refresh_token&refresh_token=xxx

验证通过,返回新的access_token,refresh_token,更新成功

公网API安全--OAuth认证的更多相关文章

  1. 服务端API的OAuth认证实现

    http://stackoverflow.com/questions/12499602/body-joints-angle-using-kinect?rq=1 新浪微博跟update相关的api已经挂 ...

  2. 豆瓣api之OAuth认证

    豆瓣api通过OAuth允许第三方应用访问用户数据,所以OAuth认证就是我们整个project的基础了. OAuth认证听起来挺神秘,其实挺简单的. 现在的大型网站的开放平台的认证几乎都是采用OAu ...

  3. 拿nodejs快速搭建简单Oauth认证和restful API server攻略

    拿nodejs快速搭建简单Oauth认证和restful API server攻略:http://blog.csdn.net/zhaoweitco/article/details/21708955 最 ...

  4. 新浪微博API Oauth2.0 认证

    原文链接: http://rsj217.diandian.com/post/2013-04-17/40050093587 本意是在注销账号前保留之前的一些数据.决定用python 爬取收藏.可是未登录 ...

  5. OAuth认证原理及HTTP下的密码安全传输

    很多人都会问这样一个问题,我们在登录的时候,密码会不会泄露?随便进一个网站,登录时抓包分析,可以看到自己的密码都是明文传输的,在如此复杂的web环境下,我们没有百分的把握保证信息在传输过程中不被截获, ...

  6. HTTP下密码的安全传输、OAuth认证

    在复杂的web环境下,我们没有百分的把握保证信息在传输的过程中不被接货,那不是用明文如何告诉服务器自己的身份呢? 在一些高度通信安全的网络中,数据传输会使用HTTPS作为传输协议,但是通常情况下我们没 ...

  7. 一步一步搭建 OAuth 认证服务器

    http://www.fising.cn/2011/03/%E4%B8%80%E6%AD%A5%E4%B8%80%E6%AD%A5%E6%90%AD%E5%BB%BA-oauth-%E8%AE%A4% ...

  8. 新浪微博客户端开发之OAuth认证篇

    新浪微博客户端开发之OAuth认证篇 2013年7月29日新浪微博客户端开发 OAuth2.0授权机制我在这里就不浪费口舌了,有很多大牛都发表过相关的文章解释OAuth2.0认证的流程,我就随便找了一 ...

  9. Android OAuth认证

    OAuth认证 为了安全地访问在线服务,用户需要在服务上进行身份验证,即要提供他们的身份的证明.对于一个要访问第三方服务的程序来说,安全问题甚至更复杂.不仅仅是用户需要在访问服务前要进行身份验证,而且 ...

随机推荐

  1. 如何查找论文是否被SCI,EI检索(转)

      转自 http://blog.sina.com.cn/s/blog_564978430100iqpp.html   学术界,尤其是国内学术界,把SCI,EI看得太重,很多大学都要求博士毕业要有SC ...

  2. if 里面嵌套一个if&else (我自己又细分了别的条件,加了elif)

    场景: 一个陌生人敲门..... gender = input("你是男的是女的?") if gender == "女": print("请进&quo ...

  3. Programming Assignment 5: Burrows–Wheeler Data Compression

    编程作业五 作业链接:Burrows-Wheeler Data Compression & Checklist 我的代码:MoveToFront.java & CircularSuff ...

  4. 使用 Bulk Copy 将大量数据复制到数据库

    如果一次要向数据库服务器提交多条记录 , 通常会执行多次Insert命令 , 这样就为要插入的每个记录执行一次与数据库服务器的往返 , 这就给服务器增加了压力 , 效率也大大的降低了... .Net  ...

  5. ansible--03

    一. Ad-hoc命令简介 1. 格式:ansible <host> [opion] 2. option参数: -v:输出详细的执行过程, -vvv最详细的结果 -i:指定inventor ...

  6. Day9 JSP

    JSP概述 JSP全称是Java Server Pages,它和servle技术一样,都是SUN公司定义的一种用于开发动态web资源的技术.JSP实际上就是Servlet. jsp = html + ...

  7. Sql Server 数据库扩展

    1. 查询一个表的所有列名 ------查询一个表的所有列名 Select Name FROM SysColumns Where id=Object_Id('Sys_User') select t.c ...

  8. virtualbox+vagrant学习-3-Vagrant Share-6-Custom Provider

    ⚠️警告:只是一个高级主题! 这个话题与开发vagrant插件有关.如果你对此不感兴趣,或者你刚刚开始使用vagrant,跳过这一页是安全的. 如果你正在开发一个 custom Vagrant pro ...

  9. better-scroll在vue中的坑

    在我们日常的移动端项目开发中,处理滚动列表是再常见不过的需求了,以滴滴为例,可以是这样竖向滚动的列表,如图所示: 也可以是横向滚动的导航栏,如图所示: 可以打开“微信 —> 钱包—>滴滴出 ...

  10. 1554: SG Value (巧妙的模拟题,也属于思维题)

    1554: SG Value Submit Page    Summary    Time Limit: 5 Sec     Memory Limit: 256 Mb     Submitted: 4 ...