Wie OAuth 2.0 in der Praxis funktioniert:
Ich fuhr auf dem Weg zur Arbeit an Olafs Bäckerei vorbei, als ich den köstlichsten Donut im Schaufenster sah - ich meine, das Ding triefte förmlich vor schokoladiger Güte. Also ging ich hinein und verlangte: "Ich muss diesen Donut haben!". Er sagte: "Klar, das macht 30 Dollar".
Ja, ich weiß, 30 Dollar für einen Donut! Er muss köstlich sein! Ich griff nach meiner Brieftasche, als ich plötzlich den Koch schreien hörte: "NEIN! Kein Donut für Sie". Ich fragte: "Warum? Er sagte, er akzeptiere nur Banküberweisungen.
Ernsthaft? Ja, er hat es ernst gemeint. Fast wäre ich auf der Stelle gegangen, aber dann rief der Donut nach mir: "Iss mich, ich bin köstlich...". Wer bin ich schon, dass ich die Befehle eines Donuts missachte? Ich sagte ok.
Er reichte mir einen Zettel, auf dem sein Name stand (der Chefkoch, nicht der Donut): "Sagen Sie ihnen, Olaf schickt Sie". Sein Name stand schon auf dem Zettel, also weiß ich nicht, was der Sinn dieser Aussage war, aber ok.
Ich bin eineinhalb Stunden zu meiner Bank gefahren. Ich reichte der Kassiererin den Zettel und sagte ihr, dass Olaf mich schickt. Sie warf mir einen dieser Blicke zu, die besagen: "Ich kann lesen".
Sie nahm meinen Zettel, verlangte meinen Ausweis und fragte mich, wie viel Geld ich ihm geben dürfe. Ich sagte ihr 30 Dollar. Sie kritzelte etwas herum und reichte mir einen weiteren Zettel. Auf dem Zettel stand eine Reihe von Zahlen, ich nahm an, dass sie so den Überblick über die Zettel behalten.
Zu diesem Zeitpunkt bin ich am Verhungern. Ich eile hinaus, anderthalb Stunden später stehe ich wieder vor Olaf und halte ihm meinen Zettel hin. Er nahm ihn, sah ihn sich an und sagte: "Ich komme wieder".
Ich dachte, er würde meinen Donut holen, aber nach 30 Minuten wurde ich misstrauisch. Also fragte ich den Mann hinter dem Tresen: "Wo ist Olaf?". Er sagte: "Er ist Geld holen gegangen". "Was meinst du?". "Er bringt einen Zettel zur Bank".
Also nahm Olaf den Schein, den mir die Bank gegeben hatte, und ging zurück zur Bank, um Geld von meinem Konto abzuheben. Da er den Schein hatte, den die Bank mir gegeben hatte, wusste die Bank, dass er der Typ war, von dem ich sprach, und weil ich mit der Bank gesprochen hatte, wussten sie, dass sie ihm nur 30 Dollar geben sollten.
Es muss lange gedauert haben, bis ich das begriffen habe, denn als ich aufblickte, stand Olaf vor mir schließlich mir meinen Donut zu geben. Bevor ich ging, musste ich fragen: "Olaf, hast du die Donuts immer so verkauft?". "Nein, früher habe ich es anders gemacht."
Hm. Als ich zurück zu meinem Auto ging, klingelte mein Telefon. Ich machte mir nicht die Mühe, ans Telefon zu gehen, es war wahrscheinlich mein Job, der mich feuern wollte, mein Chef ist so ein Arschloch. Außerdem musste ich über den Prozess nachdenken, den ich gerade durchlaufen hatte.
Ich meine, denken Sie darüber nach: Ich konnte Olaf 30 Dollar von meinem Bankkonto abheben lassen, ohne ihm meine Kontodaten geben zu müssen. Und ich brauchte mir keine Sorgen zu machen, dass er zu viel Geld abheben würde, weil ich der Bank bereits gesagt hatte, dass er nur 30 Dollar abheben dürfe. Und die Bank wusste, dass er der Richtige war, weil er den Schein hatte, den sie mir gegeben hatten, um ihn Olaf zu geben.
Okay, natürlich würde ich ihm lieber 30 Dollar aus meiner Tasche geben. Aber jetzt, wo er den Zettel hat, könnte ich der Bank sagen, dass er jede Woche 30 Dollar abheben darf, dann könnte ich einfach in der Bäckerei auftauchen und müsste nicht mehr zur Bank gehen. Ich könnte den Donut sogar per Telefon bestellen, wenn ich wollte.
Natürlich würde ich das nie tun - dieser Donut war ekelhaft.
Ich frage mich, ob dieser Ansatz breitere Anwendung finden kann. Er erwähnte, dies sei sein zweiter Ansatz, ich könnte ihn Olaf 2.0 nennen. Wie auch immer, ich gehe besser nach Hause, ich muss mich nach einem neuen Job umsehen. Aber nicht bevor ich mir einen dieser Erdbeershakes aus dem neuen Laden am anderen Ende der Stadt hole, ich brauche etwas, um den Geschmack dieses Donuts wegzuspülen.
51 Stimmen
Oauth2 hier einfach erklärt: gist.github.com/mziwisky/10079157
4 Stimmen
Lesen Sie die Spezifikation: tools.ietf.org/html/rfc6749 Sie werden überrascht sein, wie verständlich sie ist. Es ist auch korrekt, was vielleicht gar nicht so schlecht ist.
1 Stimmen
Diese Frage und ihre (aktuellen) Antworten konzentrieren sich alle auf einen bestimmten "Grant-Typ" in OAuth 2.0 (d.h.
code
), aber es gibt andere in OAuth 2.0 definierte Grant-Typen, die für verschiedene Anwendungsfälle (z. B. nicht nutzerbezogene) relevant sind.5 Stimmen
Warum nicht "Site B" durch etwas besser lesbares wie "IdProvider Site" ersetzen?