生成不带库的租户令牌
在不使用库的情况下生成租户令牌是可能的,但建议不要这样做。本指南概述了必要的步骤。
整个过程需要创建令牌头、准备至少有一组搜索规则的数据负载,然后使用 API 密钥对令牌进行签名。
准备令牌头
令牌头必须指定JWT
类型和加密算法。受支持的租户令牌加密算法为HS256
、HS384
和HS512
。
{
"alg": "HS256",
"typ": "JWT"
}
构建令牌有效载荷
首先,创建一组搜索规则
{
"INDEX_NAME": {
"filter": "ATTRIBUTE = VALUE"
}
}
接下来,找到你的默认搜索 API 密钥。查询 获取 API 密钥端点 并检查 uid
字段以获取 API 密钥的 UID
curl \
-X GET 'http://127.0.0.1:7700/keys/API_KEY' \
-H 'Authorization: Bearer MASTER_KEY'
为了最大程度地提高安全性,你也应该为租户令牌设置一个到期日期。以下 Node.js 示例将令牌配置为在创建后 20 分钟后过期
parseInt(Date.now() / 1000) + 20 * 60
最后,将 payload 的所有部分组装成一个对象
{
"exp": UNIX_TIMESTAMP,
"apiKeyUid": "API_KEY_UID",
"searchRules": {
"INDEX_NAME": {
"filter": "ATTRIBUTE = VALUE"
}
}
}
请参阅 令牌 payload 参考 以了解更多有关每个 payload 字段的要求的信息。
对 header 和 payload 进行编码
然后你必须将 header 和 payload 都编码为 base64
,连接它们,并使用你选择的加密算法对其进行签名来生成令牌。
使用租户令牌进行搜索请求
在对令牌进行签名后,你可以使用它来像使用 API 密钥一样进行搜索查询。
curl \
-X POST 'http://127.0.0.1:7700/indexes/patient_medical_records/search' \
-H 'Authorization: Bearer TENANT_TOKEN'