【发布时间】:2020-01-21 16:57:44
【问题描述】:
我知道。我知道。很多问题都有这个确切的标题。但在我看过的所有文件中,我找不到一个使用List<Claim>、issuer 和audience 创建 JWT。
private string GetTokenString()
{
var claims = new List<Claim>()
{
new Claim("claim1", "foo-anything"),
new Claim("claim2", "bar-anything")
};
string keyValue = "1234567890qwertyuiopasdfghjklzxcvbnm"; // NOT THE REAL KEY (changed for this SO question)
var key = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(keyValue));
var jwtToken = new JwtSecurityToken
(
issuer: "https://xxxxxx.net",
audience: "https://www.xxxxxx.com",
claims: claims,
signingCredentials: new SigningCredentials(key, SecurityAlgorithms.HmacSha256Signature),
expires: DateTime.Now.AddMinutes(30)
);
var handler = new JwtSecurityTokenHandler();
string tokenString = handler.WriteToken(jwtToken);
return tokenString;
}
然后,如果我将tokenString 插入https://jwt.io/,我得到
签名无效
我创建 JWT 的方式有问题吗?
【问题讨论】:
-
有效载荷中声称的签名验证无关紧要。但是您选中了“秘密 base64 编码”复选框,而在您的代码中,您无处可解码。好像错了。