2017-10-24 3 views
4

Ich möchte eine statische Website mit Gatsby erstellen. Das ist alles in Ordnung, aber ich möchte eine Authentifizierung und Autorisierung haben, da es sich um eine interne Site handelt - sie sollte nur von Personen in meiner Firma aufgerufen werden. Ich habe darüber nachgedacht, und ohne eine Serverkomponente ist es unmöglich (?), Benutzer ohne irgendeine Art von Backend sicher zu authentifizieren. Ich dachte, ich könnte ASP.NET Core verwenden, um statische Dateien bereitzustellen und vor diesen statischen Dateien Google (for Work) -Authentifizierung und -Autorisierung durchführen zu lassen.Dienen statische Dateien hinter Google-Authentifizierung

Es scheint wie die StaticFileHandlerdoesn't support authorization by design, da es nur für die Bereitstellung statischer Dateien verantwortlich ist, die öffentlich zugänglich sind. Es gelang mir, die Google-Authentifizierung unter Verwendung des Attributs Authorize für meine Root-Aktion (die auf '/' hört) und Login-Aktionen, die eine Challenge ausstellten und der Benutzer zur Authentifizierung an Google weitergeleitet wurde, zu erhalten. Weitere Informationen in der Dokumentation zum Umgang mit statischen Dateien finden Sie unter:

Das statische Dateimodul bietet keine Berechtigungsprüfungen. Alle von Ihnen bereitgestellten Dateien, einschließlich derer unter wwwroot, sind öffentlich verfügbar. Um zu dienen Dateien basierend auf Zulassung:

  • Shop sie außerhalb von wwwroot und einem beliebigen Verzeichnis zugänglich für die statische Datei Middleware und
  • Servieren Sie sie durch eine Controller-Aktion, Zurückgeben eines Fileresult, wenn die Genehmigung angewandt wird

So, jetzt habe ich eine Index Aktion auf meine HomeController, die wie folgt aussieht:

[Authorize] 
public IActionResult Index() 
{ 
    // TODO: Return static files based on incoming requested path. 
    return View(); 
} 

Ich bin nicht sehr glücklich mit dieser Lösung. Soll ich die ganze Sache mit Middleware arbeiten lassen anstatt MVC zu benutzen? Ist das überhaupt der richtige Weg? Gibt es bessere Möglichkeiten, dies zu tun?

Antwort

0

Gatsby erzeugt einen Ordner mit statischem Inhalt, der kein Berechtigungskonzept enthält.

Ich würde vorschlagen, Sie müssen Authentifizierung auf einer anderen Ebene behandeln. Sie könnten zum Beispiel eine einfache Basisauthentifizierungs-Header-Anforderung auf der Webserver-Ebene hinzufügen. Dies wäre in Nginx oder Apache trivial. Wenn Sie die Authentifizierung in Ihr Gatsby-Projekt integrieren, würde dies entweder den Zweck einer statischen Site zunichtemachen oder bedeuten, dass Ihre Inhalte als JSON-Dateien öffentlich zugänglich sind. Ihre React-Anwendung wird jedoch nicht geladen, es sei denn, eine Autorisierungsanforderung wurde erfüllt (unsicher)).

Verwandte Themen