Fehler: System.ArgumentOutOfRangeException
The algorithm: 'HS256' requires the
SecurityKey.KeySize to be greater than '128' bits
Die Fehlermeldung tritt auf,
wenn man einen Sicherheitstoken für die Authentifizierung erstellt
Asp.Net Core Wep Api, Identity, Authentifizierung, JWTBearer
Fehlermeldung im Code
System.ArgumentOutOfRangeException
HResult=0x80131502
Message=IDX10603:
The algorithm: 'HS256' requires the SecurityKey.KeySize to
be greater than '128' bits.
KeySize reported: '80'.
Source=Microsoft.IdentityModel.Tokens
|
Der Fehler tritt auf, wenn
man
SymmetricSecurityKey securityKey = new SymmetricSecurityKey(Encoding.ASCII.GetBytes(secret));
return securityKey;
|
using
Microsoft.IdentityModel.Tokens; //*Token
|
Lösung:
Man muss einen längeren Kodierungsschlüssel
eingeben
In diesem Fall wurde der
secret_Encoder_Key von "123456789" auf "1234567890 a very long
word" geänderr
C# Code
//< ok output JwtToken >
String secret_Encoder_Key = "1234567890 a very long word";
JwtToken token = new JwtTokenBuilder()
.AddSecurityKey(JwtSecurityKey.Create(secret_Encoder_Key))
.AddSubject("Api-Test")
.AddIssuer("Test.Security.Bearer")
.AddAudience("Test.Security.Bearer")
//.AddClaim("EmployeeNumber",
"1234")
.AddExpiry(5) //Lifetime in Minutes
.Build();
//return
Ok(token);
|
StackTrace:
at
Microsoft.IdentityModel.Tokens.SymmetricSignatureProvider..ctor(SecurityKey
key, String algorithm)
at
Microsoft.IdentityModel.Tokens.CryptoProviderFactory.CreateSignatureProvider(SecurityKey
key, String algorithm, Boolean willCreateSignatures)
at
Microsoft.IdentityModel.Tokens.CryptoProviderFactory.CreateForSigning(SecurityKey
key, String algorithm)
at
System.IdentityModel.Tokens.Jwt.JwtSecurityTokenHandler.CreateEncodedSignature(String
input, SigningCredentials signingCredentials)
at
System.IdentityModel.Tokens.Jwt.JwtSecurityTokenHandler.WriteToken(SecurityToken
token)
at
Freiberufler.Provider.JWT.JwtToken.get_JwtToken_String() in
C:\_Daten\Desktop\VS_Projects\Web\Freiberufler\Freiberufler\Provider\JWT\JwtToken.cs:line
25
at
Freiberufler.Controllers.TokenController.Create(LoginInputModel inputModel) in
C:\_Daten\Desktop\VS_Projects\Web\Freiberufler\Freiberufler\Controllers\TokenController.cs:line
54
at
Microsoft.Extensions.Internal.ObjectMethodExecutor.Execute(Object target,
Object[] parameters)
at
Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.<InvokeActionMethodAsync>d__12.MoveNext()