出于身份验证目的,我正在尝试配置Apache反向代理以匹配git客户端使用HTTP后端访问的URI。¹为此,我想在代理上的URI上匹配HTTP请求,并以不同的方式对待它们。后一部分没问题,但是我很难找到一个合适的URI模式/列表来匹配那些请求。
到目前为止,我发现的是:
GIT_CURL_VERBOSE=1
)上进行了实验。到目前为止观察到:
<base-url>/info/refs?service=git-upload-pack
上获取<base-url>/info/refs?service=git-receive-pack
上获取<base-url>/git-upload-pack
<base-url>/git-receive-pack
Documentation in the Git book on transfer protocols,但这在设计上似乎不完整:
本节包含传输协议的非常基本的概述。该协议包括许多其他功能,例如multi_ack或边带功能,但涵盖这些功能超出了本书的范围。
在the manpage of git-http-backend中的建议的Apache配置。
RewriteCond %{QUERY_STRING} service=git-receive-pack
这样的部分假设,在同一个VirtualHost上没有其他服务,因为这样做会破坏非Git资源,除非我添加了额外的要求,即没有查询字符串的URI匹配〜 /info/refs$
。仅列出上述模式也让我担心的是:
因此,理想情况下,我想指出一些文档/代码,其中显示了git http客户端 可以对其进行操作的URI的完整概述。只要它是权威的,它可能就是一个简单的正则表达式-无论如何我最终还是要寻找的。 p>
¹我正在尝试使用Apache作为反向代理身份验证来执行SSO登录,并通过HTTPS与常规网页对Git进行不同类型的身份验证。该应用程序Gerrit Code Review在具有SSO身份验证并启用了auth.trustContainerAuth
的公共URL前缀上同时提供了页面和Git存储库,因此我在例如^/git/.*
的联机帮助页上建议使用git-http-backend
。
答案 0 :(得分:1)
智能和哑HTTP的路径列表在the source code中。请注意,它不包含查询参数或内容类型。
请注意,目前正在进行将SHA-256支持添加到Git的工作,因此,现在接受40个字符的十六进制字符串的任何事物将来也将处理64个字符的十六进制字符串。