Open api authentication

  • Amazon
  • DigitalOcean
  • Webchat
  • Weibo
  • QQ

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 ) ) )

http://docs.aws.amazon.com/AmazonS3/latest/dev/RESTAuthentication.html#ConstructingTheAuthenticationHeader

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

Weibo

无需登录授权的api直接使用

需要登录授权的使用OAuth2协议,获取到access_token,发送请求时提供access_token

http://open.weibo.com/wiki/授权机制说明

QQ

OAuth2协议

http://wiki.connect.qq.com/oauth2-0简介

API认证方法一览的更多相关文章

  1. [ Laravel 5.3 文档 ] 安全 ―― API认证(Passport)保障安全性。

    1.简介 Laravel通过传统的登录表单已经让用户认证变得很简单,但是API怎么办?API通常使用token进行认证并且在请求之间不维护session状态.Laravel使用LaravelPassp ...

  2. spring jwt springboot RESTful API认证方式

    RESTful API认证方式 一般来讲,对于RESTful API都会有认证(Authentication)和授权(Authorization)过程,保证API的安全性. Authenticatio ...

  3. Angularjs 通过asp.net web api认证登录

    Angularjs 通过asp.net web api认证登录 Angularjs利用asp.net mvc提供的asp.net identity,membership实现居于数据库的用户名/密码的认 ...

  4. 05: api认证

    1.1 api认证原理介绍 1.api认证原理:客户端生成秘钥 1) 客户端与服务器端有一个相同的字符串作为auth_key 2) 客户端使用encryption="auth_key|tim ...

  5. Django REST framework 之 API认证

    RESTful API 认证 和 Web 应用不同,RESTful APIs 通常是无状态的, 也就意味着不应使用 sessions 或 cookies, 因此每个请求应附带某种授权凭证,因为用户授权 ...

  6. Yii2 Api认证和授权(翻译)

    Authentication 认证 RESTful Api 是无状态的, 因此这意味着不能使用 sessions && cookies. 因此每一个请求应该带有一些 authentic ...

  7. Laravel 的 API 认证系统 Passport 三部曲(二、passport的具体使用)

    GQ1994 关注 2018.04.20 09:31 字数 1152 阅读 1316评论 0喜欢 1 参考链接 Laravel 的 API 认证系统 Passport 三部曲(一.passport安装 ...

  8. Yii2.0 RESTful API 认证教程

    认证介绍 和Web应用不同,RESTful APIs 通常是无状态的, 也就意味着不应使用 sessions 或 cookies, 因此每个请求应附带某种授权凭证,因为用户授权状态可能没通过 sess ...

  9. laravel使用JWT做API认证

    最近项目做API认证,最终技术选型决定使用JWT,项目框架使用的是laravel,laravel使用JWT有比较方便使用的开源包:jwt-auth.php 后端实现JWT认证方法 使用composer ...

随机推荐

  1. C#中用PadLeft、PadRight 补足位数

    在 C# 中可以对字符串使用 PadLeft 和 PadRight 进行轻松地补位. PadLeft(int totalWidth, char paddingChar) //在字符串左边用 paddi ...

  2. 多态 JAVA

    多态(Java)   一.多态 1.什么是多态? 不同的对象对于同一个操作,做出的响应不同 具有表现多种形态的能力的特征 2.使用多态的优点 : 为了实现统一调用 二.子类到父类的转换(向上转型) ① ...

  3. 在SQL Server 中启用 FileStream

    最近在研究在数据库中存储大数据文件,看到了FileStream 这个功能,记录下来以备后用 FileStream 一般在安装的时候默认是不启用的,如果你留意的话,在选择数据库文件路径那个窗口,有一个标 ...

  4. Linux设备驱动中的阻塞和非阻塞I/O

    [基本概念] 1.阻塞 阻塞操作是指在执行设备操作时,托不能获得资源,则挂起进程直到满足操作所需的条件后再进行操作.被挂起的进程进入休眠状态(不占用cpu资源),从调度器的运行队列转移到等待队列,直到 ...

  5. Unix系统解压tar包时出现@LongLink错误

    Unix系统上使用tar命令解压tar包后,多了一个@LongLink的文件,并且原来的tar包解压后不完整.网上查了下,原因是AIX系统上tar命令自身的一个缺陷.解决办法:把该tar包上传到lin ...

  6. sass笔记-2|Sass基础语法之让样式表更具条理性和可读性

    这一篇主要详述保持sass条理性和可读性的3个最基本方法--嵌套.导入和注释. 零. 变量 变量本身的作用是为了保持属性值的可维护性,把所有需要维护的属性值放在同一个地方,快速更改,处处生效,可谓售后 ...

  7. Linux 机器之间建立互信

    原理: 就是两台机器(web-1和web-2)经过预先设置好经过认证的key文件,双方互相访问时,进行自动认证,从而实现互信.   互信的原理了解了,我们可以把配置ssh互信的步骤进行有效的分割. 1 ...

  8. ckeditor常用设置

    1.首先下载ckeditor放入自己的项目WebRoot目录下 2.在自己的页面中引入需要的js库 3.在界面中书写多行文本域 必须要有name或者id属性  不然没有效果显示 4.修改ckedito ...

  9. 对相同id的input框的循环判断

    $("input[id=sl]").each(function(){ alert(10); });

  10. C#关于使用枚举遇到的问题----Parse()方法使用注意

    声明了一个枚举 public enum ceshimeiju { 跃动,光子} ceshimeiju ce = Enum.Parse(typeof(ceshimeiju ), "跃动&quo ...