Ho cercato di creare e firmare un JwtSecurityToken utilizzando una semplice chiave. E dopo molte ricerche sembra che tutti gli esempi che trovo utilizzino la classe InMemorySymmetricSecurityKey ma sfortunatamente questa classe non sembra esistere nelle versioni più recenti delle librerie System.IdentityModel.dnx451 RC1 Che cosa è successo a InMemorySymmetricSecurityKey?
Queste sono le dipendenze che sto usando:
"System.IdentityModel.Tokens": "5.0.0-rc1-211161024",
"System.IdentityModel.Tokens.Jwt": "5.0.0-rc1-211161024"
Ho anche provato ad utilizzare è classe base SymmetricSecurityKey ma poi ho la seguente eccezione quando si cerca di creare il token:
"Value cannot be null.\r\nParameter name: IDX10000: The parameter 'signatureProvider' cannot be a 'null' or an empty object."
Questo è il codice che genera l'eccezione:
public static string CreateTokenHMAC()
{
HMACSHA256 hmac = new HMACSHA256(Convert.FromBase64String("test"));
var key = new SymmetricSecurityKey(hmac.Key);
var signingCredentials = new SigningCredentials(key, SecurityAlgorithms.HmacSha256Signature);
JwtSecurityToken token = _tokenHandler.CreateJwtSecurityToken(new SecurityTokenDescriptor()
{
Audience = AUDIENCE,
Issuer = ISSUER,
Expires = DateTime.UtcNow.AddHours(6),
NotBefore = DateTime.Now,
Claims = new List<Claim>()
{
new Claim(ClaimTypes.Email, "[email protected]")
},
SigningCredentials = signingCredentials
});
return _tokenHandler.WriteToken(token);
}
È la prima volta che utilizzo JwtSecurityToken, quindi suppongo che probabilmente manchi un passaggio da qualche parte
Grazie per la risposta :) –