【问题标题】:"Missing grant-type parameter" in Auth0 Delegation endpoint callAuth0 委托端点调用中的“缺少授权类型参数”
【发布时间】:2018-04-11 08:53:38
【问题描述】:

按照 Auth0 的建议,我正在尝试使用以下请求从 Postman 调用 (POST) Auth0 委托端点:

Content-Type: 'application/json'

{
  "client_id":   "{CLIENT_ID}",
  "grant_type":  "urn:ietf:params:oauth:grant-type:jwt-bearer",
  "id_token":    "{YOUR_ID_TOKEN}",
  "target":      "lwTL1rYVfC0KsBUFPeKWY3HvGjbIgdDM",
  "api_type":    "salesforce_api",
  "scope":       "openid"
}

我收到此错误,即使上述请求中包含了 grant_type 参数

{
    "error": "invalid_request",
    "error_description": "Missing grant_type parameter"
}

我在这里做错了什么?

【问题讨论】:

  • 请包含您发送的请求的代码。请删除 Google-oauth 标签,它不会显示您正在使用 Google 的 oauth 服务器
  • 此错误可能是由于未正确设置内容类型而导致的。如果无法测试您的代码,我将无能为力。请包括stackoverflow.com/help/mcve
  • Auth0 docs 表示您做对了,但another page implementing OAuth2 建议 grant_type 可能需要进行 URL 编码,即在每种情况下将 : 替换为 %3A。这有什么帮助吗?
  • Postman 有针对 OAuth 2.0 的具体说明和“帮助者”,如下所述:getpostman.com/docs/postman/sending_api_requests/authorization
  • Nat:DalmTo 的意思是单击链接,阅读有关 MCVE 的信息,然后在您的答案中包含一个。 Nat & @DaImTo:但是,MCVE 注释在这种情况下不适用。问题中提供的发布请求尽可能接近工作的 MCVE,因为不适合提供工作的客户端 ID 或令牌 ID。

标签: oauth oauth-2.0 postman auth0 auth0-delegated-admin


【解决方案1】:

来自 Auth0 的新 OIDC Conformant Authentication 文档:

代表团

鉴于 ID tokens should no longer be used as API tokensrefresh tokens should be used only at the token endpoint,此端点现在被视为已弃用。

目前没有符合 OIDC 的机制来获取第三方 API 令牌。为了便于逐步迁移到新的身份验证管道,仍然可以使用委托来获取第三方 API 令牌。这将在未来的版本中被弃用。

另外,来自 Auth0 的 Using AWS with Tokens 文档:

旧赠款类型

自 2017 年 6 月 8 日起,新的 Auth0 客户无法向其客户添加任何旧授权类型,这是与 Delegation endpoint 一起使用所必需的。旧授权类型仅适用于以前的客户在迁移到新流程时,以避免破坏性更改。要为您的案例找到安全的替代方案,请参阅Secure Alternatives to the Legacy Grant Types

Secure Alternatives to the Legacy Grant Types 链接进一步阅读:

传统资助类型

http://auth0.com/oauth/legacy/grant-type/ro/jwt-bearer


替代方案

默认情况下禁用此功能。如果您希望启用此功能,请contact support 讨论您的使用案例并防止引入安全漏洞的可能性。

更多关于传统授权类型的信息也可以在here找到。


所以,您遇到的问题是委派已被弃用。这意味着 /delegation 端点,更重要的是 jwt-bearer 授权类型,已被弃用。如果您是新客户,那么您就不走运了。如果您是现有客户,则需要联系支持人员以启用它。

至于为什么 Postman 返回神秘的 "Missing grant_type parameter" 错误,而不是使用其他基于浏览器扩展的 REST 客户端得到的更好的 "Grant type 'http://auth0.com/oauth/legacy/grant-type/delegation/id_token not allowed for the client." 错误,你的猜测和我的一样好。

【讨论】:

  • @Nat 如果您有兴趣,可以拨打Tour。另一个有用但很难找到的链接是community moderated FAQ
  • 好的,谢谢罗宾!
猜你喜欢
  • 2020-03-29
  • 2017-12-11
  • 2017-01-14
  • 1970-01-01
  • 1970-01-01
  • 2020-07-14
  • 2018-09-11
  • 2019-05-05
  • 1970-01-01
相关资源
最近更新 更多