2017-02-07 7 views
1

Ich verstehe, dass ein JWT einige Informationen über die Rolle des Benutzers enthalten kann, die auf dem Server verifiziert werden soll, z. in scope, so dass ein Benutzer, der keine Rolle spielt, nicht auf Daten von bestimmten Endpunkten zugreifen kann, die für diese Rolle gesichert sind.Client-seitige JWT-rollenbasierte Autorisierung

{ 
    "iss": "http://issuer.com", 
    "exp": 1300819380, 
    "scopes": ["customer", "supplier", "seller"], 
    "sub": "[email protected]" 
} 

So sind die Daten sicher. Nehmen wir an, ich habe ein Dashboard, dessen Funktionen ich einem Benutzer nicht anzeigen möchte.

In Anbetracht der JWT kann manipuliert werden mit Client-Seite, wie gehen Sie über die Sicherung solcher Seiten in einem SPA?

Antwort

1

Wie Sie bereits bemerkt haben, kann der clientseitige Code manipuliert werden. Daher ist kein sicherer Ort für die Logik, die den Zugriff des Benutzers einschränkt. Unter der Annahme, dass die Funktionen des Dashboards tatsächlich Funktionen sind, die von einer API bereitgestellt werden (z. B. Anzeigen von Daten, die durch eine GET-Anforderung abgerufen werden, oder Bearbeiten von Daten über eine POST-, PUT-, DELETE-Anforderung), können Sie stattdessen diese API-Endpunkte schützen. Selbst wenn ein böswilliger Benutzer den clientseitigen Code manipulieren würde, würde er keine geschützten Daten erhalten oder ändern.

Aber zu Ihrer spezifischen Frage, wie Sie die Seiten in einem SPA sichern, gibt es keinen solchen Weg. Selbst wenn der Code verschleiert ist, ist es immer noch möglich, dass ein anspruchsvoller Benutzer beliebig sezieren und verändern kann.

+0

Danke für die Inisght. Tatsächlich sind die Funktionen des Dashboards, die ich erwähnt habe, in der Single-Page-App geladen und sind unabhängig von API-Daten. Ich möchte diese Funktionen auch schützen. Ich verstehe, dass ein hoch entwickelter Angreifer alle clientseitigen Maßnahmen umgehen kann, die ich anwende, aber ich suche nach einem Setup, das vor den anderen 99% schützt. – softcode