ASP.NET Core Web API + Angular 2-Autorisierung und -Authentifizierung

8

Ich habe eine Angular 2-Anwendung, die mit der Web-API kommuniziert und einige grundlegende CRUD-Operationen durchführt. Ich habe wenige Fragen:

  1. Kann ich auf Angular 2 mit ASP.NET Identity eine Anmeldungs- / Registrierungsseite erstellen?
  2. Wie manipuliere ich mit Daten nur den angemeldeten Benutzer? (Token-basierte Authentifizierung? Wie es funktioniert? Wo kann man darüber lesen?)
  3. Wie kann ich den Anmelde- / Registrierungsprozess in der aktuellen Angular 2-Anwendung implementieren, ohne mich auf Identity Server umzuleiten?

Ich habe mir die Beispiele von IdentityServer4, OAuth2 und OpenID angesehen, es ist ein bisschen zu komplex, um es zu verstehen. Ich ging jeden einzelnen Schritt schnell durch, es funktioniert, aber ich verstehe nicht, wie und was es tut.

Kann mir jemand Ressourcen geben, von denen ich anfangen kann? Blogs, Websites, Bücher, Schritt-für-Schritt-Anleitungen.

    
Antoshjke 15.09.2016, 10:24
quelle

1 Antwort

3

Sie haben Recht, dass zu diesem Zeitpunkt die umfassendsten Lösungen für die Authentifizierung und Autorisierung in Systemen, die stark auf HTTP angewiesen sind, auf OAuth 2.0 und OpenID Connect basieren. Dies schließt natürlich Ihr spezifisches Szenario ein, dass ein SPA ein Web-API-Backend aufruft. Weitere Informationen zu diesem generischen Fall finden Sie im API-Architektur-Szenario Auth0 SPA + oder unter a Schauen Sie sich die Schnellstarts an, die sich auf Ihre ausgewählten Technologien konzentrieren:

Hinweis : Auth0 unterstützt OAuth 2.0 / OpenID Connect. Obwohl die Dokumente möglicherweise zusätzliche Funktionen enthalten, die für den jeweiligen Anbieter spezifisch sind, sind sie möglicherweise hilfreich, wenn Sie sich tatsächlich für OAuth 2.0 / OpenID Connect-Route. Es ist einer der Vorteile, wenn man sich auf Standards verlässt, es ist einfacher, zwischen Implementierung / Providern zu wechseln.

Sie sollten jedoch auch überlegen, ob Sie wirklich OAuth 2.0 / OpenID Connect vollständig verwenden müssen, da sie viele verschiedene Anwendungsfälle lösen und daher auch erhebliche Komplexität mit sich bringen. Wenn Sie diesen Weg gehen, empfiehlt es sich, vorhandene Bibliotheken wie IdentityServer oder Cloud-Provider wie Auth0 zu nutzen, da das Ausführen einer eigenen Implementierung ein hohes Risiko birgt und einen erheblichen Aufwand erfordert.

Um Ihre Anforderung zu erfüllen, ein integriertes Login in Ihrem eigenen Angular2-Frontend bereitzustellen, können Sie wahrscheinlich die von OAuth2 angegebene Ressourcenberechtigungsnachweise für Ressourceneigner einsehen.

Eine andere Alternative ist Ihre eigene benutzerdefinierte Lösung, das ist im Allgemeinen verpönt, weil es leicht ist, falsch zu verstehen, aber die Theorie wäre:

  1. Behandle die Benutzerauthentifizierung und -registrierung (möglicherweise unter Verwendung von ASP .NET Identity)
  2. Nach dem Login tauschen Sie die Benutzerdaten mit einigen Token aus, die Sie später zum Aufruf der API verwenden können

Das Token könnte einfach ein zufälliger (nicht ratenbarer) Wert sein, der als Referenz auf einen serverseitigen Speicher verwendet wird, der Informationen über den zugeordneten Benutzer enthält.

    
João Angelo 28.11.2016, 14:29
quelle