WWW Authenticate für bestimmte URL mit oder ohne Parameter

Das Framework ermöglicht den Einbau einer Authorization Basic über die eigene zentrale Konfiguration somit funktioniert das auch über Ajax

Authorization Basic ist im Framework ein erstklassiges Feature! Die Konfiguration bestimmter URLs mit diesem Feature ist denkbar einfach, zu konfigurieren sind diese Attribute:

interface=auth
auth=users.realm
; users.realm ist die Datei mit den Credentials

Womit die gesamte Seite einen Benutzernamen:Passwort erfordert. Die Besonderheit dieser Lösung besteht darin, die Authorization auf bestimmte Parameter einschränken zu können indem Authorization Basic in der Interface-Methode control() konfiguriert wird. Insgesamt ergeben sich drei konfigurierbare Einsatzfälle:

# Generell die ganze Seite
sub init{
    my $self = shift;
    $self->auth();
}

# Wenn Parameter im Request
sub control{
    my $self = shift;
    $self->auth();
}

# Nur wenn ein Bestimmter Parameter
sub control{
    my $self = shift;
    if($self->param('edit')){
        $self->auth();
    }
}

Über die Methode auth() wird der Authenticate-Challenge abgewickelt, bei einer erfolgreichen Authentifizierung gibt diese Methode den Benutzernamen zurück. Untenstehend nun ein Link auf die hier vorliegende Seite mit einem Parameter, wobei der Aufruf der Seite nur dann einen Benutzernamen/Passwort erfordert, wenn ein Parameter im Request ist:

Teste Authenticate mit user:pass Nicht angemeldet

Hinweis: Wenn JavaScript im Browser aktiviert ist, erfolgt WWW-Authenticate über den Ajax-Request.

Passwort-Dateien und verschiedene Realms

Die Dateien, im Attribute auth= einzutragen, werden mit dem Kommandozeilenprogramm htpasswd erzeugt. Über mehrere Dateien mit verschiedenen Namen ist es möglich, beliebig viele Realms anzulegen -- Praktisch verschiedene Benutzergruppen.


Anbieter: nmq​rstx-18­@yahoo.de, die Seite verwendet funktionsbedingt einen Session-Cookie und ist Bestandteil meines nach modernen Aspekten in Perl entwickelten Frameworks.