2017-10-06 1 views
0

Diese Frage soll verifizieren, dass ich etwas richtig verstehe. Ich erstelle derzeit eine webbasierte Anwendung, die mehrere Seiten umfassen würde (denke, verschiedene SPAs unter der gleichen Domäne), und ich möchte nur einen einzigen Authentifizierungspunkt haben.Seitenanfragen ohne Cookies authentifizieren

Meine Frage ist dann die folgende: Während auf einem SPA ist es möglich, Authentifizierungstoken auf lokalen/Sitzungsspeicher zu speichern, meines Wissens die einzige Möglichkeit zur Authentifizierung einer Seitenanforderung (ein Link zu einer anderen Seite, keine asynchrone Anfrage) ist dies mit einem Cookie, unabhängig von der verwendeten Authentifizierungsmethode (Basic, OAuth, JWT, etc).

Bin ich richtig? Ist dies die einzige verfügbare Methode?

Antwort

1

Es ist eine breite Frage, aber ich würde sagen, dass die Antwort im Allgemeinen "nein" ist. Es gibt eine Reihe von Dingen, die Sie tun können.

Wenn Sie "einen Authentifizierungspunkt" erwähnen, gehe ich davon aus, dass Sie "Single Sign-On" meinen. Es gibt viele Systeme, die Single-Sign-On ermöglichen.

auf breiter Ebene, das ist, wie das funktionieren könnte:

  1. Benutzer auf eine Ihrer Anwendungen geht.
  2. Der Benutzer wird automatisch auf eine Authentifizierungsseite (in einer zentralen Domäne) umgeleitet.
  3. Der Benutzer meldet sich an und die Anmeldeinformationen werden beispielsweise in LocalStorage gespeichert. Dadurch können diese Informationen gespeichert werden.
  4. Das System für einmaliges Anmelden leitet den Benutzer zurück zur ursprünglichen Anwendung und bettet ein einmal verwendbares Token in die URL ein.
  5. Original-Anwendung verwendet das Token, um mehrfach verwendbare Token zu erhalten.

Dies ist ein sehr häufiger Ablauf in OAuth2.

+0

Um zu sehen, ob ich mich richtig zu verstehen, gibt es eine einzige Verwendung Token in einer GET (Seite) Anforderung, dass ich davon ausgehen, ist in der Adressleiste sichtbar, die von einem Skript erfasst und verwendet wird, um sensitivere Anmeldeinformationen asynchron zu erhalten? –

+0

@ PabloBarríaUrenda Ja, das ist ein häufiges Szenario.Ich würde sehr empfehlen, die OAuth2-Spezifikation zu lesen, da die meisten Ihrer Probleme von Leuten gelöst wurden, die lange über diese Angelegenheit nachgedacht haben. Außerdem profitieren Sie davon, dass Sie viel vorhandenen OAuth2-Code für Clients und Server ausleihen. – Evert

+0

Hey Mann, vielen Dank. Aufgrund meines Missverständnisses, wie Bounties funktionieren, habe ich es versäumt, dir die 50 Punkte zu geben, also gebe ich dir stattdessen 100 in ein paar Stunden. –

0

Ich kenne mehrere Optionen:

  • Cookies (keine Erklärung erforderlich)
  • Basis HTTP Authentifizierung

    Es ist sicher Basisauthentifizierung in Verbindung mit HTTPS zu verwenden. Der Authentifizierungsheader wird zwischen den Anforderungen wiederholt, sodass die Anmeldeinformationen einmal eingegeben werden. Das einzige Problem ist hässlich Browser Pop-up anfordernden Anmeldeinformationen

  • Hinzufügen von Token/Unterschrift zu jedem Link von JavaScript oder durch serverseitige HTML-Verarbeitung

    Z.B. jQuery verwendet, dass Code HINWEIS ist vereinfacht

    $(document.body).click('a', e => { 
        var $a = $(e.target).closest('a'); 
        if($a.length) { 
         e.preventDefault(); 
         document.location = $a.attr('href') + '&token=' + secretToken; 
        } 
    }) 
    

Bitte finden good article explaining available authentification methods here

Verwandte Themen