之前写过一个基于签名的公网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. 修改Linux SSH连接端口和禁用IP,安装DDoS deflate

    测试系统:centos7 修改连接端口 修改配置文件 vi /etc/ssh/sshd_config 去掉port 22的注释,添加新的端口配置 port your_port_num 自定义端口选择建 ...

  2. 深入浅出SharePoint2013——安装SharePoint2013

    在这个页面的底部可以通过相应链接下载Sharepoint Server安装文件  https://technet.microsoft.com/en-us/library/cc262788.aspx

  3. ZT Android 4.2蓝牙介绍

    Android 4.2蓝牙介绍 分类: Android开发系列 2013-06-27 14:16 7110人阅读 评论(22) 收藏 举报 目录(?)[-] Android 42蓝牙介绍 一  蓝牙规 ...

  4. 20165318 《Java程序设计》实验一(Java开发环境的熟悉)实验报告

    20165318 <Java程序设计>实验一(Java开发环境的熟悉)实验报告 一.实验报告封面 课程:Java程序设计        班级:1653班        姓名:孙晓暄    ...

  5. 【洛谷】【treap/堆】P2073 送花

    [题目描述:] 这些花都很漂亮,每朵花有一个美丽值W,价格为C. 小明一开始有一个空的花束,他不断地向里面添加花.他有以下几种操作: 操作 含义 1 W C 添加一朵美丽值为W,价格为C的花. 3 小 ...

  6. jenkins权限设置

  7. 20145203Java实验报告四:Android开发基础

    Java实验报告四:Android开发基础 实验要求: 1.安装Android Studio 2.运行安卓AVD模拟器 3.使用安卓运行出虚拟手机并显示HelloWorld以及自己的学号 实验过程 ( ...

  8. TensorFlow安装-Windows

    参考:https://blog.csdn.net/dou3516/article/details/77836459 一.安装环境 TensorFlow即可以支持CPU,也可以支持CPU+GPU.前者的 ...

  9. PAT乙级1008

    1008 数组元素循环右移问题 (20 分)   一个数组A中存有N(>0)个整数,在不允许使用另外数组的前提下,将每个整数循环向右移M(≥0)个位置,即将A中的数据由(A​0​​A​1​​⋯A ...

  10. 443 D. Teams Formation

    http://codeforces.com/contest/879/problem/D This time the Berland Team Olympiad in Informatics is he ...