2015-09-07 13 views
5

JWT simgelerini uygulamaya çalışıyorum ama çalışmaya devam ediyorum Aşağıdaki istisna içine: IDX10640: Algoritma desteklenmez: 'http://www.w3.org/2001/04/xmldsig-more#hmac-sha256', jetonu kompakt json dizgisine yazmaya çalışırken.DNX Core 5.0 JwtSecurityTokenHandler "IDX10640: Algoritma desteklenmiyor: 'http://www.w3.org/2001/04/xmldsig-more#hmac-sha256'"

const string issuer = "issuer"; 
const string audience = "audience"; 
byte[] keyForHmacSha256 = new byte[32]; 
new Random().NextBytes(keyForHmacSha256); 

var claims = new List<Claim> { new Claim("deviceId", "12") }; 
var now = DateTime.UtcNow; 
var expires = now.AddHours(1); 
var signingCredentials = new SigningCredentials(
    new SymmetricSecurityKey(keyForHmacSha256), 
    SecurityAlgorithms.HmacSha256Signature, SecurityAlgorithms.Sha256Digest); 

var token = new JwtSecurityToken(issuer, audience, claims, now, expires, signingCredentials); 
return _tokenHandler.WriteToken(token); 

Bunu çözmek için herhangi bir fikir var mı?

güncelleştirme 1:

hata yukarıdaki "System.IdentityModel.Tokens.Jwt" oluşur "5.0.0-beta7-208241120"

Update 2:

Güncel kod

+0

Ben kod sonraki bit ile yapılabilir Aynı sorunu yaşayan m. System.IdentityModel.Tokens.Jwt' kütüphanesinin '5.0.0-beta7-208241120' sürümünü mi kullanıyorsunuz? –

+0

Evet, duyduğuma sevindim tek kişi ben değilim ... – sboulema

+0

1) Neden 'System.Random' kullanarak bir şifreleme anahtarı oluşturdunuz? 2) bir 128 baytlık anahtar anlamsızdır. 128 bit anahtar (16 bayt) istedin mi? 256 bit/32 bayt da akla yatkın bir seçim olacaktır. 3) Yerel zamanı kullanmak da oldukça garip. – CodesInChaos

cevap

2

Simetrik anahtarlar için destek şu anda yok. Umarım yakında bunu elde etmek için.

2

Destek RC2 sürümde olacaktır. jetonu doğrulanıyor

const string issuer = "issuer"; 
const string audience = "audience"; 
var keyForHmacSha256 = Encoding.ASCII.GetBytes("<tokenSecret>"); 
var key = new SymmetricSecurityKey(keyForHmacSha256); 
var claims = new List<Claim> { new Claim("deviceId", "12") }; 
var now = DateTime.UtcNow; 
var expires = now.AddHours(1); 
var signingCredentials = new SigningCredentials(key, SecurityAlgorithms.HMAC_SHA256); 

var token = new JwtSecurityToken(issuer, audience, claims, now, expires, signingCredentials); 
return _tokenHandler.WriteToken(token); 

çalışmak için her şeyi almak için gereken http://myget.org/gallery/azureadwebstacknightly

Sadece hafif kod değişikliklerden gece Nuget paketleri ile test edilmiştir

SecurityToken securityToken; 
var validationParameters = new TokenValidationParameters 
{ 
    ValidateLifetime = true, 
    ValidateAudience = true, 
    ValidateIssuer = true, 
    RequireExpirationTime = true, 
    ValidateSignature = true, 
    ValidAudience = audience, 
    ValidIssuer = issuer, 
    IssuerSigningKey = key, 
    RequireSignedTokens = true, 
    ValidateIssuerSigningKey = true    
}; 

tokenHandler.ValidateToken(token, validationParameters, out securityToken);