Es gibt einen REST-API-Dienst in Entwicklung, der verschiedene Suchmethoden über die interne SQL-Datenbank für Benutzer bereitstellt, die eine Anfrage stellen. Die Datenbank enthält mehrere Tabellen, und jede davon hat die Spalte user_id, dh einen Referenzschlüssel für die ID-Spalte in der Benutzertabelle (eindeutige ganze Zahl, Primärschlüssel). Das ist wichtig.Ausblenden der internen Benutzer-ID aus dem JWT-Token
Wenn sich der Benutzer von der Client-App anmeldet, erhält er das JWT-Token, das den Abschnitt "sub" mit dem Benutzer-ID-Wert enthält. Wenn der Benutzer dann eine der API-Methoden aufruft, stellt er nur das JWT-Token zur Verfügung, sodass die API die Benutzer-ID von "sub" erhält und die Suchanfrage an die entsprechende Tabelle sendet. Da jede Tabelle eine user_id-Spalte hat, müssen in SQL-Abfragen keine Join-Benutzertabellen erstellt werden (wenn in der Antwort keine Benutzerinformationen benötigt werden).
Das Problem ist, dass das Aussetzen der internen Benutzer-ID eine schlechte Vorgehensweise ist, die Sicherheits-/geschäftliche Probleme verursachen kann. Also ich suche es zu verstecken. Im Moment sehe ich die folgenden Optionen:
Änderung des Benutzer-ID in String-Spalte (mit sequentieller GUID), aber dies ist eine große Bruchänderung für unser System
vorhandene Benutzertabelle mit zusätzlicher ext_user_id Spalte (GUID), und verwenden Sie diesen Wert im JWT-Token. Nachteil ist, dass jede SQL-Abfrage "Join" zur Benutzertabelle hat, um den Benutzer-ID-Wert zu erhalten.
Datenbank unverändert lassen, aber JWE-Token anstelle von JWT verwenden. Nachteil ist, dass jede API-Anfrage eine Token-Entschlüsselung durchführt, die die Leistung beeinträchtigen kann.
Vielleicht gibt es andere Option? Oder einer dieser Ansätze hat mehr Vorteile als andere (eigentlich außer dem ersten)?