REST API接入文档

EDM-API接入

REST API接入文档

2023-02-26 15:46


                                            




1. OAuth 授权方法是一种开放式授权协议,在桌面应用程序和基于网络的应用程序中使用。 OAuth 可让应用程序获取访问令牌,而无需处理用户的凭据。 您必须使用安全证书注册应用程序,才能使用 OAuth。 OAuth 网站( http://oauth.net/)包含 OAuth 的最常见使用情况的清晰说明。 下列情况下请考虑使用 OAuth:
您要开发的应用程序是支持 OAuth 的网站。
您要开发针对各种不同客户端的应用程序(安装版、网络版、移动版)。
您要在使用多家提供商的多种服务的环境中开发应用程序。

2. OAuth 关键术语

术语 定义
Service Provider a web application that allows access via oauth. for example, google or myspace
User an individual who has an account with the service provider, for whom the service provider might have data that could be accessed via oauth. for example, a gadget might access a user's google calendar data via oauth.
Consumer a website or application that uses oauth to access the service provider on behalf of the user. in this context, a gadget that uses oauth to access a user's data would be the consumer.
Protected Resources data controlled by the service provider, which the consumer (gadget) can access through authentication.
Container a container is an opensocial environment in which gadgets are embedded. for example, igoogle is a container. the container is responsible for managing the gadgets' layout and controls, as well as for supporting various functionality on behalf of the gadgets. an oauth gadget can only run in a container that supports oauth. if a gadget uses oauth, it is actually the container that executes the oauth protocol on behalf of the gadget by handling all the digital signing required by the protocol
Consumer Key a value used by the gadget to identify itself to the service provider. this corresponds to the oauth_consumer_key parameter. see the oauth spec for details.
Consumer Secret a secret used by the gadget to establish ownership of the consumer key.
Request Token a value used by the gadget to obtain authorization from the user, and exchanged for an access token.
Access Token a value used by the gadget to gain access to the protected resources on behalf of the user, instead of using the user’s service provider credentials.
Token Secret a secret used by the gadget to establish ownership of a given token.

中文参考地址 http://code.google.com/intl/zh-CN/apis/gadgets/docs/oauth.html

3. OAuth 操作流程图

Oauth demo(java) 下载)
将应用程序放入Tomcat下,启动服务。 访问地址:http://localhost:8080/ApiClient/getAccessTokenServlet.do?url=go_to_oauth
OAuth Library http://code.google.com/p/oauth/
认证流程及访问资源流程

  • 第一步:获取未授权的 Request Token(请求URL: http://services.redmaomail.com/auth/request_token)
    • 请求参数 意 义
      oauth_consumer_key oauth consumer key
      oauth_signature_method 签名方法,使用hmac-sha1
      oauth_signature 签名值
      oauth_timestamp 时间戳
      oauth_nonce 单次值,随机字符串,防止重复提交
  • 第二步:请求用户授权 Request Token(请求URL:http://services.redmaomail.com/auth/authorize)
    • 请求参数 意 义
      oauth_token 上一步中获得的request token
      oauth_callback 如果包含这个参数,认证成功后浏览器会被重定向到形如 http://services.unimarketing.com.cn/auth/callback?oauth_token=ab3cd9j4ks73hf7g的url, 其中oauth_token为授权request token 否则需要用户手工通知第三方应用以完成授权
  • 第三步:使用授权后的 Request Token 换取 Access Token(请求URL:http://services.redmaomail.com/auth/access_token)
    • 请求参数 意 义
      oauth_consumer_key oauth consumer key
      oauth_token 第一步中获得的request token
      oauth_signature_method 签名方法
      oauth_signature 签名值
      oauth_timestamp 时间戳
      oauth_nonce 单次值, 防止重复提交
  • 第四步:使用Access Token访问或修改受保护资源(请求URL为具体的某个API)
    • 请求参数 意 义
      oauth_consumer_key oauth consumer key
      oauth_token access token
      oauth_signature_method 签名方法
      oauth_signature oauth_token 的签名值
      oauth_timestamp 时间戳
      oauth_nonce 单次值, 防止重复提交


关于在修改删除受限资源时传递OAuth参数

  • OAuth规范定义了三种传递OAuth参数方式
    a、header中
    b、url中
    c、post form中
    然而进行POST、PUT、DELETE请求时,灵动创新暂时不支持使用在url中或者post form中传递OAuth参数。
    因此你只能选择在header中传递OAuth参数。格式如下:
    Authorization: OAuth realm="http://services.redmaomail.com/",
    oauth_consumer_key="api.third.com",
    oauth_token="ad180jjd733klru7",
    oauth_signature_method="HMAC-SHA1",
    oauth_signature="wOJIO9A2W5mFwDgiDvZbTSMK%2FPY%3D",
    oauth_timestamp="137131200",
    oauth_nonce="4572616e48616d6d65724c61686176",
    oauth_version="1.0"