You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过DefaultAzureCredential获取Azure Search服务的AzureKeyCredential

实现方案

前置依赖安装

首先安装所需的Azure SDK包:

npm install @azure/identity @azure/arm-search @azure/search-documents

实现代码

核心逻辑说明

DefaultAzureCredential可以直接用来鉴权访问Azure资源管理器(ARM)接口,我们通过ARM提供的搜索服务管理接口读取管理员API密钥,再用拿到的密钥初始化你需要的SearchIndexClient即可。
完整代码示例:

const { DefaultAzureCredential } = require("@azure/identity");
const { SearchManagementClient } = require("@azure/arm-search");
const { SearchIndexClient, AzureKeyCredential } = require("@azure/search-documents");

async function getSearchIndexClient() {
  // 复用已通过az login鉴权的凭证
  const credential = new DefaultAzureCredential();

  // 替换为你的实际Azure资源配置
  const config = {
    subscriptionId: "你的Azure订阅ID",
    resourceGroupName: "搜索服务所属的资源组名称",
    searchServiceName: "你的认知搜索服务名称"
  };
  const searchEndpoint = `https://${config.searchServiceName}.search.windows.net`;

  // 调用ARM接口拉取搜索服务管理员密钥
  const searchMgmtClient = new SearchManagementClient(credential, config.subscriptionId);
  const adminKeys = await searchMgmtClient.adminKeys.get(config.resourceGroupName, config.searchServiceName);
  // 可按需选择主密钥或次密钥
  const apiKey = adminKeys.primaryKey;

  // 按你需要的方式初始化索引客户端
  return new SearchIndexClient(searchEndpoint, new AzureKeyCredential(apiKey));
}

// 调用示例
getSearchIndexClient()
  .then(client => {
    // 后续直接使用client操作搜索索引即可
    console.log("搜索索引客户端初始化完成");
  })
  .catch(err => {
    console.error("初始化失败:", err);
  });

注意事项

  • 当前az login登录的账号,需要在对应搜索服务的IAM权限配置中被分配至少搜索服务参与者角色,才有权限读取管理员API密钥
  • 如果你不需要显式使用AzureKeyCredential初始化,也可以直接将DefaultAzureCredential传入SearchIndexClient的第二个参数,无需额外拉取密钥,适配RBAC权限控制的场景

内容的提问来源于stack exchange,提问作者Steve Drake

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 13:39:03