MS-OFBA在Mac版Office 2016中无法正常工作的问题求助
看起来你这套WebDAV+IdentityServer4的认证流程在Windows上跑没问题,但Mac旧版Office掉链子了——我之前也碰到过类似的场景,结合对Mac Office 2016的了解,给你分析下可能的原因和解决思路:
一、Mac Office 2016的302跳转固有坑点
你用的16.11.1是2018年的老版本,这个版本的Office for Mac在处理表单认证后的302跳转时,有几个天生的行为限制:
- 跨域/子域跳转拦截:如果
/account/callback返回的302目标URL和之前的IdentityServer认证页面不在同一子域,它可能不会自动跟随跳转,不像Windows版Office处理得那么灵活 X-FORMS_BASED_AUTH_RETURN_URL解析容错低:这个头部的格式稍有差错(比如编码冗余、域名不匹配),Mac Office就可能不认,直接终止跳转流程
二、Cookie设置的兼容性陷阱
后续WebDAV请求没带Cookie,大概率是Cookie属性不符合Mac Office的老版本要求:
- SameSite属性不兼容:旧版Mac Office完全不支持
SameSite属性,如果你的Cookie加了SameSite=Strict或Lax,会直接被忽略,根本存不下来。建议先把这个属性去掉,或者改成SameSite=None; Secure(必须是HTTPS环境才行) - 域名与路径设置错误:Cookie的
Domain要设为根域名(比如.example.com),而不是webdav.example.com,这样Office访问WebDAV域名时才能带上;Path必须设为/,确保所有WebDAV路径都能匹配到这个Cookie - Secure属性缺失:如果你的站点是HTTPS,一定要给Cookie加上
Secure属性,不然Mac Office不会保存这个Cookie
三、自定义回调端点的响应要“极简”
/account/callback返回302的时候,别加多余的非标准响应头——有些额外头会干扰Office的跳转逻辑。另外,Location头的URL必须完全标准化:
- 确保包含完整的
https://前缀 - 检查URL编码是否正确,避免出现双重编码(比如
%2520这类冗余编码)
四、版本bug是硬伤,优先尝试升级
这个16.11.1版本确实有不少WebDAV认证的已知bug,微软在后续的Office 2016更新以及365版本里修复了很多这类问题。如果条件允许,先升级到Office 2016的最新可用版本,或者直接转到Office 365,很多时候升级就能解决问题
快速排查步骤
- 抓包确认细节:用Charles在Mac上抓包,看看
/account/callback的302响应是否正常、Location头是否正确,有没有请求发到/account/success,Cookie有没有被正确设置和携带 - 简化跳转流程:把
/account/success直接改成WebDAV文档的父路径(比如https://webdav.example.com/documents/),跳过中间页面,测试Office能不能直接加载文档 - 调整Cookie属性:临时把Cookie改成
Secure; HttpOnly; Domain=.example.com; Path=/,去掉SameSite属性,验证是否能被Office正确携带
内容的提问来源于stack exchange,提问作者Stuart Whiteford
相关产品推荐
相关产品推荐

