在很长久的一段时间里,微软的 SharePoint(包括 OneDrive)都可以以 WebDAV 的方式进行挂载,这种方式非常简单,只需要有账号密码即可,无需任何 API 授权。因此对于无 API 权限的 SharePoint 空间而言,是唯一的挂载方式。
尤其是 A1 许可订阅的未被官方接管的 Microsoft365 全局,由于没有被接管,也就没有管理员,因此无法进行 API 的任何操作,只能通过 WebDAV 来挂载 OneDrive / SharePoint。
这种挂载方式实际上是通过基于 SAML 的联合身份认证 FedAuth 来实现的。FedAuth 这个 Cookie 又需要通过微软的 Relaying Party Suite (RPS) 服务来更新,从而才保持了 WebDAV 的持久可用性。
但是,微软近期将会完全弃用 RPS,预计会在今年10月底完成。这意味着需要 RPS 来更新 FedAuth Cookie 的方案完全失效。
虽然这并不意味着就无法通过 WebDAV 的方式来挂载了,但是已经没有其他现成的方案可以用来更新 FedAuth Cookie 了。
太长不看的通俗版本
rclone 和 openlist 挂载 SharePoint WebDAV 出现 403 错误,是微软更新了认证方式导致的,不是软件本身的问题导致的。
解决方案
通过其他方式来替代 RPS 刷新 FedAuth Cookie 即可,这个实现起来应该不难,看下有没更方便点的方法,能获取到 cookie 并加到请求头里就可以了,不过这个 cookie 的有效期只有 5 天。
我会另外写一篇如何在 rclone 配置里添加这个请求头从而使 WebDAV 继续可用的帖子。
参考
https://forum.rclone.org/t/suddenly-getting-403-forbidden-403-forbidden-doing-lsf/52473
https://forum.rclone.org/t/sharepoint-synchronization/52431
感谢分享
感谢分享
懂了,马上去openlist水一个pull request
@twoonefour #3 方法已发
https://www.nodeseek.com/post-453115-1
顺便看下rclone吧,都是go写的
感谢分享,可以通过自建api方式挂载吗
@夜听风雨 #5 无接管就是无api,只能自己另外实现了,定时获取cookie来保持连接有效性
感谢分享,难怪一直403