Melden Sie sich mit Google-Authentifizierung und Google Oauth 2.0 bei einer Einzelseitenanwendung an

8

Wir entwickeln eine SPA - full client base javascript-Anwendung und müssen unsere Benutzer authentifizieren, um Zugang zu den Interna zu erhalten.

Wie ich bei der Suche herausgefunden habe, können wir unseren Authentifizierungsmechanismus auslagern und dazu Google-Konten verwenden. Ich habe von dieser Seite gelernt Ссылка - Umgang mit Google API und Mechanismen zur Authentifizierung .

In dem kurzen Wort brauchen wir:

  • Senden Sie eine Anfrage an google url mit params, um den Benutzer zu fragen, ob SPA seine persönlichen Daten verwenden darf
  • Im Erfolgsfall erhalten wir einen Token von Google
  • wir können dieses Token benutzen, um Zugang zu der API zu bekommen, die wir gefragt wurden und damit arbeiten.

Dies ist gut beschrieben und ich verstehe es und habe einige JS-Code, um es geschehen zu lassen.

Was ich nicht verstehe

Ich habe eine Anwendung mit ihren privaten Daten. Ich möchte die E-Mail-Adresse des Benutzers als Login oder Benutzer-ID verwenden (egal, wie sie aufgerufen wird), um auf die Interna der App zuzugreifen, z. B. vom Benutzer erstellte Aufgaben, Benutzerprofile usw. So können die vom Benutzer erstellten Aufgaben in meinem SPA angezeigt werden Ich benötige Abfragedatenbank mit der E-mail des Benutzers.

Ich stelle mir das nächste Szenario vor:

  • Nutzer klicken auf Login with Google button
  • Wir erhalten ein Token - das bedeutet, dass der Benutzer erfolgreich authentifiziert wurde
  • Wir persistieren Benutzer und seine E-Mail, um mit SPA zu arbeiten
  • Wenn Benutzer auf Logout klicken, löschen wir alle Zugangsdaten

Wo sollte ich diese Daten aufbewahren?

Im Fall von Forms Authentication verstehe ich, dass wir Login / Passwort an den Server übergeben und wenn sie mit der Datenbank übereinstimmen, erstellen wir Forms Ticket und speichern sie in Cookie .

Gibt es einen ähnlichen Fall mit der Google-Authentifizierung? Wenn ich die E-Mail-Adresse des Nutzers in einem Cookie speichern möchte, ist das aus Sicherheitsgründen nicht sehr gut. Wenn ich ein Token speichere - ich bin mir nicht sicher, warum ich es brauche und wie ich es in meinem SPA verwende, verwende ich kein Google API nach der Authentifizierung.

Haben Sie einen Beispielfall, wie bauen wir unseren Prozess in ähnlichen Fällen auf?

Danke.

    
Akim Khalilov 14.01.2013, 12:25
quelle

1 Antwort

5

Wenn Sie nur die E-Mail-Adresse des Benutzers benötigen, sollten Sie OpenID anstelle von OAuth verwenden. OAuth bietet Zugriff auf das Konto und die Dienste eines Benutzers, die auf eine bestimmte Ressource oder eine Gruppe von Ressourcen beschränkt sind. OpendID ist nur für die Anmeldung bei einem Drittanbieterdienst konzipiert. Sie können dann die ID und die E-Mail-Adresse des Benutzers aus dem OpenID-Login extrahieren. Hinweis: Die ID wird immer gesendet, aber die E-Mail-Adresse muss während der Authentifizierung explizit angefordert werden.

Google unterstützt auch ein hybrides OpenID + OAuth-Schema, mit dem Sie OAuth-Anfragen über eine OpenID-Anmeldung hinauskopieren können, wenn Sie eine Ressource benötigen, die Sie authentifizieren müssen. Sehen Sie sich das Authentifizierungsdokument an, um sich ein Bild davon zu machen, wie beide Protokolle funktionieren und welches für Ihr Szenario am besten geeignet ist.

Sobald Sie die E-Mail-Adresse erhalten haben, sollten Sie sie wahrscheinlich nicht mehr in einem Cookie aufbewahren. Die normalerweise empfohlene Methode ist das Hinzufügen als Sitzungsparameter. Auf diese Weise wird nur der Sitzungscookie auf dem Client gespeichert und der Server kann ihn verwenden, um die benötigten Werte zu finden. Diese Antwort hat eine gute Erklärung der Unterschiede und wann Sie wollen Verwenden Sie Sitzungen im Gegensatz zu Cookies.

    
hexedpackets 15.01.2013, 21:50
quelle