0

我意识到标题可能有点令人困惑,所以这就是我想要实现的目标:

我需要使用 RAML 记录 token_grant 和 token_refresh 方法,这两个方法都是 POST 调用。

token_grant : 生成第一次 OAuth 令牌 token_refresh : 刷新访问令牌

它们的查询参数不同,当然返回结果也不同。问题是它们都在同一个资源下,RAML 只允许对每个资源进行 1 次 POST 调用:

 /oauth/token

有没有办法解决这个问题,仅限于一个电话后?也许有条件取决于查询参数?

这是token_grant的模板

/oauth/token:  
   post:
     description:
     headers:
       Authorization:
         type: "string"
         default: "[client_id:]"
         required: true
         example: 
     queryParameters:
       grant_type:
         type: string
         required: true
         example: ''
       code:
         type: string
         required: true
         example: ''
     responses:
       200:
         body:
         application/json:
       example: |

这是token_refresh的模板:

/oauth/token:  
   post:
     description:
     headers:
       Authorization:
         type: "string"
         default: "[client_id:]"
         required: true
         example: 
     queryParameters:
       grant_type:
         type: string
         required: true
         example: ''
       //Main difference1
       refresh_token:
         type: string
         required: true
         example: ''
     responses:
       200:
         body:
          application/json:
          //Main difference 2
          example: "a different response goes here"

所以主要问题是如何将这些放在一起

/oauth/token/

任何帮助表示赞赏非常感谢!

4

1 回答 1

1

您无需在 RAML 中指定 OAuth2 协议,因为默认支持此安全方案:https ://github.com/raml-org/raml-spec/blob/master/raml-0.8.md#security

您只需要定义 URI、授权和范围:https ://github.com/raml-org/raml-spec/blob/master/raml-0.8.md#oauth-20以及您期望访问的标头令牌:https ://github.com/raml-org/raml-spec/blob/master/raml-0.8.md#declaration-1

任何支持 OAuth2 的客户端都将拥有足够的信息来使用您的 API,因为 OAuth2 规范本身描述了代码/令牌资源交互。

于 2015-09-30T15:31:08.613 回答