跳到主要内容

认证

IDMP SDK 使用 Bearer Token(JWT) 进行认证。根据部署方式的不同,获取 Token 的方式有所区别。

企业版认证

企业版(自部署)通过用户名和密码登录接口获取 Token。

import org.openapitools.client.ApiClient;
import org.openapitools.client.api.UserResourceApi;
import org.openapitools.client.model.LoginReqDTO;
import org.openapitools.client.model.LoginRspDTO;

ApiClient apiClient = new ApiClient("Authorization");
apiClient.setBasePath(System.getenv("IDMP_HOST"));

UserResourceApi userApi = apiClient.buildClient(UserResourceApi.class);
LoginReqDTO req = new LoginReqDTO();
req.setLoginName(System.getenv("IDMP_USERNAME"));
req.setPassword(System.getenv("IDMP_PASSWORD"));

LoginRspDTO rsp = userApi.apiV1UsersLoginPost(req);
apiClient.setBearerToken(rsp.getToken()); // 后续请求自动携带此 Token

云服务版认证

云服务版的认证流程与企业版不同,需要同时携带两个令牌:Authorization(Bearer Token)和 Access-token

获取令牌的步骤:

  1. 通过浏览器登录云服务(https://<实例ID>.idmp.taosdata.com
  2. 打开浏览器开发者工具 → Network 标签页
  3. 刷新页面,找到任意一个对后端 API 的请求(如 /api/v1/permissions/menus
  4. 复制以下三项值:
项目说明
请求 URL 的 host格式为 https://<实例ID>.idmp.taosdata.com
请求头 Access-token云服务专用认证令牌
请求头 AuthorizationBearer Token,去掉 Bearer 前缀后使用
  1. 将三项值设置为环境变量:
export CLOUD_HOST=https://<实例ID>.idmp.taosdata.com
export CLOUD_TOKEN=<Access-token 的值>
export BEARER_TOKEN=<Authorization Token 的值(不含 Bearer 前缀)>
  1. 在代码中初始化客户端:
ApiClient apiClient = new ApiClient("Authorization");
apiClient.setBasePath(System.getenv("CLOUD_HOST"));
apiClient.setBearerToken(System.getenv("BEARER_TOKEN"));
// 额外设置云服务专用 Access-token 请求头
apiClient.addDefaultHeader("Access-token", System.getenv("CLOUD_TOKEN"));

Token 有效期与刷新

部署方式Token 有效期刷新方式
企业版{TOKEN_TTL}(请参阅服务端配置)重新调用登录接口获取新 Token
云服务版由浏览器会话控制重新通过浏览器登录后从开发者工具获取
提示

建议将 Token 的获取和刷新封装为独立的工具函数,并在收到 401 Unauthorized 响应时自动触发刷新逻辑。

安全建议

  • 不要将 Token、用户名或密码硬编码在源代码中
  • 使用环境变量或密钥管理服务(如 Vault、AWS Secrets Manager)存储凭证
  • 在生产环境中使用 HTTPS 连接 IDMP 服务器