【问题标题】:how I send HTTP header with "grant_type=client_credentials"我如何使用“grant_type=client_credentials”发送 HTTP 标头
【发布时间】:2016-12-31 07:57:02
【问题描述】:

我正在尝试在 REST API 上注册新用户,请求应该是这样的:

POST /api/oauth/token HTTP/1.1
Content-Type: application/x-www-form-urlencoded
Authorization: Basic YW75cm9pZC12tb28Jp8bGU6c2Vj

grant_type=client_credentials&scope=write

问题1:授权码是静态的,每次请求新用户时都必须相同,还是每次都要生成一个新的base46码?

问题 2:grant_type.... 是参数请求还是正文(我应该将其与正文一起发送还是作为参数发送)

非常感谢提前!

【问题讨论】:

  • 这些问题需要针对你正在使用的公司的谁的API

标签: javascript rest http https


【解决方案1】:

问题 1: 通常您应该使用公共令牌(在本例中为基本 oauth 令牌),当此令牌过期时,您应该更新它。在您的 api 文档中,应该存在使令牌过期并执行令牌刷新的时间。

问题 2:查看您的信息“grant_type=client_credentials&scope=write”,这是一个正文参数请求(是一个带有正文的发布请求)

【讨论】:

    【解决方案2】:

    首先,根据您提供的请求代码:

    POST /api/oauth/token HTTP/1.1
    Content-Type: application/x-www-form-urlencoded
    Authorization: Basic YW75cm9pZC12tb28Jp8bGU6c2Vj
    
    grant_type=client_credentials&scope=write
    

    在我看来,request 是用于获取客户端(应用程序)访问令牌(使用 OAuth Client Credentials Grant),而不是 request 来注册用户。所以,我的回答是基于这个假设。

    问题一:授权码是静态的,每次请求新用户时都必须相同,还是每次都生成新的base46码?

    对于OAuth Client Credentials GrantAuthorization 标头包含客户端身份验证信息(例如,client_idclient_secret)。您通常通过向 API 提供者注册您的客户端(应用程序)来获取此信息。 所以答案是,是的,只要信息(client_id/secret)不改变/过期,它就应该是静态的。

    问题 2:grant_type.... 是参数请求还是正文(我应该将其与正文一起发送还是作为参数发送)

    OAuth spec指定grant_type参数写在HTTP请求实体体中,所以应该在请求体中发送。但是,某些实现也允许在 url 中传递 grant_type 参数。

    【讨论】:

      猜你喜欢
      • 2018-10-04
      • 1970-01-01
      • 1970-01-01
      • 2012-01-09
      • 2021-01-31
      • 2019-05-25
      • 2014-09-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多