[英]how to add claims in jwt using jose-jwt
我正在使用jose jwt库创建jwt令牌,我不确定如何在有效负载中使用Claims标签。 我想存储用户名和与其相关的其他数据。 下面是我用来生成代码的代码
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()}
};
string token = JWT.Encode(payload, secretKey, JwsAlgorithm.HS256);
return token;
JWT规范讨论了三种类型的声明: 注册的,公开的和私有的。
注册
常见的诸如iss
, sub
, exp
等。
公开声明
IANA JWT索赔注册中心用于指定应公开使用的索赔,以使服务之间的索赔标准化。 这些包含许多有用的name
,例如name
, email
, address
等。
私人索赔
如果仅在自己的应用程序中或在已知的应用程序之间使用令牌,则可以实际添加任何所需的声明。
最好避免使用IANA JWT索赔注册处的索赔用于其他目的(即不要使用name
来存储用户名)。
因此,在您的情况下,您的代码可以像这样添加用户名(带有IANA注册中心的声明)
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;
虽然如果仅用于内部用途,我可能只使用username
或usr
。
要记住的另一件事(很多错误)是,JWT没有加密任何东西。 内容是使用base64编码的,但是任何持有令牌的人都可以读取其中的所有内容。 因此,如果用户看到它们的机会很小,请确保不要在其中放入任何敏感物品。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.