Wie verwalte ich meine Authentifizierung mit WorldDomination und Nancy?

8

Ich versuche, die soziale Authentifizierung in einer von asp.net gehosteten Nancy Web-App zu verwenden, die die < a href="http://www.nuget.org/packages/Nancy.SimpleAuthentication/"> WorldDomination SimpleAuthentication Plugin für Nancy . TL; DRs springen zu der Frage, die am unteren Rand der Frage hervorgehoben ist.

Beide sind ziemlich nett, aber es gibt eine große Dokumentationslücke zwischen dem Authentifizierungsprozess (gut abgedeckt) und die Identifizierung des authentifizierten Benutzers während anderer Anfragen als der ursprünglichen Authentifizierungsanfrage (nichts).

Nancy bietet Grund- und Formularauthentifizierung über zusätzliche Pakete, und die von ihnen bereitgestellten Hooks sind ziemlich einfach. WorldDomination liefert nicht viele Informationen nach dem eigentlichen Authentifizierungsprozess. Es scheint einen eindeutigen Mangel an Happy Path für den normalen "wer ist der Benutzer, der diese Anfrage macht" -Prozess zu sein, der jedes Mal passieren muss, wenn ein Benutzer den Server trifft.

Ich habe ziemlich viel Zeit gebraucht, um diesen Teil herauszufinden, aber meine Forschung hat mich nicht zu offensichtlichen Lösungen geführt. Die WD-Demo-Apps haben keinen anderen Anforderungscode als Authentifizierungsanforderungen, und die Codebasis scheint nichts mit dem normalen Anforderungszyklus zu tun zu haben.

Meine beste Vermutung ist, dass ich in Formulare Auth integrieren muss, Nancys Forms-Auth-Hooks implementiert und was ich von WD zurückbekomme, um meine eigenen Typen zu füllen.

Das scheint nicht gerade der glücklichste Weg eines glücklichen Pfades zu sein. Tatsächlich scheint es eher ein "mach viel Arbeit du fauler Bastard" Pfad zu sein.

Was genau ist der empfohlene, glückliche Weg für die Integration der sozialen OAuth-Authentifizierungsanbieter von WorldDomination und Nancy? Ich konzentriere mich hier auf den Standard-Seitenlebenszyklus-Teil "Wer ist dieser Person, die von mir verlangt" .

Bonuspunkte (von meinen Horden von Sockpuppet-Accounts, die ich zu diesem Zweck anlegen werde), wie dieser glückliche Pfad auch die Abmeldung von Benutzern übernimmt!

    
Will 04.08.2013, 21:12
quelle

1 Antwort

15

Mit Simple Authentication übernehmen wir einfach die Authentifizierung mit einem Provider. Jeder Anbieter hat leicht unterschiedliche Implementierungen, unterschiedliche Benennungen, unterschiedliche Versprechungen, so dass wir all das in die einfache Authentifizierung integrieren und es einem Entwickler einfacher machen können, in seine Website zu implementieren.

Deshalb ist das Nancy.SimpleAuthentication-Paket vorhanden. Da wir wissen, wie Nancy funktioniert, haben wir die Integration in Nancy vereinfacht, indem wir die Module für die Umleitung, den Authentifizierungsrückruf usw. erstellt haben.

Das Problem ist, dass wir einfach nicht wissen, wie Sie einen Benutzer gegen Ihre Website authentifizieren .

Wir können das ganze Formen-Auth-Szenario selbst handhaben, und ich plane es tatsächlich in der Zukunft. (Ich muss zuerst die Ansprüche umsetzen, die ich zu 60% durchmache), aber es wird immer noch erforderlich sein, das IAuthenticationCallbackProvider

zu implementieren %Vor%

Diese Klasse ist erforderlich, damit Sie den Benutzer für Ihre Datenbank authentifizieren können.

Die Sache, über die wir nachgedacht haben, ist, dass 95% der Zeit, in der der Benutzer die Authentifizierung durchführt, höchstwahrscheinlich bereits eine Form der Authentifizierung hat. Normalerweise Formulare Auth.

Also vorausgesetzt, Sie haben SimpleAuthentication übernommen und Ihre IAuthenticationCallbackProvider -Klasse verdrahtet. Alles, was Sie wirklich tun müssen, ist das Forms-Auth-Zeug zu implementieren, das so ziemlich eine Klasse ist, und einen Methodenaufruf.

Im Provider müssen Sie die Methode LoginWithoutRedirect aufrufen, damit Nancy ein Authentifizierungs-Cookie erstellen kann.

Dann müssen Sie die IUserMapper -Klasse einrichten, um Nancy mitzuteilen, wie Sie den Benutzer aus der Datenbank holen können. Wenn Sie RavenDB verwenden, sieht das etwa so aus:

%Vor%

Konfiguriert im Bootstrapper wie:

%Vor%

Und das ist es wirklich ...

Ich persönlich glaube nicht, dass es viel Code ist, den Sie schreiben müssen. Sowohl Nancy als auch Simple Authentication haben die meiste Arbeit für dich erledigt:)

Ich hoffe, wir können SimpleAuthentication in Zukunft noch einfacher machen, indem wir die Forms Auth nicht mehr benötigen, aber jetzt denke ich, dass wir eine ziemlich gute Lösung haben.

Hilfreiche Links:

Ссылка

Ссылка

Der zweite Link für World Domination, obwohl es ein bisschen umbenannt wird, ist es meistens dasselbe. Ich plane, einen aktualisierten Blogpost zu machen und das Wiki neu zu gestalten, wenn wir Behauptungen poliert haben.

Ich hoffe, dass dir das hilft.

Bearbeiten:

  • Ich habe mir vorgenommen, ein End-to-End-Demo-Projekt zu erstellen.
Phill 05.08.2013, 13:45
quelle