Keine Einzelnen Benutzerkonten option auth in ASP.NET Kern-Web-API-Vorlage
Bin ich ein bisschen verwirrt, warum gibt es keine Individuelle Benutzer-Accounts Authentifizierungs-option in der neuesten ASP.NET Kern-Web-API-Vorlage.
Ist es noch möglich, die Umsetzung einzelner Benutzerkonten die Art und Weise, dass die MVC-Vorlage macht oder würde es nicht Sinn machen?
Sagen wir, ich bin die Schaffung einer stand-alone-web-API, die ist zu haben, alle meine business-Logik und Daten-layer, der auf die Datenbank zugreift, die das AspNet-Identität Tabellen. Ich Plane auf Aufrufe für diese API-w/eine MVC-app.
Ich kenne einen Weg, dies zu tun ist, erstellen Sie eine asp.net MVC-app w/einzelne Benutzerkonten auth und erstellen Sie einfach die API direkt in das MVC-app, die mithilfe eines controllers/api-Ordner. Aber ich will nicht zu tun es auf diese Weise, weil ich will, dass die API Ihre eigenen standalone-Projekt gehostet werden können, auf einem komplett anderen server und den Zugriff durch mehrere Anwendungen, nicht nur eine MVC-app.
Kann jemand mich führen, in die richtige Richtung, wie die Authentifizierung funktioniert in der Regel in diesem Szenario, denn es gibt keine Vorlage?
- Sie können kopieren Sie die relevanten bits, aber WebAPI und MVC sind im wesentlichen eine einzige API jetzt. Nur der Unterschied ist, dass Sie nicht haben Ansichten und wie wird die Standard-route konfiguriert. Für WebAPI Sie in der Regel nicht einzelne Konten, wie es standardmäßig keine Möglichkeit hat, das erstellen von Konten (das ist in MVC-Vorlage). Sie wollen wahrscheinlich für die Verwendung von OAuth oder OpenID authentication für WebAPI, anstatt die Authentifizierung mit Benutzername & Passwort. Da ASP.NET Core bietet keine OAuth-Server-middleware mehr, Sie haben zu verwenden OpenIddict oder IdentServer4 für die Autorisierung
- So Indiviudual accounts sind sinnlos, in der WebAPI-Vorlage
- danke für die Antwort. So was bin ich immer noch nicht verstehen, ist die folgende: sagen wir, mein MVC-app hat ein login-Formular. Das login-Formular sendet eine Art ajax-request w/ Username und Passwort an die api für die Authentifizierung und Autorisierung Recht? Dann die API reagiert und ein cookie oder so gesetzt wird? Ich möchte nur sicherstellen, dass ich bin in der richtigen Denkweise und auf dem richtigen Weg.
- Wir freuen uns auf eine weitere Entwicklung auf dieser Abfrage.
- Sie sagen ASP.NET Kern-Identität, die einzelne Konten Vorlagen ist sinnlos ASP.NET Core-WebAPI-Vorlage, da OpenID-Authentifizierung verwendet werden würde, für WebAPI, anstatt die Authentifizierung mit Benutzername & Passwort, aber wie kann die Wahl, WebAPI im backend diktieren user experience im front-end-client. Ich habe Benutzer, die nicht wollen, zu tun, nicht mit einem OpenId Konto mit einer bestehenden OpenId-Providern, wie Sie sich authentifizieren? Sie sollten in der Lage sein, sich zu registrieren mit einem Benutzernamen und Passwort sollten Sie nicht?
- Warum Openiddict, eine Bibliothek für die Implementierung eines ASP.NET Kern OpenId Connect-Server eine Passwort-flow? github.com/openiddict/openiddict-samples/tree/master/samples/... Deutlich OpenId und Benutzername/Passwort sind Optionen der Authentifizierung für client-Anwendungen, ist es nicht das ein oder andere, so zu sagen die Einzelnen Konten Vorlagen sind sinnlos in WebAPI macht keinen Sinn für mich.
- Bisschen off-topic, aber Identität Register-cookie auth. das cookie auth-middleware konfiguriert ist, um eine Umleitung auf eine login-Seite, wenn Sie nicht eingeloggt sind. Dies ist offensichtlich nicht sehr gut funktionieren, wenn Sie Anruf von ajax, als man erwarten würde, entweder eine 401 oder 403 Antwort, keine 301/302 (redirect). Und Sie brauchen nicht ein Konto auf einige Drittanbieter-openid-provider (wie google oder facebook), können Sie hosten Ihre eigenen openid-provider. Nur nicht mit ASP.NET Core-Bibliotheken ausgeliefert, Sie haben nur die Authentifizierung, nicht aber jwt/token ausstellt. So müssen Sie openiddict oder identserver 3/4 für Sie
- Auch openiddict/identserver können die Ausgabe-Token für die Benutzer-Identität kann nicht (diese Funktion gab es in Identität 1 und 2, aber entfernt wurde, in der core-Version von identity). Dies lässt Sie mit der nur die Möglichkeit der Ausgabe von token zu verwenden 3rd-party-Lösungen. Auch Passwort-flow ist nicht zu vergleichen mit dem login-Formular. Identität nur Fragen Sie einen cookie, der beim open-id bietet Ihnen ein bearer-token (access + refresh-token), und es ist dort nur für sehr spezielle Fälle, und die delegation sollte in den meisten (höhere Sicherheit, da Benutzer nicht zur hand haben Passwort an den Besitzer des Dienstes)
- Ja, das macht Sinn, und vielleicht gibt mir ein gewisses Verständnis, als um die Art und Weise der ASP.NET Core-Identity-Vorlagen erzeugt werden kann mit einer dotcore neue webapi-Projekt. Mein denken richtig ist nur, dass ich will, um es einem Benutzer zu registrieren Sie ein neues Konto mit Benutzername/Passwort und Web-API auf das backend zu speichern, die erfolgreich erstellte Konto, und ermöglichen dem Benutzer, später wiederkommen und loggen Sie sich mit Benutzername/Passwort und es scheint nur, wie ASP.NET Kern-Identität ist eine gute out-of-the-box-Lösung.
- mit der openiddict Passwort flow, ich brauche eine db-Tabelle oder 3 zum speichern von Konto-Benutzernamen und-Passwörter und andere account-Informationen, werden Sie sagen, dass ich bei der Umsetzung dieser Tabellen und Ihrer zugehörigen C# - Modelle mich selbst, da ich mit der Web-API, weil ASP.NET Kern-Identität ist speziell für die Arbeit mit einem ASP.NET MVC-Client korrekt?
- noch was verwirrt mich ist, dass die openiddict Passwort-flow-Problem ein gültiges token, wenn eine gültige Benutzername/Passwort zur Verfügung, ich weiß, das Beispiel ist für ASP.NET Core, MVC, aber es gibt keine cookies, verwendet werden, in der openiddict Passwort flow Probe. Das Beispiel stellt Token und ruft CheckPasswordAsync eine Methode ASP.NET Core Identity: github.com/openiddict/openiddict-samples/blob/master/samples/...
- Nein, OpenIddict selbst verwendet Identität, zur Validierung der Passwörter und speichern Sie die client-Geheimnisse und Anwendungs-ids. Aber Identität allein ist nicht ausreichend, um vollständig mit WebAPI, weil Identität allein ist nicht in der Lage zu generieren bearer-Token (übergeben wird mit jeder Anforderung und können aktualisiert werden ohne Benutzer wieder in seine Anmeldeinformationen). Openiddict schließt diese Lücke + bietet eine grundlegende ui/openid-provider-Funktionalität. Passwort fließen in openiddict ist etwas völlig anderes als login-Identität. Identität setzt einen cookie -, Passwort-flow gibt Ihnen einen bearer-token
- Lassen Sie uns weiter, diese Diskussion im chat.
- versuchen Sie vs 2017 Vorschau: visualstudio.com/vs/preview Es hat diese option
- Visual Studio 2017 veröffentlicht wurde, glaube ich, richtig?
- ja, aber es fehlt in der veröffentlichten version. Nun machten Sie Vorschau .NET-Core-2.0-Vorschau 1
Du musst angemeldet sein, um einen Kommentar abzugeben.
Einzelnen Benutzerkonten-Authentifizierung option für die ASP.NET Kern-Web-API ist verfügbar in .NET-Core-2.0-Vorschau 1.
Leider .NET-Core-2.0-Vorschau 1 nicht verfügbar in VS 2017 release.
Aber Sie können installieren Sie Visual Studio 2017 Vorschau (Sie können es verwenden, side-by-side mit VS 2017 stabile version) :
Ich denke, dass Sie verwenden können,IdentityServer4 , die ermöglicht die Implementierung von single sign-on und access control für ASP .NET-Core-Web-APIs mithilfe von Protokollen wie OpenID Connect und OAuth2. Es bietet die integration mit ASP.NET Kern-Identität und Entity Framework-Kern.
Müssen Sie installieren, um die folgenden nuget-Paket:
und fügen Sie den IdentityServer middleware für die HTTP-pipeline:
Finden Sie einige quick-start-Proben hier oder Folgen Sie diese Artikel.