Zunächst ist es ein Dokumentenfischen, um einen Überblick über die von mod_auth_tkt bereitgestellte "Ticketauthentifizierung" zu erhalten. Zu beiden Modulen gibt es jedoch nicht viel Dokumentation.
Die im Cookie enthaltenen Informationen sind jedoch einfach, sodass es nicht allzu schwierig zu sein schien.
Es ist die Hauptinformationsquelle ...
In diesem Artikel werde ich nur eine Übersicht schreiben.
Der Ticketaussteller (diesmal die Django-Site) und der Ticket-Konsument (diesmal ein bestimmtes Verzeichnis in Apache) Teilen Sie Folgendes:
Während der Freigabe dieser beiden, der Ticketaussteller
Speichern Sie das Ticket als Cookie basierend auf. Sie werden nebeneinander aufgelistet, aber um es richtig zu erklären, sind das "Common Secret" und der "Hash-Algorithmus" erforderlich, wenn Sie ein Ticket erstellen. Andererseits sind "Benutzername" und "IP-Adresse" die im Ticket (Cookie) enthaltenen Informationen.
Apache verwendet den Namen des Cookies und ein gemeinsames Geheimnis, um das Ticket und zu überprüfen
Bestätigen Sie beispielsweise und führen Sie die Authentifizierung / Autorisierung durch.
Sie können auf beiden Seiten mehrere Token angeben (dies ist nicht erforderlich). Wenn der Verbraucher des "admin" -Tokens erwartet Der Aussteller muss das "admin" -Token in das Ticket eingebettet haben. Ich denke, wir können eine gewisse Zugangskontrolle erreichen. (Da ich jedoch nur ein gemeinsames Geheimnis haben kann, fühlt es sich so an, als wäre etwas verrückt, selbst wenn ich damit eine Gatchigachi-ACL mache.)
Es scheint, dass Sie den Gültigkeitsbereich und das Ablaufdatum des Tickets detailliert angeben können. Es ist nicht der Umfang dieses Artikels.
# apt-get install mod_auth_tkt
# pip install -U AuthTkt
Es gibt also einige Beispiele auf der Manpage von mod_auth_tkt Ich denke, es ist besser, es zu sehen ...
TKTAuthSecret "Ukaga"
<Directory /opt/griflet/data/result/>
AuthType None
TKTAuthLoginURL http://example.com/django/issue_ticket
TKTAuthDomain example.com
TKTAuthDebug 3
</Directory>
Für Debian gibt es in /etc/apache2/mods-enabled/auth_tkt.conf einen Abschnitt, in dem ein TKTAuthSecret geschrieben werden soll.
Wenn TKTAuthDebug angehängt ist, wird in error.log ein Fehler angezeigt. Alle Erklärungen werden auf der Manpage angezeigt.
Insbesondere besteht eine hohe Wahrscheinlichkeit, dass die Cookie-Einstellungen vorerst eher schlampig sind. (urls.py oder alles andere weggelassen)
@login_required
def issue_ticket(request):
user = request.user
# http://stackoverflow.com/questions/4581789/how-do-i-get-user-ip-address-in-django
ip = utils.get_client_ip(request)
token = authtkt.AuthTicket(TKT_AUTH_SECRET,
user.username,
ip,
tokens=['user'])
# TODO:Lassen Sie uns umleiten
response = render(request, '{}/hello.html'.format(NAMESPACE), {})
response.set_cookie('auth_tkt', token.cookie_value(),
domain=TKT_AUTH_DOMAIN)
return response
Obwohl es in TODO geschrieben ist, werden Sie beim Zugriff auf "TKTAuthLoginURL" ohne Ticket auf diese Seite weitergeleitet, wobei die Rückgabe-URL "back" in der Abfrage festgelegt ist. Lassen Sie uns für den Benutzer umleiten
Es gibt viele verwirrende Module, insbesondere auf der Seite der Python-Implementierung
Bitte entscheiden Sie, welches besser ist. Wenn sich die Spezifikationen auf der Verbraucherseite (Apache) jedoch nicht geändert haben, sollte es praktisch keinen Unterschied geben, was zu tun ist.
Es scheint, dass es viele Leute gibt, die denken, dass der kleine Maßstab, über den wir diesmal nachdenken, in Ordnung ist, aber dass es ein großer Maßstab ist.
Es wird einfacher sein herauszufinden, ob Sie sich daran erinnern, dass Sie das auch können.
Aufgrund etwas mehr Nachforschungen berichte ich auch, dass dies nicht meinem Zweck entsprach.
Angenommen, Sie erstellen eine Django-Website, auf der mehrere Projekte dynamisch erstellt und ausgeblendet werden (z. B. Projektmanagement). Zu diesem Zeitpunkt möchte ich für jedes Projekt verschiedene Arten von Tickets ausstellen und die herunterladbaren Dateien entsprechend der Art des Tickets ändern.
Dies kann nicht allein mit Apaches mod_auth_tkt durchgeführt werden.
Insbesondere erlaubt die aktuelle Implementierung von mod_auth_tkt in keiner Weise Variablen in TKTAuthToken. Selbst wenn Sie die Apache-Umgebungsvariable mit SetEnvIf festlegen, können Sie sie anscheinend zumindest in der verifizierten Version nicht abrufen. Ich habe mir den Quellcode angesehen, aber es gibt wieder keine Logik, um damit umzugehen.
Ich habe von X-SendFile gehört, also werde ich es versuchen.
Recommended Posts