Azure AI Search密钥认证禁用报错:代码与服务端如何调整?
解决Azure AI Search密钥认证禁用导致的403错误
问题原因
你遇到的HTTP 403 (AuthenticationTypeDisabled)错误,是因为你的Azure AI Search资源禁用了密钥认证,但代码中仍使用API密钥作为身份验证方式,导致访问被拒绝。
解决方案
有两种可行的修改方式,可根据场景选择:
方案1:启用Azure AI Search的密钥认证(快速测试场景)
直接在Azure门户开启密钥认证,无需修改代码:
- 登录Azure门户,定位到你的Azure AI Search资源
- 进入左侧导航栏的「密钥」页面
- 在「密钥认证」区域,勾选「启用密钥认证」选项
- 点击页面顶部的「保存」按钮,等待设置生效后,原代码即可正常运行
方案2:改用托管身份认证(生产环境推荐)
如果出于安全考虑不想启用密钥认证,可配置托管身份进行访问,需要同时修改Azure服务配置和代码:
第一步:Azure服务配置
- 给你的Azure OpenAI资源启用系统托管身份:
- 进入Azure OpenAI资源的「身份」页面,切换到「系统分配」标签
- 勾选「状态」为「开启」,点击「保存」
- 给托管身份分配Azure AI Search的访问权限:
- 进入Azure AI Search资源的「访问控制(IAM)」页面
- 点击「添加角色分配」,选择「搜索数据读取者」或「搜索服务参与者」角色(根据需求选择)
- 在「成员」标签中,选择「托管身份」,添加刚才启用的Azure OpenAI系统托管身份,完成分配
第二步:修改代码
将原代码中使用API密钥的认证方式替换为托管身份认证:
- 新增命名空间引用:
using Azure.Identity;
- 修改
AzureSearchChatDataSource的认证配置:
options.AddDataSource(new AzureSearchChatDataSource() { Endpoint = new Uri(searchEndpoint), IndexName = searchIndex, // 替换为托管身份认证 Authentication = new DataSourceAuthentication(new DefaultAzureCredential()), });
DefaultAzureCredential会自动适配不同环境的身份验证:本地开发时使用Azure CLI/Visual Studio登录的身份,生产环境中使用Azure OpenAI的系统托管身份。
内容的提问来源于stack exchange,提问作者sukesh
相关产品推荐
相关产品推荐

