我们有一个正确响应的已部署 API;但是,它为沙盒与生产配置了不同的 URL 端点。
当我向 API Manager 发出请求时,无论我提交了哪个 Bearer 令牌,它始终是生产端点。身份验证工作就像我提交了无效的承载令牌一样我收到未经身份验证的错误。
错误配置可能在哪里的任何线索?
(版本 1.4.0)
在查看您提到的问题时,我认为您已使用“生产”范围的访问令牌来调用您的 SANDBOX 端点。
在创建 API 时将两个不同的端点定义为沙盒 URL 和生产 URL 后,要调用它们,您需要根据其范围 [PRODUCTION/SANDBOX] 使用不同的访问令牌。
要从您的 API 调用 SANDBOX 端点,您需要使用 SANDBOX 访问令牌。要查找这些生产和沙盒端点相关的密钥,您可以导航到 APIStore->我的订阅页面并查看特定订阅中“生产”和“沙盒”部分下的密钥。在每个“生产/沙盒”密钥部分下订阅页面,您将看到一个单独的访问令牌和消费者密钥/秘密。
尝试调用 API 的 SANDBOX 端点,在 APIStore 的“我的订阅”页面中使用上面显示的沙箱访问令牌,或者您可以使用基于沙箱的消费者密钥/秘密来生成沙箱范围内的用户令牌 [1] 并使用这些令牌来调用您的 API基于沙盒的端点。
生成沙箱范围用户令牌的示例 cURL 请求如下所示;curl -k -d "grant_type=password&username=xxx&password=xxx&scope=SANDBOX" -H "授权:基本 base64encoded_SANDBOX_based_consumer key:secret, Content-Type: application/x-www-form-urlencoded"https://ip:8243/token
[1] http://docs.wso2.org/wiki/display/AM140/Token+APIs#TokenAPIs-GeneratingusertokensGenerating