3

Ich schreibe nach der Antwort von den post hereWie ASP.NET MVC-Core mit kantigen mit Identity Server 4 zu verbinden, um Web-API

empfangen verwenden ------------- -------------------------

Ich bin dabei, eine Anwendung zu entwickeln, die eine MVC-Kern-App hat, die einfach den Winkel lädt Anwendung. Die Angular-Anwendung verbindet sich dann mit einer Web-API, um CRUD-Operationen durchzuführen.

Ich bin mir bewusst, dass Cookie-Authentifizierung in Verbindung mit odic Hybrid-Flow verwendet werden kann, um ein Cookie zu generieren, aber nicht sicher, wie die eckige App einen Verweis auf das Zugriffstoken erhalten und erneuern kann, wenn es abläuft Web-API.

Ich habe diesen Artikel https://damienbod.com/2017/05/06/secure-asp-net-core-mvc-with-angular-using-identityserver4-openid-connect-hybrid-flow/ gelesen und dieses Video https://www.youtube.com/watch?v=5OUQZAvxZuA&feature=youtu.be&t=30m40s angesehen, aber nichts davon erklärt, wie die eckige App Zugriff auf das Zugriffstoken erhalten kann, um andere APIs abzufragen.

Ich würde mich sehr freuen, wenn jemand von Ihnen die beste Vorgehensweise erklären könnte, um Zugriff auf das Zugriffstoken zu erhalten und es auch regelmäßig mit dem Aktualisierungstoken zu erneuern.

Antwort

0

Für dieses Szenario würde ich einen impliziten Fluss verwenden. Mit diesem Flow leitet die MVC-App mit dem Zugriffstoken im Callback-URI (durch Definition des OpenID Connect-Protokolls) zu Ihrer Client-App um.

Nachdem Sie Ihre Frage zu Github gelesen haben, glaube ich, dass Sie sich Sorgen um die Sicherheit der Weitergabe des Zugriffstokens auf diese Weise machen? Ich gehe davon aus, dass Ihre UI über HTTP/S angesprochen wird? Wenn dies der Fall ist, ist das Zugriffstoken während der Übertragung sicher. Außerdem befindet sich das Zugriffstoken im Fragmentteil des URI und sollte daher nicht auf den Webserver Ihrer Benutzerschnittstelle übertragen werden. In jedem Fall enthält die erste Anfrage eine Nonce, die Replay-Attacken abschwächen soll.

Für den Zugriff auf das Token verwende ich die ausgezeichnete OIDC Javascript Client.

1

Ich bin dabei, ähnliche Lösung zu schreiben. Ich stimme Ihnen und Ihren Anliegen zu. Jeder mit etwas mehr Wissen über Zugriffstoken und APIs kann das Token aus dem Browser abrufen und es zum Aufrufen Ihrer Web-APIs verwenden. Auch in der Dokumentation sagen sie, gehen Sie mit der Hybrid-Lösung.

Lösung:

Sie können den Hybrid-App erstellen (MVC + Winkel 2) von Visual Studio 2017 SPA-Vorlagen. Folgen Sie dieser Anleitung

https://long2know.com/2017/04/net-core-angular-vs2017-templates/

Das hat alles Setup für Sie und auch Probenkomponente haben, die die Controller-Methode aufruft und die Daten bekommt.

die Identität Server-Konfiguration in Startup-Klasse hinzufügen die gleiche Art und Weise sie

http://docs.identityserver.io/en/release/quickstarts/5_hybrid_and_api_access.html

Schließlich schmücken nur die Homecontroller mit Autorisieren Attribut hier für den mvc Client beschrieben haben. Dies überprüft zunächst Ihren Identitätsserver und leitet Sie basierend auf Ihrer Konfiguration zu der Behörde weiter.Beispiel:

[Authorize] 
public class HomeController : Controller 
{ 
    public IActionResult Index() 
    { 
     return View(); 
    } 

    public IActionResult Error() 
    { 
     return View(); 
    } 
} 

Für Ihre APIs rufen Sie die Controller-Methode aus dem Winkel App aufrufen können (sie haben Beispielaufruf in einer der Komponenten) und das Zugriffstoken greifen und schließlich Ihre API durch Server aufrufen.

Noch arbeiten an einer vollständigen Lösung. Ich hoffe es hilft!

Verwandte Themen