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

如何使用Token而非API密钥认证Azure SearchClient?

Azure SearchClient 非API密钥认证方式说明

当然可以用令牌或其他Azure AD认证方式替代API密钥,以下是几种常用方案:

Azure AD 默认凭据认证

适合在Azure环境(VM、函数应用、AKS等)或本地开发场景,会自动从环境变量、Azure CLI、VS Code、本地Azure账户等渠道获取有效凭据,无需手动管理密钥或令牌。

代码示例:

from azure.search.documents import SearchClient
from azure.identity import DefaultAzureCredential
import os

service_endpoint = os.environ["AZURE_SEARCH_SERVICE_ENDPOINT"]
index_name = os.environ["AZURE_SEARCH_INDEX_NAME"]

credential = DefaultAzureCredential()
search_client = SearchClient(service_endpoint, index_name, credential=credential)

Azure AD 服务主体认证

如果需要指定特定的服务主体进行认证,可以使用客户端ID、租户ID和客户端密钥来创建凭据,适合自动化脚本或固定身份的服务场景。

代码示例:

from azure.search.documents import SearchClient
from azure.identity import ClientSecretCredential
import os

tenant_id = os.environ["AZURE_TENANT_ID"]
client_id = os.environ["AZURE_CLIENT_ID"]
client_secret = os.environ["AZURE_CLIENT_SECRET"]
service_endpoint = os.environ["AZURE_SEARCH_SERVICE_ENDPOINT"]
index_name = os.environ["AZURE_SEARCH_INDEX_NAME"]

credential = ClientSecretCredential(tenant_id, client_id, client_secret)
search_client = SearchClient(service_endpoint, index_name, credential=credential)

交互式用户认证

本地开发调试时,可以通过弹出浏览器让用户登录Azure账户获取令牌,适合临时测试或需要用户身份权限的场景。

代码示例:

from azure.search.documents import SearchClient
from azure.identity import InteractiveBrowserCredential
import os

service_endpoint = os.environ["AZURE_SEARCH_SERVICE_ENDPOINT"]
index_name = os.environ["AZURE_SEARCH_INDEX_NAME"]

credential = InteractiveBrowserCredential()
search_client = SearchClient(service_endpoint, index_name, credential=credential)

注意事项

使用上述Azure AD认证方式时,必须确保对应的身份(用户、服务主体等)已被授予Azure Cognitive Search的相关角色(如Search Index Data Contributor、Search Index Data Reader),否则会触发权限不足的错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 14:46:00