ibm-cloud - 具有 API 密钥访问权限的 IBM Cloud Functions
问题描述
我创建了一个 IBM Cloud Function ACTION 并将 Web 操作附加到它。在“API”中,我能够定义要使用“POST https://example.com/hello”访问的函数。经过测试,这一切正常。
现在我想通过向我的一些客户分发 API 密钥来保护这个 API。在 API 管理中,我可以通过激活Require applications to authenticate via API key
滑块看到这是可行的。激活后,我还可以对per-key basis
.
问题是:如何创建 API 密钥?以及如何调用我的端点?
到目前为止,我一直在“管理 > 访问(IAM)”,然后IBM Cloud API keys
为我创建了一个 API 密钥(这不是我想要的,因为这是我所有具有管理员权限的帐户的 API 密钥,我想要的是一个 API 密钥,允许我的用户只调用我的 API)。使用我的 API 密钥,我在 curl 中这样调用 API:
curl -X POST "https:// example.com/hello" -H "X-IBM-Client-Id: <MY-API-KEY>"
尽管如此,我还是得到了一个未经授权的 401 ......所以我想有什么问题,但我不知道到底是什么。
解决方案
你说的对。您创建的密钥适用于您的所有命名空间。以下是为您的 API 端点创建密钥的文档 - https://cloud.ibm.com/docs/api-management?topic=api-management-keys_secrets
这有点令人困惑 :(。在您创建 API 端点并将其映射到操作之后。您不必启用作为 Web 操作即可与 API 网关一起使用。
- 您可以启用身份验证,然后保存 API。这个很重要。文档说
Note: You cannot see the tabs until you save your application or API for the first time.
- 现在您可以转到“共享”选项卡并仅为该 API(而不是您的命名空间)创建一个新的 API 密钥
推荐阅读
- javascript - 将对象数组从 Ajax 函数传递到 Web 服务
- assembly - 设置寄存器的 LSB(最低有效位)2 位是什么意思?
- python - OpenAI 基线中的 LazyFrames 如何节省内存?
- typescript - 量角器/打字稿(es6):语法错误:无法在模块外使用导入语句
- reactjs - 使用带有反应本机 Web 的 ui 库
- javascript - 我如何从书路中解决问题以在第 78 页做出反应?对于表格组件中的一种方法,我一直在取消定义
- php - 如何让 chrome 浏览器在移动设备上显示 HTML 输入字段选择的文件以及它的扩展名
- javascript - 需要使这个对象数组在 javaScript 中可重用
- javascript - 如何在抓取网页时从 var 股票中获取这些数字?
- google-app-engine - Google App Engine 手动缩放防止重启