- Angelegt von //SEIBERT/MEDIA Employee, zuletzt geändert am Mär 17, 2018
Der Crowd Apache/Subversion Konnektor wird weiterhin verfügbar bleiben, aber er wird nach dem 31. Dezember 2014 nicht mehr von Atlassian supportet.
Diese Seite bietet Ihnen eine Anleitung für die Verwendung von Subversions Autorisierungsmodulen, um Crowd in Subversion zu integrieren.
Wenn Sie bereits vor dem 31. Dezember 2014 den Crowd Apache/Subversion Konnektor verwendeten und Probleme feststellen konnten, empfehlen wir Ihnen den Wechsel zu Subversions Authentifizierungsmodul: Alternatives Setup für Crowd Apache/Subversion Konnektor Benutzer.
Wenn Sie Crowd in Apache integriert haben, dann können Sie mit Crowd ein Subversion-Repository Passwort-schützen und eine feinabgestimmte Zugriffskontrolle nach Gruppen oder Benutzer zur Verfügung stellen.
Die folgenden Features werden unterstützt:
- Authentifizierung: Benutzung von Crowd für das Schützen eines Subversion-Repositorys mit einem Passwort.
- Autorisierung: Feinabgestimmte Zugriffskontrolle nach Gruppen oder Benutzer.
Schritt 1: Integration von Crowd in Apache
Zuerst müssen Sie Crowd in Apache integrieren. Bitte befolgen Sie den Instruktionen auf der Dokumentation über die Integration von Crowd in Apache.
Beachten Sie, dass Sie Subversion nicht als Applikation in Crowd definieren müssen. Subversion und Apache werden beide dieselbe Crowd-Applikation verwenden.
Schritt 2: Konfiguration der Crowd-Authentifizierung für Subversion
Wenn Sie Apache für die Verwaltung des Zugriffs auf ein Subversion-Repository (Instruktionen auf Englisch) und Crowd für das Verwalten der Apache Authentifizierung (Instruktionen) verwenden, dann können Sie dieselbe Konfigurationsmethode für die Delegierung der Authentifizierung der Subversion-Benutzer an Crowd benutzen.
Beispiel:
<Location /svn> AuthName "Atlassian Crowd" AuthType Basic AuthBasicProvider crowd CrowdAppName myappname CrowdAppPassword mypassword CrowdURL http://localhost:8095/crowd/ CrowdCreateSSO off # Improves performance when using Subversion clients that don't store cookies DAV svn # Set this to the path to your repository SVNPath /var/lib/svn # The following three lines allow anonymous read, but make # committers authenticate themselves. <LimitExcept GET PROPFIND OPTIONS REPORT> Require valid-user </LimitExcept> </Location>
Wenn Ihre Subversion Clients keine Cookies speichern, erreichen Sie durch das Deaktivieren des Single Sign-Ons, mit der "CrodCreateSSO off" Direktive, eine bessere Performance. Damit wird vermieden, dass bei jeder Anfrage an Subversion eine Anfrage an Crowd gestellt wird.
Sie werden auch Ihre Apache Konfigurationsdatei editieren müssen, um Subversions Autorisierungsmodul "mod_authz_svn" zu laden.
LoadModule authz_svn_module modules/mod_authz_svn.so
Beachten Sie, dass Sie Apache erst neustarten müssen, bevor jegliche Änderungen an den Konfigurationsdateien wirksam werden.
Schritt 3: Konfiguration der Crowd Autorisierung für Subversion
Um den Zugriff auf das Subversion-Repository auf bestimmte Gruppen und/oder Benutzer einzuschränken, können Sie die "Require group" und "Require user" Direktiven hinzufügen, so wie es auf der Seite über das Integrieren von Crowd in Apache beschrieben ist.
Für feinere Zugriffseinschränkungen können Sie die "AuthzSVNAccessFile" Direktive für die Definition von Pfad-basierten Zugriffsregeln benutzen.
Beispiel:
<Location /svn> AuthName "Atlassian Crowd" AuthType Basic AuthBasicProvider crowd CrowdAppName myappname CrowdAppPassword mypassword CrowdURL http://localhost:8095/crowd/ CrowdCreateSSO off # Improves performance when using Subversion clients that don't store cookies DAV svn # Set this to the path to your repository SVNPath /var/lib/svn AuthzSVNAccessFile /etc/apache2/dav_svn.authz Require valid-user </Location>
Die "AuthzSVNAccessFile" Einstellung lässt Sie eine Datei definieren, in der Sie den Zugriff der Gruppen und Benutzer auf Verzeichnisebene definieren können.
Hier ist ein kurzes Beispiel:
[groups] # Groups referred to in other sections must be listed here, but group membership is obtained from Crowd. bazdevelopers = foodevelopers = # Everyone has read access to the repository # (unless modified below). [/] * = r # Members of the bazdevelopers group can # read and write to the BazWord project [/BazWord] @bazdevelopers = rw # Members of the foodevelopers group can read and write # to the FooCalc project [/FooCalc] @foodevelopers = rw # Members of foodevelopers can read the branches # directory but only user juliag (the release manager) # can write to this path [/FooCalc/branches] juliag = rw @foodevelopers = r # peterc is a contractor, so he's denied all access to the statistics # module (which is full of trade secrets). [/FooCalc/trunk/statistics] peterc =
Hinweise:
- Das Format ist eine Serie von einem oder mehreren Repository-Pfaden (ohne die Leading-URL), gefolgt von einem oder mehreren Gruppen- oder Benutzer-Direktiven für jeden Pfad.
- Sie müssen nicht jeden einzelnen Pfad inkludieren. Wenn ein exakter Pfad nicht gefunden wird, werden die Einstellungen des nächsten Eltern-Verzeichnisses benutzt.
- Der Zugriff für den Benutzer oder die Gruppe kann auf folgendes festgelegt werden:
- rw: Lese- und Schreibzugriff
- r: Nur der Lesezugriff.
- <leer>: Kein Zugriff.
- Gruppennamen werden mit einem anführenden "@"-Zeichen angegeben.
- Zeilen, die mit einem "#" beginnen, sind Kommentare.
- Wenn Sie die SVNParentPath Direktive für die Konfiguration mehrerer Repositories verwenden, dann sollten die Repository-Pfade in folgender Form sein: repository:pfad. Zum Beispiel:
[groups] developers = [public:/] * = r @developers = rw [public:/community] * = rw [private:/] @developers = rw
Vermischen des authentifizierten und anonymen Zugriffs
Eine häufige Anforderung für den Subversion-Zugriff ist es eine Kombination des anonymen (bei dem kein Benutzername und Passwort erforderlich ist) und des authentifizierten Zugriffs. Zum Beispiel gibt es viele Administratoren, die anonymen Benutzern den Lesezugriff auf bestimmte Repository-Verzeichnisse geben möchten, aber nur authentifizierten Benutzern den Lese- oder Schreibzugriff auf empfindlichere Bereiche geben möchten. Um den anonymen Zugriff zu aktivieren fügen Sie die folgende Zeile zu der Apache Konfigurationsdatei hinzu:
AuthzSVNAccessFile /etc/apache2/dav_svn.authz AuthzSVNNoAuthWhenAnonymousAllowed On Satisfy Any Require valid-user
Wenn der anonyme Zugriff, wie oben gezeigt, aktiviert ist, dann wird Apache kein Password für jeden Teil des Repositorys benötigen, das mit dem '*' Benutzer in der AuthzSVNAccessFile Datei übereinstimmt. Wenn Sie um Beispiel anonymen Benutzern den Lesezugriff auf das Meiste eines Repositorys geben möchten, aber die Authentifizierung für einen privaten Bereich benötigen, dann würde die "AuthzSVNAccessFile" Datei wie folgt aussehen:
[groups] developers= # login not required to read, only members of the 'developers' group can check in changes [/] * = r @developers = rw # anonymous access denied to /private directory [/private] * = @developers = rw
Sehen Sie sich auch dieses Beispiel (auf Englisch) in der Subversion Dokumentation an.
Für eine detaillierte Beschreibung des "AuthzSVNAccessFile" Dateiformats, sehen Sie sich bitte die Subversion Dokumentation (auf Englisch) an.
Zusätzliche Konfigurationsoptionen
Womöglich möchten Sie Ihre Konfiguration mit einigen weiteren, optionalen Befehlen anpassen. Lesen Sie dazu die Subversion Dokumentation (auf Englisch).
Schritt 4: Die Gruppenzugehörigkeiten aus Crowd beziehen
Als nächstes müssen Sie die "AuthzSVNAccessFile" Datei nehmen und sie mit den Gruppenzugehörigkeiten aus Crowd erweitern. Das wird mit einem Python-Skript gemacht. Das Skript nimmt Ihre Definitionen in Bezug auf die Crowd-Gruppen, erweitert diese und generiert die access-file-expanded.authz Datei (die die Liste mit den Benutzern und Gruppen aus Ihrer Crowd-Instanz beinhaltet).
- Laden Sie das Python-Skript von Bitbucket herunter.
- Editieren Sie die "AuthzSVNAccessFile" Einstellungen in der httpd.config Datei, um den Ort anzugeben, an dem die "access-file-expanded.authz" Datei liegen wird (das ist die Datei, die von dem Skript generiert/aktualisiert wird).
- Kopieren Sie Ihre crowd.properties Datei zu Apaches Config-Verzeichnis.
Erstellen Sie folgendes Skript:
if generate-authz-svn-access-file.py --config crowd.properties --check-event-token access-file-expanded.authz; then : # Do nothing; file is current else generate-authz-svn-access-file.py --config crowd.properties access-file-template.authz >access-file-expanded.authz.tmp && mv access-file-expanded.authz.tmp access-file-expanded.authz fi
Passen Sie die Pfade des obigen Beispiels an, damit es zu Ihrer Umgebung passt.
- Starten Sie das Skript und überprüfen Sie, ob die access-file-expanded.authz Datei aktualisiert wurde.
- Erstellen Sie eine terminierte Aufgabe mithilfe von Cron oder einer anderen Alternative, um das Skript regelmäßig, z. B. stündlich, laufen zu lassen.
Hinweise
- Beachten Sie, dass die Gruppenzugehörigkeiten, die im [groups] Abschnitt der Datei, die in der Subversion Dokumentation beschrieben ist, vom Crowd Apache Konnektor ignoriert werden, weil die Gruppenzugehörigkeiten von Crowd kommen. Allerdings müssen alle Gruppen, die zu anderen Abschnitten zugewiesen sind, hier genannt sein.
- Subversion wird alle in dieser Datei angegebenen Gruppennamen zunächst in Kleinbuchstaben konvertieren, bevor es sie mit den von Crowd bezogenen Gruppennamen vergleichen wird. Aus diesem Grund müssen Sie die "Lower Case Output" Option für Ihre Subversion-Applikation aktivieren.
Alternatives Setup für existierende Crowd Apache/Subversion Konnektor Benutzer
Der Crowd Apache/Subversion Konnektor wird ab dem 31. Dezember 2014 nicht mehr von Atlassian supportet.
Wenn Sie Probleme mit Ihrem existierenden Setup feststellen mussten, dann empfehlen wir Ihnen den Wechsel zu einer Alternative, indem Sie Subversions Authentifizierungsmodule dazu verwenden eine "AuthzSVNAccessFile" Datei zu generieren und sie mit den Gruppenzugehörigkeiten von Crowd befüllen.
Ein Python-Skript nimmt Ihre Definitionen in Bezug auf die Crowd-Gruppen aus der "AuthzSVNAccessFile" Datei, erweitert diese und generiert die "access-file-expanded.authz" Datei, mit der Liste der Benutzer und Gruppen aus Ihrer Crowd-Instanz. Sie können dann die Ausführung dieses Skripts automatisieren, sodass die Mapping-Dateien, die von Subversion verwendet werden, immer auf dem aktuellsten Stand bleiben.
- Laden Sie das Python-Skript von Bitbucket herunter.
Bearbeiten Sie Ihre Apache "httpd.conf" Konfigurationsdatei, um "mod_authz_svn" zu laden (anstatt des Atlassian Crowd Apache Subversion Konnektors).
LoadModule authz_svn_module modules/mod_authz_svn.so
- Editieren Sie die "AuthzSVNAccessFile" Einstellung in der Apache "httpd.config" Datei, um zu definieren wo die "access-file-expanded.authz" Datei liegen wird (das ist die Datei, die vom Skript generiert/aktualisiert wird).
- Kopieren Sie Ihre "crowd.properties" Datei zu Apaches Config-Verzeichnis.
Erstellen Sie folgendes Skript:
if generate-authz-svn-access-file.py --config crowd.properties --check-event-token access-file-expanded.authz; then : # Do nothing; file is current else generate-authz-svn-access-file.py --config crowd.properties access-file-template.authz >access-file-expanded.authz.tmp && mv access-file-expanded.authz.tmp access-file-expanded.authz fi
Editieren Sie die Pfade im obigen Beispiel, damit sie zu Ihrer Umgebung passen.
- Starten Sie das Skript und überprüfen Sie, ob die "access-file-expanded.authz" Datei aktualisiert wurde.
- Erstellen Sie eine terminierte Aufgabe mithilfe von Cron oder einer anderen Alternative, um das Skript regelmäßig, z. B. stündlich, laufen zu lassen.