ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

api-authentication

2019-06-15 15:43:52  阅读:190  来源: 互联网

标签:令牌 私钥 authentication api 密钥 服务商 授权 客户端


title: API 客户端认证总结
categories:
- 总结
tags: []

date: 2016-02-22 16:19:00

签名认证机制

1.设置key密钥。
2.假设参数 appid:wx930ea5d5a258f4f much_id:10000100 device_info:1000 body:test nonce_str:iabuaiVckJ按照参数名ASCII字典排序。
StringA="appid=wx930ea5d5a258f4f&body=test&device_info=1000&much_id=10000010&nonce_str=iabuaiVckJ";
3.拼接API密钥。
stringSignTemp="stringA&key=192006250b4c09247ec02edce69f6a2d";sign=MD5(stringSignTemp).toUpperCase()="9A0A8659F005D6984697E2CA0A9CF3B7";

HTTP证书认证


HTTPS由HTTP+SSL组成,公钥私钥相当于钥匙和锁头,你可以把锁头给别人,别人可以用这个锁头把重要的东西锁起来,发给你,只有你有钥匙去打开锁看到里面的东西。

  1. 客户端发起HTTPS请求。
  2. 服务端配置。
  3. 传送公钥。
  4. 客户端解析证书,如果有异常,则弹出一个警告框,提示证书有问题,如果没有问题,则生成一个随机值(对称密钥),用证书对随机值加密。
  5. 传送加密信息,其实就是让服务器端得到这个随机值。
  6. 服务器端用私钥解密,得到随机值,然后私钥对称加密。
  7. 传输加密后的信息。
  8. 客户端解密信息。客户端用私钥还原内容。

总结:
服务器 用RSA生成公钥和私钥,把公钥放在证书里发送给客户端,私钥自己保存。
客户端首先向一个权威的服务器检查证书的合法性,如果证书合法,客户端产生一段随机数,这个随机数就作为通信的密钥,我们称之为对称密钥,用公钥加密这段随机数,然后发送到服务器,服务器用密钥解密获取对称密钥,然后,双方就已对称密钥进行加密解密通信了。

Oauth 2.0 认证

用户登录第三方网站,该网站又想获得另外一个服务商的信息(图片,文件),但是服务商又不想提供用户名密码给第三方网站。

  1. 第三方网站向服务商请求一个未授权的临时令牌code。
  2. 服务商验证第三方网站的身份后,授予一个未授权的临时的令牌(大概10分钟)。
  3. 第三方网站获得未授权的临时令牌后,将用户导向服务商的授权页面请求用户授权,将未授权的临时令牌和第三方网站的返回地址发给服务商。
  4. 用户在服务商的授权页面输入自己的用户名和密码。
  5. 授权成功后,服务商将用户导向第三方网站,并且返回已授权的临时令牌。
  6. 第三方网站根据已授权的临时令牌从服务商那里获得具有访问权限的令牌accessToken。
  7. 第三方网站使用获取到的访问令牌accseeToken可以访问服务商的用户资源。

授权模式

  • 授权码模式
  • 简化模式
  • 密码模式
  • 客户端模式

API接口频率限制

例子:
系统API接口日均调用次数预计1亿,提供5台服务器
单IP,单应用每小时调用次数不超过10000次
单应用,单用户,单接口每小时调用次数不超过1000次

系统吞吐量(系统每秒能处理的请求数)

80% * 1亿 / (24小时 * 60 分钟 * 60秒 * 40% * 5) = 4630tps
80%,40% 是指一天中有80%的请求发生在40%的时间里

简单设计

数据结构
k(app_id,ip) => v(count,startTime,lastTime)
k(app_id,uid,interface_id) => v(count,startTime,lastTime)

startTime是第一次调用发生的时刻,lastTime是最近一次调用发生的时刻,精确到秒级。

假设应用也有1万个,平均每个应用的用户数为10万个 ,接口数为50,独立访问IP地址为100万,那么数据项总和为:

1万100万 +1万10万*50 = 600亿

接口安全

  • 注入攻击
  • 失效的身份和会话管理
  • XSS
  • 不安全的直接对象引用
    暴露一个文件,目录,数据密钥
  • 安全配置错误 <security-constraint> <http-method>

http-method里的方法是要进行安全限制的,如果只写了POST,GET,那么黑客可以利用HEAD和PUT等其他方法进行攻击。

  • 敏感信息泄露
    携程安全支付日志可遍历下载
  • SQL注入
    虾米网2013年
  • 功能级访问控制缺失
  • 跨站请求伪造(CSRF)
    支付宝flash xss rookit攻击
  • 未授权访问/权限绕过
    2014年搜狗后台管理系统
  • 账户体系控制不严/越权操作
    乐视网 修改uid登录任意用户
  • 使用含有已知漏洞的组件
  • 未验证的重定向和转发
  • 引用不安全的第三方应用
    结果:获取服务器敏感信息
    淘宝网主站2014年4月,针对opnessl heartbeat,发送攻击数据包,不需要任何身份验证或者授权,可以从服务器内存读到最多64kb数据,这些数据包括用户登录的cookie,密码明文,可能泄露私钥。
    方法:升级最新版本。
  • 系统错误/逻辑缺陷带来的暴力猜想
    2013年京东商城,重置任意用户密码
    弱口令猜想
  • 内部重要资料/文档外泄
    淘宝往上传到百度网盘

标签:令牌,私钥,authentication,api,密钥,服务商,授权,客户端
来源: https://www.cnblogs.com/mousycoder/p/apiauthentication.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有