2012-05-15 3 views
1

Я установил сервер меркуриона через SSL. В конфигурационном файле apache я настроил аутентификацию с использованием базы данных mysql.mercurial ssl access allow pull BUT требуется аутентификация для push

Я хотел бы, чтобы все могли вытащить из репозитория без учетных данных, но ограничить право доступа к аутентифицированным пользователям. То, как это делается сейчас, либо все аутентифицируются как для тяги, так и для толчка, или никто не является.

Моя конфигурация Apache это:

<Location /hg/repo> 
    AuthType Basic 
    AuthName "Repository Access" 
    AuthBasicAuthoritative Off 
    AuthUserFile /dev/null 
    AuthMySQL     On 
    AuthMySQL_Authoritative  On 
    AuthMySQL_Host    localhost 
    AuthMySQL_DB     repo 
    AuthMySQL_User    repo 
    AuthMySQL_Password_Table  users_auth_external 
    AuthMySQL_Group_Table  users_auth_external 
    AuthMySQL_Username_Field  username 
    AuthMySQL_Password_Field  passwd 
    AuthMySQL_Group_Field  groups 
    AuthMySQL_Encryption_Types SHA1Sum 
    Require group    pink-image 
    <LimitExcept GET> 
     Require valid-user 
    </LimitExcept> 
</Location> 

также требует рт.ст. аутентификации для Ssl тянуть, независимо от переключателя LimitExcept.

Есть ли способ ограничить аутентификацию только для нажатия в хранилище?

Простой доступ к http не будет достаточным, потому что, если кто-то разработчик, она проверяет код через https.

Доступ к SSH невозможен, поскольку некоторые из разработчиков имеют запрещенный брандмауэром порт ssh.

Одним из решений было бы, если hg будет помнить учетные данные https.

Благодарим вас за то, что вы прочитали вопрос.

ответ

2
One of the solutions would be if hg would remember the https credentials. 

Он может помнить учетные данные для push и pull. Посмотрите под auth раздел hg help config, если вы не возражаете, добавляя детали к одному из конфигурационных файлов (или конфигурации пользователя или клон репозитория hgrc)

Это означало бы поставить пароль в конфигурационном файле, который вы не могли бы например, вы можете использовать Mercurial Keyring Extension вместо этого, который надежно хранит пароль.

0

Оказывается, автоматических учетных данных недостаточно. Репозиторий должен быть доступен через веб-интерфейс. Однако тот же самый конфигурационный файл открывает окно проверки подлинности в браузере, что делает веб-интерфейс непригодным.

3

Аутентификация должна быть завернута в правило исключения.

<Location /hg/repo> 
    <LimitExcept GET> 
     AuthType Basic 
     AuthName "Repository Access" 
     AuthBasicAuthoritative Off 
     AuthUserFile /dev/null 
     AuthMySQL     On 
     AuthMySQL_Authoritative  On 
     AuthMySQL_Host    localhost 
     AuthMySQL_DB     repo 
     AuthMySQL_User    repo 
     AuthMySQL_Password_Table  users_auth_external 
     AuthMySQL_Group_Table  users_auth_external 
     AuthMySQL_Username_Field  username 
     AuthMySQL_Password_Field  passwd 
     AuthMySQL_Group_Field  groups 
     AuthMySQL_Encryption_Types SHA1Sum 
     Require group    pink-image  
    </LimitExcept> 
</Location> 
+0

Это правильный способ сделать это. В качестве дополнительной заметки в предложение LimitExcept необходимо инкапсулировать только опцию 'Require' (' Require group', 'Require valid-user' и т. Д.). Это обеспечивает дополнительную детализацию в отношении контроля доступа (то есть некоторые пользователи/группы читают, другие получают чтение/запись) –

 Смежные вопросы

  • Нет связанных вопросов^_^