wiki:Accounts/POTT

Zugangsaccounts für den PhysikOnline Team-Tracker

Diese Seite ist veraltet. Mittlerweile haben wir im POTT seit seinem Umzug auf die ITP-Server interne Benutzeraccounts. Darüber haben wir die beste Kontrolle und es ist wesentlich einfacher zu warten. Nachteil ist freilich, dass es keine zentralen Passwörter mehr gibt.

Der POTT (diese Website hier) ist für Teammitglieder schreibbar. Eine Mappingfile unter /etc/apache/passwords/radius-mapping.txt wird durch meinen Apache-mod-auth-radius-connector.pl aufgerufen und ist online für PhysikOnline-Mitglieder unter team/radius-mapping.txt einsehbar.

Diese Datei stellt zwei Dinge sicher:

  • Jeder der drinsteht, darf sich einloggen. Alle anderen HRZ-Benutzer werden abgewiesen, als ob sie ein falsches Passwort hätten
  • Mapping: Benutzer können unter Real Name arbeiten. Das Schema erklärt sich wohl von selbst.

Wer unter gleichem Namen wie HRZ-Namen arbeiten will (siehe Demobenutzer), schreibt eine Identifikationsabbilung à la abc: abc hin.

Nach Veränderung der Datei muss der Webserver möglicherweise neu gestartet werden.

Achtung: Anschließend müssen Benutzer noch im Trac-Adminpanel der Trac-internen Gruppe team hinzugefügt werden, um auf die geschützten Wikiseiten und Tickets Zugriff zu bekommen!

Stichwort E-Mails: Unter prefs kann man seine E-Mail-Adresse eintragen. Wenn keine eingetragen ist, werden E-Mails an username@… geschickt. Wo das hingeht, steht in der Datei /etc/aliases, siehe E-Mail.

Technische Implementierung

Apache-Konfiguration unter dem VirtualHost elearning.physik.uni-frankfurt.de:

#<Virtualhost ...>
        # POTT (Team-Tracker, Trac):
        WSGIScriptAlias /projekt  /var/www/trac/cgi-bin/trac.wsgi
        Alias /projekt/chrome /var/www/trac/htdocs

        # externen Auth-Provider (mod_authnz_external)
        DefineExternalAuth hrz_login environment /etc/apache2/passwords/mod-auth-radius-connector.pl
        <Location "/projekt/login">
                AuthType Basic
                AuthName "PhysikOnline Trac-Benutzeranmeldung"
                AuthBasicProvider external
                AuthExternal hrz_login
                Require valid-user
        </Location>

        # ein paar Weiterleitungen fuer Trac
        Redirect permanent /trac https://elearning.physik.uni-frankfurt.de/projekt
        Redirect permanent /pott https://elearning.physik.uni-frankfurt.de/projekt
        Redirect permanent /team https://elearning.physik.uni-frankfurt.de/projekt
#</Virtualhost>

Dazu wurde das Apache-Modul authnz-external verwendet (gibt es in den Ubuntu-Repositories):

$ cat /etc/apache2/mods-enabled/authnz_external.conf
# definiere meinen kleinen Connector
AddExternalAuth hrz /etc/apache2/passwords/mod-auth-radius-connector.pl
SetExternalAuthMethod hrz environment

Dieser Connector sieht so aus (/etc/apache2/passwords/mod-auth-radius-connector.pl):

#!/usr/bin/perl
# Kleiner Connector, der fuer mod_auth_external im Apache verwendet werden kann
# und ueber Authen::Simple::RADIUS seinerseits bei Radius nachschaut sowie Aliasing
# ueber eine Textdatei betreibt. Sehr simpel.
# -- sven, 07.12.2011, 20:23

use strict;
use Authen::Simple::RADIUS;

my $username = $ENV{"USER"};
my $password = $ENV{"PASS"};
my $user_must_be_mapped = 1; # wer nicht in mappingfile steht fliegt raus

# mappingfile einlesen
open(MAP, "/etc/apache2/passwords/radius-mapping.txt") or die "Could not open $!";
my %mapping = ();
while(<MAP>) {
        next if /^#|^\s*$/; chomp;
        my ($real, $alias) = split /\s*:\s*/;
        $mapping{$alias} = $real;
        # always enable identity transformation, too:
        $mapping{$real} = $real;
}

# mapping durchexerzieren
if(exists $mapping{$username}) {
        $username = $mapping{$username};
} elsif($user_must_be_mapped) {
        exit(1);
}

my $radius = Authen::Simple::RADIUS->new(host=>"localhost", secret=>"ein-geheimes-Passwort");
exit ($radius->authenticate($username, $password) ? 0 : 1);

Die Datei /etc/apache2/passwords/radius-mapping.txt hat dabei folgendes Format:

# Kleine Mappingfile, um HRZ-Login schoener zu gestalten.
# wer hier nicht drinsteht (selbst nicht mit a: a), kann sich
# mit dem connector.pl nicht anmelden wenn user_must_be_mapped
# gesetzt ist.

s1723217: marius
s1999999: mirko
s1301100: s1301100
juphoff: jan
s1234387: sven
# usw. - (alle Einträge hier in der Wiki anonymisiert)

Der Connector geht gegen den FreeRADIUS-Server, den wir hier lokal betreiben, um den HRZ LDAP-SimpleBind zu realisieren. Ferner bietet FreeRADIUS uns auch die Möglichkeit, eigene Benutzer/Passwort-Accounts einzubinden, was gut für Testzwecke ist.

Last modified 3 years ago Last modified on Nov 3, 2014 2:44:20 PM