通过 https 和 Kerberos(Windwos 集成)身份验证访问时,Subversion 存储库会抛出 HTTP 403 错误请求

通过 https 和 Kerberos(Windwos 集成)身份验证访问时,Subversion 存储库会抛出 HTTP 403 错误请求

我们在服务器端使用不同版本的操作系统和 Subversion 时遇到了这个问题,以下细节相同:

  • 我们使用 https 协议访问 SVN 存储库。
  • 我们使用了 Apache HTTPD + mod_dav_svn + mod_authz_svn。我们还使用了 mod_auth_kerb 或 mod_auth_gssapi。
  • 用户通过 Windows 集成身份验证进行身份验证。特定组的成员被允许访问 SVN 存储库。
  • 客户端是 Windows 工作站,具有相当新的 SVN 版本(1.13-1.14)。

一些客户端运行正常,其他客户端在访问 SVN 存储库时收到 HTTP 400 Bad Request 错误。在服务器端,错误表现为 SSL 错误日志中的“NO AUTH DATA 客户端未发送任何身份验证标头”消息。

一些用户始终能够成功访问 SVN 存储库,而其他用户则始终无法访问。

答案1

事实证明,成功用户和失败用户之间的区别在于他们所属的 LDAP 组数量。失败用户是更多组的成员。

看起来在某个时候所有这些组名都是通过 HTTP 请求标头从客户端发送到服务器的……其大小有限制。

解决方案是使用以下指令来增加 HTTP 请求标头字段大小:

LimitRequestFieldSize 12392

看一下该指令的官方 Apache HTTPD 文档

LimitRequestFieldSize 指令允许服务器管理员设置 HTTP 请求标头字段允许大小的限制。服务器需要此值足够大,以容纳来自正常客户端请求的任何一个标头字段。正常请求标头字段的大小在不同的客户端实现中会有很大差异,这通常取决于用户配置浏览器以支持详细内容协商的程度。SPNEGO 身份验证标头最多可包含 12392 个字节。

编辑:事实证明 12392 字节并不一定足以满足所有要求,因此我们将限制提高到 65536。只是为了确保万无一失。

相关内容