2009-07-30 9 views
37

Gibt es empfohlene Ressourcen zum Implementieren eines benutzerdefinierten Mitgliedschaftsanbieters, der oAuth verwendet? Das Ziel wäre, dass Benutzer sich mit ihren vorhandenen oAuth-Anmeldeinformationen bei meiner ASP.NET MVC-Anwendung anmelden. Nachdem der Benutzer authentifiziert wurde, möchte ich dann die integrierten ASP.NET-Autorisierungsfunktionen nutzen.oAuth ASP.NET-Mitgliedschaftsanbieter

Danke.

Antwort

45

Ich bin mir nicht sicher, was Sie suchen, ist OAuth.

OAuth dient zum Delegieren der Autorisierung mithilfe von Token. Je nachdem, was Sie tun, haben Sie zwei Szenarien entweder:

  1. Ihre Anwendung möchte einige der Benutzerdaten verwenden, die von einem Anbieter (z. B. Twitter oder Google) gehostet werden. In diesem Fall wäre Ihre Anwendung ein Konsument - kurz gesagt, der Benutzer muss sich anmelden und zustimmen, dass Ihre Anwendung Zugriff auf ihre Daten beim Anbieter erhält, und Sie erhalten ein Zugriffstoken, das verwendet werden kann um Zugriff auf diese geschützten Ressourcen zu erhalten.
  2. Alternativ haben Sie eine Anwendung mit Benutzern, die sich anmelden usw. Und Sie möchten (dh Sie sind der Anbieter) Zugriff auf einige eingeschränkte Informationen Ihrer Benutzer zu Anwendungen von Drittanbietern (Verbraucher) bereitstellen, ohne Ihre Benutzeranmeldeinformationen für diese Dienste.

Für weitere Informationen über OAuth - überprüfen Sie die OAuth.Net website aus. Derzeit sind 3 Implementierungen von OAuth für .Net verfügbar.

Aufgrund der Art und Weise OAuth funktioniert, kann ich nicht wirklich vorstellen, wie Sie eine "OAuth" Mitgliedschaftsanbieter haben könnte - es ist wirklich beabsichtigt zur Sicherung APIs, und oft ist das Ziel, die Autorisierung auf einer feineren Ebene zu delegieren, dh einer Verbraucheranwendung Zugriff auf nur die Adressbuchdaten eines Benutzers zu geben, ohne sie auf E-Mail-Archive, ihren Kalender usw. zugreifen zu lassen - was nicht zu w passt mit einem auf Mitgliedschaft/Rollen basierenden Sicherheitsmodell.

Ich rate, was Sie wirklich suchen, ist OpenId, d. H. Die Art, wie Sie sich mit Stackoverflow selbst authentifizieren. Ich würde vorschlagen, die Stackoverflow OpenId case study here zu lesen und wahrscheinlich die beste OpenId-Implementierung für .Net ist derzeit Teil von DotNetOpenAuth Projekt (das hieß formal DotNetOpenId, die Google-Code-Website für das Projekt is here).

+0

Gerade in einem Kommentar fallen, dass DotNetOpenAuth kann jetzt hier: http://www.dotnetopenauth.net/ –

+4

@bittercoder ich glaube, Sie Menschen mit dieser Antwort aufschieben . Während es wahr ist, dass die meisten Leute oAuth für die Autorisierung von APIs von Drittanbietern verwenden, ist es nicht unvernünftig, eine SSO-benutzerdefinierte asp.net-Mitgliederlösung mit z. Google Apps-Domain, in der das Autorisierungstoken als ASP.NET-Authentifizierungs- (Cookie-) Token verwendet wird, damit es für nachfolgende Rückrufe zum Google API verwendet werden kann. Ich habe genau dieses Szenario, wo meine MVC-App apis in meiner Google Apps-Domain aufruft. oAuth ist sowohl Authentifizierung und Autorisierung. –

+0

Diese Antwort wurde erstellt, bevor OAuth 2 in seiner aktuellen Form (vor 3+ Jahren!) Existiert - ich würde sagen, dass es zu diesem Zeitpunkt korrekt war. Heute denke ich, dass die Welt sich umgedreht hat und die meisten Leute OpenID nicht kennen, OAuth als Authentifizierungsmechanismus betrachten und nicht unbedingt viele der grundlegenden Ideen hinter OAuth kennen (delegierte Authentifizierung/Weg zum sicheren API-Zugriff). – Bittercoder

6

Ich denke, Sie könnten nach DotNetOpenAuth suchen. Ich habe es nicht benutzt, also kann ich Ihnen nicht sicher sagen, ob es einen Mitgliedschaftsanbieter enthält, aber ich würde erwarten, dass es dies tut. Wenn nicht, ist es Open Source, also sollte es Ihnen helfen, was Sie ohnehin machen wollen.

2

sollten Sie einen Blick https://github.com/rustd/ASPNETTemplates nehmen, die die Standard-Projektvorlagen für asp.net hat, die sich mit der OAuth demons anmelden und dann die universellen Anbieter erstreckt (Webforms Vorlage, aber Sie können das gleiche für mvc tun) Rollen zu tun, etc

1

Bibliotheken haben den langen Weg seit Sie diese Frage gepostet ...Ich habe mit dieser Bibliothek für Oauth gestartet - es wurde bereits implementiert Facebook, Twitter, PayPal und Google+ Integration:

OAuth2 Social Logins - Facebook, Google, Twitter, PayPal - ASP.NET MVC C# open source library

Auch, wenn die Rückwärtskompatibilität nicht für Sie ausstellen, hat Microsoft unterstützt beliebte OAuth-Anbieter gestartet siehe ... diesen Artikel:

Microsoft OAuth2 OWIN/Katana integration with Facebook and Google+