azure-search-openai-demo启用设置后文件上传失效,报401认证错误
文件上传配置后触发OpenAI 401认证错误
问题详情
已按Git仓库文档步骤配置文件上传功能,执行命令如下:
azd env set AZURE_USE_AUTHENTICATION true python ./scripts/manageacl.py --acl-action enable_acls azd env set AZURE_ENFORCE_ACCESS_CONTROL true azd env set AZURE_ENABLE_GLOBAL_DOCUMENT_ACCESS true azd env set AZURE_ENABLE_UNAUTHENTICATED_ACCESS true azd env set AZURE_ENABLE_GLOBAL_DOCUMENT_ACCESS true azd env set USE_USER_UPLOAD true
启用设置后文件上传功能失效,抛出OpenAI认证错误:
File "/usr/local/lib/python3.11/site-packages/openai/_base_client.py", line 1510, in request
return await self._request(
^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.11/site-packages/openai/_base_client.py", line 1611, in _request
raise self._make_status_error_from_response(err.response) from None
openai.AuthenticationError: Error code: 401 - {'statusCode': 401, 'message': 'Unauthorized. Access token is missing, invalid, audience is incorrect (https://cognitiveservices.azure.com), or have expired.'}
排查与解决步骤
1. 校验OpenAI认证参数
- 确认
AZURE_OPENAI_API_KEY和AZURE_OPENAI_ENDPOINT环境变量已正确配置,密钥未过期、无格式错误。 - 若使用Azure AD令牌认证:检查令牌受众是否匹配Azure OpenAI要求。错误提示中的
https://cognitiveservices.azure.com是认知服务通用受众,而Azure OpenAI的正确受众应为https://cognitiveservices.azure.com/.default或你的OpenAI资源专属端点,需确保令牌生成时指定了正确受众。
2. 修复冲突的访问控制配置
- 你同时启用了
AZURE_ENFORCE_ACCESS_CONTROL true和AZURE_ENABLE_UNAUTHENTICATED_ACCESS true,二者存在逻辑冲突:强制访问控制要求认证,未认证访问无法获取有效令牌。需二选一:- 保留强制访问控制:设置
AZURE_ENABLE_UNAUTHENTICATED_ACCESS false,确保上传请求携带合法认证凭据。 - 允许未认证访问:设置
AZURE_ENFORCE_ACCESS_CONTROL false。
- 保留强制访问控制:设置
- 清理重复的
AZURE_ENABLE_GLOBAL_DOCUMENT_ACCESS true配置,避免冗余。
3. 验证ACL脚本执行效果
- 检查
manageacl.py脚本执行后,目标存储/服务的ACL规则是否正确生效,确保文件上传路径的权限配置无误,避免权限问题间接引发认证异常。
4. 更新OpenAI客户端版本
- 旧版
openai客户端可能存在Azure AD令牌受众匹配bug,升级到最新稳定版本:
pip install --upgrade openai
内容的提问来源于stack exchange,提问作者Srikaran Tirukovela
相关产品推荐
相关产品推荐

