2009-06-14 10 views
0

Ich habe eine ASP.NET MVC-Anwendung, in die ich gerade das RPX föderierte Drittanbieter-Identitätssystem integriert habe. Die Integration funktioniert gut, aber ich habe einige Schwierigkeiten, meinen Kopf darauf zu legen, was damit auf ASP.NET-Ebene zu tun ist.Kennwörter für Anwendungen, die Authentifizierung von Drittanbietern verwenden?

Da die Identität extern behandelt wird, brauche ich keine Passwörter in meiner App: Ich erhalte nie das Passwort des Benutzers, nur ihre Identität. Das ASP.NET Membership Provider-Zeug erfordert jedoch, dass Passwörter weitergegeben werden, um einen Benutzer zu erstellen, einen Benutzer zu signieren, usw.

Ich habe überlegt, new Guid() bei der Erstellung verwenden, aber dies würde einen Aufruf erfordern die Datenbank, um das Passwort des Benutzers abzurufen, bevor ich den Benutzer über den Mitgliedschaftsanbieter anmelden konnte. Ich könnte das gleiche Passwort für jeden Benutzer verwenden, so dass es im Voraus bekannt ist, aber ich bin besorgt, dass dies die Daten meines Benutzers unsicher machen würde.

Ich würde gerne hören, wie andere Websites dieses Problem behandeln, z. B. StackOverflow.

[Bitte beachten Sie auch my other question sehen, in Bezug auf die Mitgliedschaft Anbieter für eine solche App.]

Antwort

1

aber ich bin besorgt, dass dies die Daten meines Benutzers unsicher machen würde.

starten, indem sichergestellt wird, dass niemand einen Benutzernamen und Passwort authentifizieren können direkt gegen Ihre Datenbank - Ich stelle mir dies bereits der Fall ist, wie Sie RPX verwenden die eigentliche Authentifizierung zu tun, und Sie werden den Aufruf nur die ASP.NET Mitgliedschaftsanbieter, sobald Sie die Identität des Benutzers bereits festgestellt haben.

Dann wird das auf Ihrer Seite gespeicherte Passwort unwesentlich, weil es kein Geheimnis ist - wenn ich herausfinden kann, was jemandes Passwort auf Ihrer Seite hat, gefährdet es nicht plötzlich ihre Daten, weil ich mich immer noch nicht einloggen kann diese Information. Das Geheimnis des Benutzers wird vom Drittanbieter verwaltet, nicht von Ihnen.

So können Sie auch speichern, was am bequemsten ist (dh ein bekannter Dummy-Wert) - Sie können auch die Passwort-Verschlüsselung auf dem Mitgliedschaftsprovider ausschalten, um einige Zyklen auf dem Server zurück zu bekommen. Kein Problem bei der Verschlüsselung/Hashing von Werten, die nicht zur Überprüfung der Identität eines Benutzers verwendet werden.

1

Warum Mitgliedschaft Verwendung asp.net dann? Es passt nicht wirklich in Sie, was Sie tun, was 3rd-Party-Authentifizierung ist. Vielleicht können Sie einen Blick auf die dotnetopenid project und Beispiele werfen, da sie ein klassisches asp.net-Site-Beispiel haben, das Sie für mvc modifizieren könnten? Sie haben eine wiki here Vielleicht google dotnetopenid mvc?

+0

Ich habe bereits DotNetOpenID betrachtet; Das sind auch MVC-Samples in v3.1. Es behandelt jedoch nur die Authentifizierung, nicht die Autorisierung. Die ASP.NET-Mitgliedschaft scheint die Grundlage für das Autorisierungssystem zu sein, insbesondere das MVC-Attribut [Authorize]. Ich möchte kein eigenes Autorisierungssystem implementieren, wenn ich es vermeiden kann. – alastairs

Verwandte Themen