При использовании Apache2 с клиентскими сертификатами и FakeBasicAuth, как мне обращаться к пользователям в AuthzSVNAccessFile
? В именах пользователей есть забавные символы, например /CN=Damon Wischik
, и authz не любит =
символ в именах пользователей.
В моей конфигурации Apache есть строки
SSLVerifyClient require
SSLOptions +FakeBasicAuth
Это означает, что пользователь предоставляет сертификат клиента, Apache берет строку темы из сертификата, например. /CN=Damon Wischik
, и использует это как имя пользователя и «пароль» как пароль. Я добавил 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?
(Спасибо Стефану Сперлингу из списка рассылки пользователей подрывной деятельности за ответ.) RTFM! Из книга красных бобов глава 6,
Subversion 1.5 привнесла несколько полезных функций в синтаксис файла доступа - псевдонимы имени пользователя, маркеры класса аутентификации и новый механизм исключения из правил - все это еще больше упростило обслуживание файла доступа.
Вот как использовать псевдонимы в этом конкретном случае.
[aliases]
djw = /CN=Damon Wischik
[/]
* =
&djw = r