API认证方法一览
Open api authentication
- Amazon
- DigitalOcean
- Webchat
Amazon Web Services
HMAC Hash Message Authentication Code
核心思路
- 【Client】以某种次序组合数据
- 【Client】使用private key加密组合数据生成HMAC
- 【Client】将数据发送至Server端,包括
- 用户标识信息,如API Key,Client ID, User ID;用以标识你是谁
- Timestamp,避免重复攻击
- 生成的HMAC
- 其他数据
- 【Server】接收所有数据
- 【Server】检查Timestamp
- 【Server】使用用户标识信息,查询private key
- 【Server】从所有数据中取出HMAC
- 【Server】以Client相同的次序组合数据
- 【Server】使用private key加密组合数据生成HMAC
- 【Server】匹配一致,认为请求合法
提示:private key不传输
http://docs.aws.amazon.com/general/latest/gr/sigv4-create-string-to-sign.html
http://docs.aws.amazon.com/general/latest/gr/sigv4-calculate-signature.html
http://www.thebuzzmedia.com/designing-a-secure-rest-api-without-oauth-authentication/
Amazon Simple Storage Service (One of AWS)
Developers are issued an AWS access key ID and AWS secret access key when they register.
The Amazon S3 REST API uses the standard HTTP Authorization header to pass authentication information.
Authorization: AWS AWSAccessKeyId:Signature
开发者在注册的时候,会得到一个AWS access key ID和AWS secret access key。关于请求认证,
AWSAccessKeyId用来计算signature以及标识是哪一个开发者发起的请求。
Signature是请求中选定元素的RFC 2104 HMAC-SHA1算法生成的。
Authorization = "AWS" + " " + AWSAccessKeyId + ":" + Signature;
Signature = Base64( HMAC-SHA1( YourSecretAccessKeyID, UTF-8-Encoding-Of( StringToSign ) ) )
DigitalOcean
https
- 首先使用用户名密码登录管理平台
- 在管理平台,生成OAuth Token(实际上代替了Username和Password)
- api请求在HTTP header中携带OAuth Token
curl例子
curl -X $HTTP_METHOD -H "Authorization: Bearer $TOKEN" "https://api.digitalocean.com/v2/$OBJECT"
curl -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" -d '{"name": "example.com", "ip_address": "127.0.0.1"}' -X POST "https://api.digitalocean.com/v2/domains"
https://developers.digitalocean.com/documentation/v2/#authentication
Webchat
微信开发接口调用凭据
步骤
- 【Client】获取access_token,发送数据包括
- appid
- secret
- 其他api调用均需要access_token(access_token有效期为两小时,需要定时获取)
http://wiki.connect.qq.com/openapi调用说明_oauth2-0
无需登录授权的api直接使用
需要登录授权的使用OAuth2协议,获取到access_token,发送请求时提供access_token
http://open.weibo.com/wiki/授权机制说明
OAuth2协议
http://wiki.connect.qq.com/oauth2-0简介
API认证方法一览的更多相关文章
- [ Laravel 5.3 文档 ] 安全 ―― API认证(Passport)保障安全性。
1.简介 Laravel通过传统的登录表单已经让用户认证变得很简单,但是API怎么办?API通常使用token进行认证并且在请求之间不维护session状态.Laravel使用LaravelPassp ...
- spring jwt springboot RESTful API认证方式
RESTful API认证方式 一般来讲,对于RESTful API都会有认证(Authentication)和授权(Authorization)过程,保证API的安全性. Authenticatio ...
- Angularjs 通过asp.net web api认证登录
Angularjs 通过asp.net web api认证登录 Angularjs利用asp.net mvc提供的asp.net identity,membership实现居于数据库的用户名/密码的认 ...
- 05: api认证
1.1 api认证原理介绍 1.api认证原理:客户端生成秘钥 1) 客户端与服务器端有一个相同的字符串作为auth_key 2) 客户端使用encryption="auth_key|tim ...
- Django REST framework 之 API认证
RESTful API 认证 和 Web 应用不同,RESTful APIs 通常是无状态的, 也就意味着不应使用 sessions 或 cookies, 因此每个请求应附带某种授权凭证,因为用户授权 ...
- Yii2 Api认证和授权(翻译)
Authentication 认证 RESTful Api 是无状态的, 因此这意味着不能使用 sessions && cookies. 因此每一个请求应该带有一些 authentic ...
- Laravel 的 API 认证系统 Passport 三部曲(二、passport的具体使用)
GQ1994 关注 2018.04.20 09:31 字数 1152 阅读 1316评论 0喜欢 1 参考链接 Laravel 的 API 认证系统 Passport 三部曲(一.passport安装 ...
- Yii2.0 RESTful API 认证教程
认证介绍 和Web应用不同,RESTful APIs 通常是无状态的, 也就意味着不应使用 sessions 或 cookies, 因此每个请求应附带某种授权凭证,因为用户授权状态可能没通过 sess ...
- laravel使用JWT做API认证
最近项目做API认证,最终技术选型决定使用JWT,项目框架使用的是laravel,laravel使用JWT有比较方便使用的开源包:jwt-auth.php 后端实现JWT认证方法 使用composer ...
随机推荐
- Web —— java web 项目开发 笔记
1.tomcat 配置虚拟路径:Tomcat下配置虚拟路径管理web项目 发布路径配置( 即虚拟目录配置 ) 配置虚拟路径的4种方法 2.
- SVN在Android Studio中的配置
在AndroidStudio中开发版本控制,除了Git就是SVN,和Eclipse不同Android Studio没有提供单独的插件,只能和SVN客户端关联使用,和Eclipse安装有很大区别,下面介 ...
- mysql5.5.17源代码安装
1. 源代码包下载 源代码包通常也採用tar.gz压缩.名称中仅仅包括版本号信息,大小也比RPM包.二进制包小非常多,解压后的文件里含有INSTALL-SOURCE文件.可从MySQL官网(http ...
- android studio 的部分设置
1.android studio 如何提示方法的用法 在 Eclipse中鼠标放上去就可以提示方法的用法,实际上Android Studio也可以设置的.如图 Preferences > Edi ...
- 【转载】python:特殊函数使用方式
[转载]廖雪峰的官方网站 可变参数 在Python函数中,还可以定义可变参数.顾名思义,可变参数就是传入的参数个数是可变的. 我们以数学题为例子,给定一组数字a,b,c……,请计算a2 + b2 + ...
- html图像入门
在HTML中,图像由<img>标签定义. <img>是空标签,意思是说,它只包含属性,并且没有闭合标签. 要在页面上显示图像,需要使用源属性src, src指的是"s ...
- minus的用法
简单的说就是去同留异. MINUS 指令是运用在两个 SQL 语句上.它先找出第一个 SQL 语句所产生的结果,然后看这些结果有没有在第二个 SQL 语句的结果中.如果有的话,那这一笔资料就被去除,而 ...
- 用POP动画引擎实现弹簧动画(POPSpringAnimation)
效果图: #import "ViewController.h" #import <POP.h> @interface ViewController () @proper ...
- 用CAGradientLayer实现渐变色动画
效果图: github:https://github.com/RinpeChen/CAGradientLayerBasicDemo
- js的相关验证
1 var JavaScriptCommon = { /*身份证号码校验*/ VerifyID: function (socialNo) { if (socialNo == "") ...