近日,多位开发者在技术社区反映,在尝试从Web服务器的.well-known文件夹下获取microsoft-identity-association.json文件时,服务器返回了空的JSON响应({}或空对象),而非预期的验证内容。该问题直接影响了Microsoft Entra ID(原Azure Active Directory)域所有权验证流程,可能导致多租户应用程序集成、自定义域绑定以及Microsoft 365服务配置出现异常。
背景:microsoft-identity-association.json的作用
microsoft-identity-association.json是微软用于验证应用程序域所有权的一种标准机制。当开发者在Microsoft Entra ID中注册应用程序并希望使用自定义域(如auth.example.com)时,微软会要求将该JSON文件放置在域名根目录的.well-known文件夹下。文件内容包含应用程序ID、租户ID等验证信息,微软服务器会定期抓取并校验。若文件丢失、内容错误或返回空响应,域所有权验证将失败,进而导致登录令牌签发、跨域认证等核心功能中断。
问题现象与影响
据社区报告,当访问https://<yourdomain>/.well-known/microsoft-identity-association.json时,curl或浏览器返回了状态码200(成功),但响应体为空对象{}或完全空白。这与标准响应格式(应包含associatedApplications等字段)不符。
该问题的影响面较广: - 应用程序集成失败:基于OAuth 2.0/OIDC的多租户应用无法完成域验证,用户登录时可能遇到“域未验证”错误。 - Microsoft 365服务配置受阻:自定义域名下的邮箱、Teams、SharePoint等服务可能无法正常解析。 - CI/CD流水线故障:自动化部署脚本中若包含域验证步骤,会因空响应而中断。
可能的原因分析
经过初步调查,空JSON响应可能是由以下几个因素单独或共同导致:
-
文件缺失但Web服务器返回200:某些服务器(如Apache、Nginx)在访问不存在的文件时,可能因配置了
try_files或fallback规则而返回空白页面,而非404错误。更常见的场景是开发者仅创建了空的JSON文件(如直接输出{}),却未填写正确的内容。 -
Web服务器配置错误:
.well-known目录被某些安全策略(如禁止访问点号开头的文件夹)阻止,或是被反向代理、CDN缓存了错误的内容。此外,若服务器未正确设置Content-Type: application/json,浏览器或微软的验证服务可能无法解析。 -
CORS或HTTPS强制跳转:如果站点开启了HTTPS重定向,但用户使用了HTTP版本进行访问,可能导致重定向后的请求被截断。同时,若目标域缺少跨域资源共享(CORS)头,微软的验证服务在跨域时可能收到空响应。
-
缓存问题:CDN或浏览器本地缓存了之前的错误响应(如
{}),导致后续请求始终返回空结果。尤其当开发者先放置了空文件后补救,但缓存未清除。 -
文件权限与路径问题:
microsoft-identity-association.json未放置在正确的/.well-known/目录下,或文件属主、权限设置不当(如644),导致微软服务器无法读取内容。
解决方案与建议
针对上述原因,开发者可采取以下步骤进行排查与修复:
- 检查文件实际内容:使用
curl -v https://yourdomain/.well-known/microsoft-identity-association.json查看响应头及body。确认状态码、Content-Type以及响应体是否包含正确的JSON(示例:{"associatedApplications":[{"applicationId":"00000000-0000-0000-0000-000000000000"}]})。 - 验证服务器配置:禁用fallback规则,确保对
.well-known下的文件请求直接返回文件内容,而非索引页。 - 清除缓存:在CDN控制台或源服务器上强制清除相关文件的缓存,并设置
Cache-Control: no-cache。 - 使用在线工具测试:利用微软官方提供的域验证诊断工具(如
https://developer.microsoft.com/en-us/graph/graph-explorer或PowerShell脚本Test-MgApplication)重复验证。
官方回应与后续
截至目前,微软尚未就空JSON响应问题发布官方声明,但社区推测该现象多为开发者配置疏忽所致。建议受影响用户优先检查文件完整性及Web服务器日志,同时关注Microsoft Entra ID文档中关于“.well-known”配置的最新要求(https://learn.microsoft.com/en-us/entra/identity-platform/well-known)。对于仍无法解决的情况,可向微软支持提交工单,或参与GitHub上的相关讨论([Issues #1234])。