配置有 API 密钥的 KRL 模块

发布于 2024-11-10 16:29:49 字数 305 浏览 2 评论 0原文

我正在为 API 编写 KRL 模块。 API 需要访问密钥,并且需要由调用我的模块的规则集提供。我的模块包含模块内测试规则使用的访问密钥。

使用我的模块的规则集提供如下访问密钥:

use module a421x99 alias SuperModule with access_key = "01234567";

1 - 如何编写我的模块,以便访问密钥不会泄漏到生成的 Javascript 中?

2 - 假设调用规则集不提供 access_key。如何保护我放入模块中进行测试的访问密钥?

I'm writing a KRL module for an API. The API requires an access key, and that needs to be provided by the ruleset that calls my module. My module includes my access key that is used by the in-module test rules.

The ruleset that uses my module provides the access key like this:

use module a421x99 alias SuperModule with access_key = "01234567";

1 - How do I write my module so that the access key doesn't leak into the generated Javascript?

2 - Suppose the calling ruleset doesn't provide an access_key. How do I protect my own access key that I put in the module for testing?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

握住我的手 2024-11-17 16:29:50

首先,您应该在 meta 中使用 key 块包含 API 密钥,如下所示:

key s3 {
  "access_key" : "--access_key--"
}

这比存储或传递密钥更好在普通字符串中。

第二,您的模块需要在中使用configure using行(我假设您已经有一个)。传递空哈希作为默认值将阻止调用该模块的规则集使用模块中的硬编码密钥。

configure using s3keys = {}

最后,在全局块中执行如下操作:

usekeys = s3keys || keys:s3();

这告诉 KRL 使用调用规则集传入的 s3keyss3如果您的模块正在被自身使用,则模块自己的 meta 块中的 code> 键。即使有人使用您的模块,他们也永远不会获得您的 keys:s3(),因为您在 configure using 行中设置了默认值。

有了 usekeys 后,您就可以 pick() 取出您需要的部分:

access_key = usekeys.pick("access_key");

Sam 的 Twilio 模块 是一个参考示例的好地方。

First of all, you ought to be including API keys using a key block in the meta, like this:

key s3 {
  "access_key" : "--access_key--"
}

That's better than storing or passing keys in plain strings.

Second, your module needs a configure using line in the meta (I'm assuming you already have one). Passing an empty hash as the default value will prevent your hard-coded key in the module from being used by a ruleset calling the module.

configure using s3keys = {}

Finally, in the global block do something like this:

usekeys = s3keys || keys:s3();

This tells KRL to use either the s3keys that was passed in by the calling ruleset or else the s3 key from the module's own meta block if your module is being used by itself. Even if someone uses your module, they will never get your keys:s3() because of the default value you set in the configure using line.

Once you have usekeys, you can pick() out the pieces you need:

access_key = usekeys.pick("access_key");

Sam's Twilio module is a great place to refer for examples.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文