Signifikante Unterschiede zwischen Cookies und JWT für native mobile Apps

9

Ich habe in meinen Web-Apps Cookies zur Authentifizierung und Sitzungskontrolle verwendet und bin mit seinen Funktionalitäten zufrieden.

Ich wurde von einem iOS-App-Entwickler vorgestellt, dass das neue heiße Ding JWT (JSON Web Token) ist. Er sagte mir, dass JWT die Art und Weise ist, Authentifizierung und Sitzungen für native mobile Apps durchzuführen, und ohne konkrete Beispiele vorzugeben, dass sowohl iOS- als auch Android-Apps verschiedene Probleme mit Cookies haben.

Also habe ich JWT nachgeschlagen, z. Ссылка und Ссылка , und ich habe nicht verstanden, warum es signifikant besser (oder sogar das anders) als Cookies und genauer gesagt , warum es in nativen mobilen Apps besser ist. Es scheint, dass zumindest iOS Cookies gut behandelt ( Cookies in einer iOS-Anwendung beibehalten? ).

Meine Frage ist also für eine native mobile App, die mit einer serverseitigen API interagiert, was sind die spezifischen Vorteile und die damit verbundenen Anwendungsfälle für die Verwendung von JWT über Cookies für Authentifizierung und Sitzungen? Bitte markieren Sie diejenigen, die Cookies einfach nicht oder viel schlechter machen können.

    
skyork 22.03.2015, 22:16
quelle

1 Antwort

3

Wir Softwareentwickler (manchmal) haben die Tendenz, die neue heiße Sache überall dort anzuwenden, wo wir hinschauen; es ist möglicherweise eine Variation des Sprichworts wenn alles, was wir haben, ein Hammer ist, sieht alles wie ein Nagel aus wo wir in diesem Fall den verzweifelten Drang verspüren, dieses neue Ding zu benutzen, von dem wir gelernt haben.

Ein interessanter Punkt bei diesem Vergleich ist, dass weder JWT noch Cookies tatsächlich Authentifizierungsmechanismen sind ; Das erste definiert nur ein Token-Format und das zweite ist ein HTTP-Statusverwaltungsmechanismus . Nur dies reicht aus, um uns einen Hinweis darauf zu geben, dass die Befürwortung dieser einen besser ist als die andere falsch ist.

Es stimmt jedoch, dass beide in Authentifizierungssystemen weit verbreitet sind.

Herkömmliche serverseitige Webanwendungen haben Cookies verwendet, um einen authentifizierten Benutzer zu verfolgen, so dass diese nicht gezwungen waren, ihre Anmeldeinformationen bei jeder Anforderung anzugeben. Normalerweise wäre der Inhalt des Cookies ein (hoffentlich) zufällig generierter eindeutiger Bezeichner, den der Server verwenden würde, um Sitzungsdaten zu finden, die auf dem Server gespeichert sind.

Für einen neuen Typ von Webanwendung - die API - ist es jedoch eher üblich, einen Token (meistens im JWT-Format) zu akzeptieren, damit der Server entscheiden kann, ob er den Zugriff auf den Benutzer gewähren soll die Anfrage. Der Grund dafür ist möglicherweise, dass, während eine traditionelle Webanwendung einen Haupttyp von Client hatte, der Webbrowser, der vollständige Unterstützung für Cookies hat, die APIs im Allgemeinen von viel einfacheren HTTP-Clients verwendet werden, die nativ keine Cookies unterstützen. p>

Ich denke, das ist auch der Grund, warum wir möglicherweise argumentieren könnten, dass Token-basierte Authentifizierung für native mobile Anwendungen sinnvoller ist. Diese Anwendungen hängen im Allgemeinen von einer serverseitigen Web-API ab, und wir haben festgestellt, dass die Anzahl der Clients, die sie verwenden können, durch die Unterstützung von Tokens erhöht wird. Dies ist also nur die praktischste Lösung.

Zusammenfassend und um zu versuchen, Ihre konkrete Frage zu beantworten, würde ich sagen, JWTs haben einen Vorteil gegenüber Cookies auf nativen mobilen Anwendungen, nur weil sie derzeit sehr häufig verwendet werden, dies bedeutet mehr Lernressourcen, SDKs, bekannt Fallstricke (meistens weil jemand anderes es bereits getan hat und gescheitert ist), etc.

Verwenden Sie sie jedoch nur dann, wenn sie Ihnen die Sicherheitsgarantien geben, die Sie benötigen, und schließlich Ihr Szenario vereinfachen. Wenn Sie es noch nicht durchgespielt haben, werden Sie auch Cookies gegen Tokens: The Definitive zu schätzen wissen Anleitung .

    
João Angelo 13.10.2016 12:04
quelle