Die JWT Spezifikation spricht über drei Arten von Forderungen: Registered, Public and Private.
Registrierte
The usual ones wie iss
, sub
, exp
, etc
Öffentliche Ansprüche
Die IANA JWT Claims Registry wird verwendet, um die Ansprüche anzugeben, die öffentlich verwendet werden sollten, um sie zwischen Diensten zu standardisieren. Diese enthält viele nützliche diejenigen wie name
, email
, address
usw.
Privat Ansprüche
Wenn Sie nur Ihr Token innerhalb Ihrer eigenen Anwendung oder zwischen bekannten Anwendungen verwendet man eigentlich hinzufügen könnte was auch immer behauptet, Sie wollen.
Es könnte eine gute Idee sein, die Ansprüche aus dem IANA JWT Claims Registry für andere Zwecke zu verwenden (dh verwenden Sie nicht name
, um den Benutzernamen des Benutzers zu speichern).
So Ihr Code in Ihrem Fall könnte einfach so sein, den Benutzernamen hinzufügen (mit der Forderung aus der IANA Registry)
byte[] secretKey = Base64UrlDecode("-----BEGIN PRIVATE KEY-----");
DateTime issued = DateTime.Now;
DateTime expire = DateTime.Now.AddHours(10);
var payload = new Dictionary<string, object>()
{
{"iss", "service email"},
{"aud", "https://identitytoolkit.googleapis.com/google.identity.identitytoolkit.v1.IdentityToolkit"},
{"sub", "service email"},
{"iat", ToUnixTime(issued).ToString()},
{"exp", ToUnixTime(expire).ToString()},
{"preferred_username", "MyAwesomeUsername"}
};
string token = JWT.Encode(payload, secretKey, JwsAlgorithm.HS256);
return token;
Obwohl, wenn es nur für den internen Gebrauch ist würde ich wahrscheinlich gehen mit nur username
oder usr
ich selbst.
Eine andere Sache zu erinnern (und dass viele falsch verstehen) ist, dass JWT nichts verschlüsselt. Der Inhalt ist base64-kodiert, aber jeder, der Ihr Token ergreift, kann alles darin lesen. Stellen Sie also sicher, dass Sie nichts Empfindliches in sich tragen, wenn die Wahrscheinlichkeit gering ist, dass ein Benutzer sie sehen kann.