Wie zu verwenden JWT in MVC-Anwendung zur Authentifizierung und Autorisierung?
Ich geplant, um zu verwenden ASP.NET Identität 2.0 in einem ASP.NET MVC-Anwendung zur Authentifizierung und Autorisierung.
Bezieht sich die unten stehenden link
JSON Web Token ASP.NET Web-API-2-mit Owin
War ich in der Lage, erstellen Sie ein access-token(JWT) für die gültigen Benutzer-d.h., Wenn der Benutzer Anmeldet, um die Anwendung, die ich überprüft, ob der Benutzer mit name und Passwort, dann werde ich die Frage ein JSON web token für die gültigen Benutzer.
Nun lese ich in einigen Artikeln, die wir brauchen, um passieren die bearer-token im Header für jeden request zur überprüfung des Benutzers für die Authentifizierung. In MVC bieten wir Ermächtigen Attribut für die Methoden, die geschützt werden muss, wie unten gezeigt...
public class UserController : BaseHRAppController
{
[Authorize]
public ActionResult Index()
{
return View();
}
}
Wie zu sagen, mein MVC-Anwendung zu verwenden, JWT, die für die Validierung der Benutzer?
Möchte ich meine MVC-Anwendung den Benutzer überprüfen, mit JWT, wenn der Benutzer versucht, Zugriff auf die Methode mit Autorisierung Attribut. Da ich AJAX verwenden, Anrufe in viele Seiten zu access-Verfahren das in MVC-controller, ich glaube nicht, dass es gut zu pass, ein token auf jedem AJAX-request. Ich brauche Hilfe zu erreichen Authentifizierung und Autorisierung in einer effizienten Weise mit ASP.NET Identität in einer MVC-applicaton.
Derzeit, ich weiß nicht, wie diese zu verwenden, JWT token für die Authentifizierung und Autorisierung in einer MVC-Anwendung.
InformationsquelleAutor SDK | 2015-04-22
Du musst angemeldet sein, um einen Kommentar abzugeben.
Um MVC zu verstehen, etwas über Ihre JWT Sie haben im Grunde sagen Sie es 🙂 . Installieren Sie zuerst die Jwt-Paket von nuget:
Dann öffnen Sie Ihr Startup.cs-Datei und fügen Sie eine neue Funktion, die einem sagen, MVC, wie verbrauchen JWT. An Grundlagen, die Ihr Startup wird etwa so Aussehen:
Werden Sie merken, dass ich die Platzierung der Aussteller, audienceId und audienceSecret in meinem Web.config-Datei. (Diese Werte sollten mit denjenigen übereinstimmen, die auf Ihrer Ressource Server). Auch, möchten Sie vielleicht, um sicherzustellen, Sie haben ein aktualisiertes System.IdentityModel.Token.Jwt läuft:
Mit denen eingestellt ist, können Sie dekorieren Sie Ihre controller-Aktion, mit der [Genehmigen] - Attribut und ball spielen.
Ball spielen natürlich Sinn Feuer Ihre Anfrage aus dem javascript auf das geschützte controller-action:
UPDATE
By The way, wenn Sie möchten, fügen Sie die Werte in Ihrem web.config-Datei, um Sie abzurufen, wie ich es Tat vor; fügen Sie diese einfach unter dem AppSettings:
...natürlich ersetzen die "Werte" mit Ihrem eigenen
Wie platziere ich die Emittentin, audienceId und audienceSecret in meinem Web.config-Datei?
überprüfen Sie das update in der Antwort.
Tolle Antwort. Wie mischst du das mit standard-cookie-Authentifizierung? Ich habe eine MVC 5 Projekt mit normalen Controller, die geschützt sind mit der
Authorize
Attributs und die Verwendung von cookies. Aber ich habe auch Hinzugefügt einige ApiControllers, dass ich Sie schützen wollen, mit JWT. Wie kann ich es so machen cookies sind für den normalen Controller und JWT für Api-Controller?Check-out Shawn Artikel haben sollten, Sie einzurichten und zu gehen. Hoffe es hilft: wildermuth.com/2017/08/19/...
InformationsquelleAutor Houdini Sutherland
Ich weiß nicht, ob du das Problem gelöst, aber ich hatte ein ähnliches Problem und beschlossen, speichern Sie die token mit FormsAuthentication, welches ich war fähig zum verschlüsseln des token, und bei jeder Anfrage den cookie übergeben wurde, zurück und dann konnte ich entschlüsseln, um die JWT und ziehen Sie dann die Rollen/Ansprüche aus und verwenden Sie dann diese Rollen zu erstellen und Identität AUFTRAGGEBER, die erlauben würde, mich zu schmücken controller-Methoden mit [Autorisieren(Rolle="blah,blah")].
Ist hier einige Beispiel-code unten.
Sobald man den JSON web token zurück von der api, nach dem login, können Sie etwas wie:
Habe ich einige meiner selbst erstellten Klassen und Methoden vorhanden, aber es wird Ihnen die Allgemeine Idee, die Sie speichern die JWT access-token sowie das Ablaufdatum in Ihrem FormsAuthentication cookie.
Dann das cookie übergeben wird, mit jeder Anforderung und in Ihrem Global.asax-Datei Sie können eine Methode für die Authentifizierung der Anfrage:
So, dass die Methode, die Sie würden entschlüsselt das cookie, um die JWT Zugriffstoken, die können Sie dann entschlüsseln Sie das System verwenden.IdentityModel.Token.Jwt-Bibliothek von Microsoft und nehmen Sie die Rollen und ID und generieren Sie die principal-und identity-für die Nutzer erstellt, die Ihre Benutzer mit den Rollen.
Dann diese Rollen können validiert werden, gegen die [Genehmigen] - Attribut.
InformationsquelleAutor reverence12389