当使用带有客户端证书和 FakeBasicAuth 的 Apache2 时,我该如何在 中引用用户AuthzSVNAccessFile
?用户名包含奇怪的字符,如/CN=Damon Wischik
,并且 authz 不喜欢=
用户名中的字符。
我的 Apache 配置有以下几行
SSLVerifyClient require
SSLOptions +FakeBasicAuth
这意味着用户提供了客户端证书,Apache 从证书中获取主题行(例如)/CN=Damon Wischik
,并将其用作用户名,将“password”用作密码。我htpasswd
为这个用户添加了一个条目,他可以愉快地登录。
现在我想为存储库添加细粒度的访问控制,但我不知道如何在 中引用此用户名AuthzSVNAccessFile
。我开始使用
[/]
* = r
并且用户能够读取存储库的内容。我尝试写入
[/]
* =
"/CN=Damon Wischik" = r
用户收到“禁止访问”提示,Apache 错误日志显示
[date] [error] [client ip] Failed to load the AuthzSVNAccessFile: The character 'D' in rule '"/CN' is not allowed in authz rules
[date] [error] [client ip] Access denied: '/CN=Damon Wischik' GET foo:/
在 authz 文件中,转义用户名中这些奇怪字符的正确方法是什么?
答案1
(感谢 subversion-users 邮件列表上的 Stefan Sperling 提供的答案。)RTFM!来自红豆书第六章,
Subversion 1.5 为访问文件语法带来了几个有用的功能 - 用户名别名、身份验证类令牌和新的规则排除机制 - 所有这些功能进一步简化了访问文件的维护。
以下是在这种特殊情况下使用别名的方法。
[aliases]
djw = /CN=Damon Wischik
[/]
* =
&djw = r