Kontext
Meine App basiert auf einem externen Dienst zur Authentifizierung, die Python-API hat Funktion authentiate_request
Hexe braucht
request
Instanz als Parameter und gibt das Ergebnis dict zurück:
Wenn auth erfolgreich war, enthält dict 3 Schlüssel:
- erfolgreich: wahr
- Benutzername: Alice
- Cookies: [Liste der Set-Cookie-Header, die erforderlich sind, um sich an den Benutzer zu erinnern]
wenn nicht erfolgreich:
- erfolgreich: falsch
- Weiterleitung: URL, an den der Benutzer für die webbasierte Authentifizierung umgeleitet werden soll
Der Aufruf dieser Funktion ist nun relativ teuer (darunter liegt HTTP POST).
Frage
Ich bin neu im Pyramid-Sicherheitsmodell, und ich habe Schwierigkeiten, vorhandenes / korrektes Schreiben zu verwenden AuthenticationPolicy
für meine app, also verwendet sie meinen auth-service und ruft die API nicht mehr als einmal pro Sitzung auf (im auth-Erfolgsszenario)?
Antworten:
0 für die Antwort № 1Es gibt zwei Möglichkeiten, benutzerdefinierte zu integrierenAuth mit Pyramid: - Schreibe deine eigenen Authentifizierungsrichtlinien für Pyramid (Ich habe das nicht gemacht) - Schreiben Sie Ihre eigene Middleware, um Ihre Auth-Probleme zu lösen, und verwenden Sie die RemoteUserAuthenticationPolicy in Pyramid (ich habe dies getan)
Für die zweite schreiben Sie ein paar Standard-WsgiMiddleware, sortieren Sie Ihr Custom Authentication-Geschäft dort aus und schreiben Sie dann an die Wsgi-Umgebung. Die Pyramidenautorisierung funktioniert dann einwandfrei. Das Pyramid-Authentifizierungssystem erhält den Benutzerwert aus der Einstellung "REMOTE_USER" von wsgi env.
Ich persönlich mag diesen Ansatz, weil er einfach istum verschiedene Apps in Ihre Middleware zu packen und ganz einfach auszuschalten oder auszutauschen. Obwohl dies nicht wirklich die Antwort auf genau das ist, was Sie gefragt haben, könnte dies eine bessere Vorgehensweise sein als das, was Sie versuchen.