【问题标题】:Not Able to generate OAuth 2.0 Access Token in APIGee无法在 APIGee 中生成 OAuth 2.0 访问令牌
【发布时间】:2014-03-06 07:28:24
【问题描述】:

我是 APIGee 的新手。 在我的项目中,我使用 OAuth 2.0 进行身份验证。但我无法生成访问令牌。 我已经创建了所有必需的策略,但我仍然总是遇到同样的错误。

这是我用来生成访问令牌的命令。

我正在使用 Postman 来生成访问令牌。

https://<myorgname>test.apigee.net/<myproxyname>/client_credential/accesstoken?grant_type=client_credentials&client_id=<myclient_id>&client_secret=<myclient_secret>’

我也试过 curl

https://<myorgname>test.apigee.net/<myproxyname>/client_credential/accesstoken?grant_type=client_credentials -X POST -d 'client_id=<myclient_id>&client_secret=<myclient_secret>’

它们都给出相同的错误

{ “过错”: { "faultstring": "主机 orgname-test.apigee.net 分类失败", “细节”: { “代码”:“CLASSIFICATION_FAILED” } } }

请帮忙。 提前致谢。

【问题讨论】:

    标签: oauth-2.0 apigee


    【解决方案1】:

    “分类失败”通常意味着 URL 没有解析到任何端点。这可能有几个原因:

    1. 您发送的 URL 错误。您需要发送的 URL 是主机名 + 基本路径 + 路径后缀。当您在 Apigee 中创建代理时,默认情况下,您的基本路径将类似于 /v1/proxyname。确保 /v1 没有丢失。您还可以使用 trace 查看主机名 + 基本路径应该是什么。
    2. 您正在调用 https,但您的代理没有为此设置。确保您的 ProxyEndpoint 中引用了安全虚拟主机。
    3. 您的 HTTP 动词可能不正确。通常您需要使用 POST 来获取 OAuth 令牌。确保你的动词与你的实现相匹配。如果您不使用 CURL 提供动词,则默认为 GET。
    4. 可能不是您的错误的原因,但 OAuth 参数通常通过 x-www-form-urlencoded 有效负载发送,而不是通过命令行。此外,客户端 ID 和密码通常通过基本身份验证传入。默认情况下,Apigee 需要这些位置。有关详细信息,请参阅 OAuth 2.0 specApigee's docs

    【讨论】:

    • 你说得对,迈克,事实上第 4 个选项有效。早些时候,我使用传递 client_Id 和 client_secret 作为表单有效负载,而不是 x-www-form-urlencoded 有效负载。一旦我将其更改为 x-www-form-urlencoded ,它就开始工作了。其次,它适用于 http 和 https 并生成令牌不需要版本号,正如您在第一点中提到的那样。至少它在我的情况下工作。总之非常感谢。 Nitin verma。
    【解决方案2】:

    此错误通常意味着消息处理器无法对请求进行分类 - 分类错误。这可能是由于以下原因之一:

    • 代理未部署到您正在访问的环境中

    • 请求主机标头与部署代理的环境的 hostAlias 不匹配。

    更多详情请关注https://community.apigee.com/questions/13707/unable-to-identify-proxy-for-host.html

    通常,APIGEE 门户中的 OAuth 代理最初既不会部署在“Prod”中,也不会部署在“Test”中。我们必须手动将其部署到任一环境中才能使其正常工作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-08-18
      • 2020-08-10
      • 2016-02-19
      • 1970-01-01
      • 2013-02-23
      • 1970-01-01
      • 1970-01-01
      • 2014-08-02
      相关资源
      最近更新 更多