AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein OAuth 2 für Authentifikation - wer kann mich aufklären
Thema durchsuchen
Ansicht
Themen-Optionen

OAuth 2 für Authentifikation - wer kann mich aufklären

Ein Thema von Meflin · begonnen am 19. Jan 2013 · letzter Beitrag vom 20. Jan 2013
Antwort Antwort
Benutzerbild von Meflin
Meflin

Registriert seit: 21. Aug 2003
4.856 Beiträge
 
#1

OAuth 2 für Authentifikation - wer kann mich aufklären

  Alt 19. Jan 2013, 20:35
Hallo,

ich habe vor, die Authentifikation für eine Webseite über einen OAuth 2 Provider abzuwickeln. Jetzt findet man zur grundlegenden Funktionsweise von OAuth 2 ja ausreichend Informationen und mir ist auch völlig klar, wie ich theoretisch zu Access / Refresh Tokens komme. Die helfen mir ja aber in erster Linie erstmal nur dazu weiter, im Namen des Resource Owners Requests an den OAuth Provider zu schicken.

Ich möchte das ganze aber in erster Linie als Ersatz für eine eigene Username/Passwort-Authentifikation einsetzen, und wie man das am besten anstellt, dazu konnte ich wirklich gar nichts finden. Speichere ich das Token in der Session des Users? Klingt eher blöd, dann müsste ich ja bei jedem Request das Token validieren, was einen weiteren Request zum OAuth Provider bedeuten würde. Genauso möchte ich verhindern, dass der User bei jedem neuen Besuch sichtbar über den OAuth Provider umgeleitet wird, wenn er die Autorisation schon einmal erteilt hat.

Und zu guter letzt, wie unterscheide ich eigentlich neue Benutzer (="Registrierung") und solche, die bereits "angemeldet" sind, BEVOR ich den Benutzer zum OAuth-Provider umleite?

Wer hat Erfahrung mit diesem Szenario und kann diese mit mir teilen? Alternativ wäre ich auch mit einer Quelle zu dieser Thematik zufrieden, wie gesagt konnte ich leider nichts dazu finden.

Viele Grüße
Leo S.
  Mit Zitat antworten Zitat
mjustin

Registriert seit: 14. Apr 2008
3.006 Beiträge
 
Delphi 2009 Professional
 
#2

AW: OAuth 2 für Authentifikation - wer kann mich aufklären

  Alt 20. Jan 2013, 11:08
warum muss das token bei jedem weiteren request erneut validiert werden, wenn es in der session gespeichert ist? die session ist serverseitig. wenn kein risiko eines session-hijacking besteht, sollte das sicher sein.
Michael Justin
  Mit Zitat antworten Zitat
Benutzerbild von Meflin
Meflin

Registriert seit: 21. Aug 2003
4.856 Beiträge
 
#3

AW: OAuth 2 für Authentifikation - wer kann mich aufklären

  Alt 20. Jan 2013, 11:12
warum muss das token bei jedem weiteren request erneut validiert werden, wenn es in der session gespeichert ist? die session ist serverseitig. wenn kein risiko eines session-hijacking besteht, sollte das sicher sein.
Ich brauche ja nach wie vor einen Mechanismus, wie ich mir merken kann, ob ein Benutzer "eingeloggt" ist, sprich ein Cookie auf Clientseite. Was speichere ich in diesem Cookie? Das is tmir nicht ganz klar. Würde ich dort das Token speichern, dann müsste ich es ja validieren. Sonst würde ja jeder Angreifer, der dort einfach irgendeinen Wert hinterlegt, automatisch als eingeloggt gelten. So kann das also nicht funktionieren. Aber wie dann?
Leo S.
  Mit Zitat antworten Zitat
mjustin

Registriert seit: 14. Apr 2008
3.006 Beiträge
 
Delphi 2009 Professional
 
#4

AW: OAuth 2 für Authentifikation - wer kann mich aufklären

  Alt 20. Jan 2013, 11:21
warum muss das token bei jedem weiteren request erneut validiert werden, wenn es in der session gespeichert ist? die session ist serverseitig. wenn kein risiko eines session-hijacking besteht, sollte das sicher sein.
Ich brauche ja nach wie vor einen Mechanismus, wie ich mir merken kann, ob ein Benutzer "eingeloggt" ist, sprich ein Cookie auf Clientseite. Was speichere ich in diesem Cookie? Das is tmir nicht ganz klar. Würde ich dort das Token speichern, dann müsste ich es ja validieren. Sonst würde ja jeder Angreifer, der dort einfach irgendeinen Wert hinterlegt, automatisch als eingeloggt gelten. So kann das also nicht funktionieren. Aber wie dann?
Prinzip der minimalen Datenspeicherung
Nur die Sessioon-Id ist als Cookie notwendig, der Client ist damit identifizierbar. Wenn die Session Id gültig ist, weiss der Server auch, ob die Session bereits authentifiziert wurde. Der Server hat ja ausser der Session Id beliebige Sessiondaten. Ein Boolean IsAuthenticated genügt.
Michael Justin
  Mit Zitat antworten Zitat
Benutzerbild von Meflin
Meflin

Registriert seit: 21. Aug 2003
4.856 Beiträge
 
#5

AW: OAuth 2 für Authentifikation - wer kann mich aufklären

  Alt 20. Jan 2013, 11:31
Nur die Session-Id ist als Cookie notwendig, der Client ist damit identifizierbar.
Ja, mir erschien das immer als zu einfach angreifbar (eine Session ID zufällig zu treffen sollte nahezu unmöglich gemacht werden und es reicht ja nach wie vor das Cookie zu stehlen, um die Authentizität zu übernehmen - was man aber wohl nicht verhindern kann). Aber das scheint ja so durchaus Best Practice zu sein

Also speichere ich mir in einer Tabelle zu jedem Benutzer Auth Token + Refresh Token + Expiration Date. Bei erfolgtem Login speichere ich in einer Session Tabelle die UserId / Session Id. Und wenn ein wiederkehrender Besucher kein gültiges Access Token mehr hat, führe ich im Hintergrund den Refresh aus.
Leo S.
  Mit Zitat antworten Zitat
mjustin

Registriert seit: 14. Apr 2008
3.006 Beiträge
 
Delphi 2009 Professional
 
#6

AW: OAuth 2 für Authentifikation - wer kann mich aufklären

  Alt 20. Jan 2013, 12:02
Nur die Session-Id ist als Cookie notwendig, der Client ist damit identifizierbar.
Ja, mir erschien das immer als zu einfach angreifbar (eine Session ID zufällig zu treffen sollte nahezu unmöglich gemacht werden und es reicht ja nach wie vor das Cookie zu stehlen, um die Authentizität zu übernehmen - was man aber wohl nicht verhindern kann)
Das Risiko kann man falls notwendig mit HTTPS schon deutlich senken.
Ich überlege auch in meinem Webframework OpenId oder Oauth zu unterstutzen, habe mich aber mit der Suche nach Delphi/Free Pascal Libraries bisher noch zurückgehalten.
Happy Coding!
Michael Justin
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:08 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz