OAuth是一种开放的协议,为桌面程序和web应用提供了一种简单的,标准的方式去访问需要用户授权的API服务。
OAuth中的定义
- Service Provider: 允许通过OAuth访问的web app,比如云存储服务
- User: 拥有Service Provider账户的人
- Consumer: website or app, 通过OAuth访问Service Provider,例如:云打印
- Protected Resource:Service Provider的用户数据,例如用户保存在Service Provider上的照片
- Consumer Developer:实现Consumer的个人或组织
- Consumer Key: app申请接入OAuth时从OAuth服务商获得,用于在Service Provider中标识自己
- Consumer Secret: 与key对应
- Request Token: Consumer用来获取用户授权,并交换Access Token的值
- Access Token: Consumer用来代表User获取Protected Resource
- Token Secret: Consumer用来确定Token所有权的密码
请求URLs
- Request Token URL: 获取未授权的Request Token服务地址;
- User Authorization URL: 为Consumer访问获取用户授权的服务地址;
- Access Token URL: 用授权的Request Token换取Access Token的服务地址;
部分参数
- oauth_consumer_key: app申请接入OAuth时从OAuth服务商获得的Client ID
- oauth_consumer_secret:oauth_consumer_key对应的密钥
- oauth_signature_method: OAuth向三个URL请求时的数字签名方法
- oauth_signature:数字签名
- oauth_timestamp: 请求时间戳
- oauth_nonce:随机字符串,用与防止请求重放攻击
- oauth_version:可选字段,默认1.0
OAuth认证过程
OAuth认证是用户在不共享凭证的前提下与Consumer共享Protect Resource的过程。OAuth使用Service Provider提供的Token代替用户凭证请求用户Protected Resource。
OAuth 授权分三步完成:
- 1,Consumer 获取未授权 Request Token
- 2,User 授权Request Toke