Speicherort des Bearer Tokens in MVC über die Web-API

8

Screnario

Ich habe eine ASP.NET-Web-API, die den OAuth-Kennwortfluss verwendet, um Bearer-Tokens bereitzustellen, um Zugriff auf ihre Ressourcen zu erhalten.

Ich mache gerade eine MVC-App, die diese API verwenden muss.

Der Plan besteht darin, dass die MVC-Controller im Auftrag des Client-Browsers Aufrufe an die API senden.

Die Ajax-Anfragen vom Browser treffen die MVC-Controller und dann werden die API-Aufrufe gemacht. Die Ergebnisse werden dann als JSON an den Client zurückgegeben und in java-script verarbeitet.

Der Client sollte niemals direkt mit der API kommunizieren.

Authentifiziert werden.

Ich muss die beste Methode zur Verarbeitung des Träger-Tokens festlegen, sobald es in der MVC-App über einen erfolgreichen Aufruf des Web-API-Token-Endpunkts empfangen wurde.

Ich muss dieses Bearer-Token bei allen nachfolgenden Aufrufen der API verwenden.

Ich plane, es in System.Web.HttpContext.Current.Session["BearerToken"]

zu speichern

Ich kann dann ein benutzerdefiniertes AuthorizationAttribute erstellen, das prüft, ob ein BearerToken im aktuellen HttpContext vorhanden ist. Wenn es nicht vorhanden ist, muss der Client den Token enpoint erneut besuchen.

Scheint das machbar?

Ich bitte um die Meinung der Leute, da ich nicht davon überzeugt bin, dass dies die beste Lösung für mein Projekt ist.

    
Derek 13.09.2016, 08:57
quelle

2 Antworten

8

Ich habe mir etwas einfallen lassen, von dem ich denke, dass es gut funktionieren wird.

Ich verwende die Owin Middleware zur Cookie-Authentifizierung.

Innerhalb der MVC-Anwendung habe ich eine Owin Startup-Datei, in der die Cookie-Authentifizierung konfiguriert ist: -

%Vor%

Ich habe dann einen AccountController mit zwei Action-Methoden zum Anmelden und Abmelden gemacht: -

Anmelden.

%Vor%

Abmelden

%Vor%

Schützen der Ressourcen

%Vor%     
Derek 13.09.2016, 16:42
quelle
1

Da Sie erwähnt haben, verwenden Sie HttpClient (). Ich habe eine ähnliche Sache mit HttpClient () -

gemacht

Token erhalten -

%Vor%

Verwenden Sie das Token zum Posten von Daten

%Vor%

Auch wenn Sie das Bearer-Token in HttpContext speichern, müssen Sie sich um die Token-Ablaufzeit kümmern, die in der Web-API festgelegt ist. Das Überprüfen der Existenz eines Tokens gerade in der Sitzung hilft nicht, da das alte Token nach der Ablaufzeit ungültig ist.

    
Souvik Ghosh 13.09.2016 10:24
quelle