Apache 2.4 + SVN-Authentifizierung mit gemischtem authentifizierten / anonymen Zugriff

7

Ich verwende Apache 2.4 und möchte es ohne mod_access_compat verwenden.

Ich versuche, SVN-Repositorys mit Zugriffssteuerung zu bedienen, die von mod_authz_svn verwaltet wird.

Ich möchte, dass einige Repos oder Speicherorte innerhalb von Repos schreibgeschützten anonymen Zugriff haben. Ich möchte, dass andere Repos oder Speicherorte eine grundlegende Authentifizierung erfordern.

Apache 2.4 unterstützt die Satisfy allSyntax nicht mehr , mod_authz_svn scheint dies jedoch zu erwarten. Wie soll das unter Apache 2.4 konfiguriert werden?

Apache-Konfiguration:

 <Location /svn>
        DAV svn
        SVNParentPath /usr/projects/svn
        AuthType Basic
        AuthName "SVN repository"
        AuthUserFile /usr/project-config/etc/svn-auth-file
        AuthzSVNAccessFile /usr/project-config/etc/svn-access-control
        Require valid-user
 </Location>

SVN-Zugriffskontrolle:

# cat etc/svn-access-control
[/]
antiduh = rw

[openprojects:/]
* = r
antiduh = rw

Ich habe 5 Repos, openprojects ist das einzige, auf das ich anonymen Lesezugriff haben möchte. Ich kann das scheinbar nicht zum Laufen bringen. Selbst die neueste Dokumentation, die ich für mod_authz_svn finden konnte, wird weiterhin verwendet Satisfy all.

Antiduh
quelle
Warum willst du nicht benutzen mod_access_compat?
Moshe Katz
Ich kann, ich will einfach nicht. Wenn Apache das Auth / Access-Modell geändert hat, möchte ich herausfinden, wie das neue Modell funktioniert.
Antiduh
Beim Stöbern in der Quelle von mod_authz_svn sieht es so aus, als ob es eine starke Abhängigkeit von gibt ap_satisfies(r) == SATISFY_ANY. Ich denke, das bedeutet, dass es außerhalb von mod_access_compat nicht unterstützt wird, aber ich werde die Frage für eine Weile offen lassen, wenn jemand anderes an etwas denken kann.
Antiduh

Antworten:

3

Beim Stöbern in der Quelle von mod_authz_svn sieht es so aus, als ob es eine starke Abhängigkeit von gibt ap_satisfies(r) == SATISFY_ANY. Ich bin mit dem Apache-API-Modell nicht ganz vertraut, aber dies scheint darauf hinzudeuten, dass mod_authz_svn das neue Authentifizierungsmodell von Apache 2.4 derzeit nicht unterstützt.

Da niemand anderes eine Antwort oder gegenteilige Beweise gefunden hat, werde ich dies als Antwort markieren.

Laden Sie das mod_access_compatModul, damit dies unter Apache 2.4 funktioniert :

LoadModule access_compat_module libexec/apache24/mod_access_compat.so

Fügen Sie dann die Satisfy anyKlausel hinzu, wie in der Dokumentation derzeit angegeben.

 <Location /svn>
    DAV svn
    SVNParentPath /usr/home/antiduh/svn
    AuthType Basic
    AuthName "SVN repository"
    AuthUserFile /usr/home/antiduh/svn/etc/svn-auth-file
    AuthzSVNAccessFile /usr/home/antiduh/svn/etc/svn-access-control
    Satisfy any
    Require valid-user
 </Location>
Antiduh
quelle
Ich habe das gleiche Problem, das mich und meine Kollegen beunruhigt ... Haben Sie eine bessere Lösung? Zumindest mit LDAP, das zur Authentifizierung von Benutzern verwendet wird, scheint Ihre Lösung nicht richtig zu funktionieren :(
MWiesner
0

In den meisten Fällen besteht das Äquivalent von 2,4 Satisfy Alldarin, die RequireAnweisungen in einen <RequireAll>Block einzuschließen . Das Äquivalent von Satisfy Anywäre ein <RequireAny>Block.

Für weitere Informationen zu den Änderungen und Entsprechungen kann diese Präsentation (PDF) von Rich Bowen hilfreich sein.

Moshe Katz
quelle
Ich hatte das versucht - <RequireAny>Require valid-user</RequireAny>ist das, was ich versucht habe, was nicht wirklich viel Sinn macht, aber es ist alles, was ich versuchen kann.
Antiduh
0

Es ist möglich, eine separate LocationAuthentifizierung ohne Authentifizierung für eine Teilmenge der SVN-Protokollbefehle zu erstellen , z.

<Location /subversion-open>
  DAV                    svn
  SVNParentPath          /path/to/svn-repos/subversion-open
  SVNListParentPath      Off
  SVNReposName           "SVN repos"
  AuthzSVNAccessFile     /path/to/svn-authz-file

  # Limit write permission to list of valid users.
  <LimitExcept GET PROPFIND OPTIONS REPORT>
    AuthType               Basic
    AuthBasicProvider      file PAM
    AuthUserFile           /path/to/svn-htpasswd-file
    AuthPAMService         httpd_svn
    AuthName               "Open access SVN repos"

    Require                valid-user
  </LimitExcept>
</Location>

Auf diese Weise können nicht authentifizierte Benutzer die Repos lesen und authentifizierte Benutzer erhalten den Zugriff gemäß den svn-authz-fileRegeln. (In diesem Beispiel erlauben wir auch die Authentifizierung über PAM für Systembenutzer sowie für diejenigen in der htpasswdDatei.)

David Gardner
quelle