无法在APIGee中生成OAuth 2.0访问令牌

时间:2014-03-06 07:28:24

标签: oauth-2.0 apigee

我是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的分类失败”,           “细节”:{               “code”:“CLASSIFICATION_FAILED”           }       }}

请帮忙。 提前谢谢。

2 个答案:

答案 0 :(得分:2)

“分类失败”通常表示URL未解析到任何端点。这有几个原因:

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

答案 1 :(得分:2)

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

  • 代理未部署到您正在使用的环境

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

有关https://community.apigee.com/questions/13707/unable-to-identify-proxy-for-host.html

的更多详情

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