Again my first time developing an asp.net core rest API. See below snippet:
And below is the error:
- "errorMessage": "System.ArgumentException: IDX12709: CanReadToken() returned false. JWT is not well formed: 'System.String'.\nThe token needs to be in JWS or JWE Compact Serialization Format. (JWS): 'EncodedHeader.EndcodedPayload.EncodedSignature'. (JWE): 'EncodedProtectedHeader.EncodedEncryptedKey.EncodedInitializationVector.EncodedCiphertext.EncodedAuthenticationTag'.\r\n at System.IdentityModel.Tokens.Jwt.JwtSecurityTokenHandler.ReadJwtToken(String token)\r\n at System.IdentityModel.Tokens.Jwt.JwtSecurityTokenHandler.ValidateSignature(String token, TokenValidationParameters validationParameters)\r\n at System.IdentityModel.Tokens.Jwt.JwtSecurityTokenHandler.
Below also is my entire TokenManager:
- public class TokenManager : ITokenManager
- {
-
- private JwtSecurityTokenHandler tokenHandler;
- private byte[] secretKey;
- public TokenManager()
- {
- tokenHandler = new JwtSecurityTokenHandler();
- secretKey = Encoding.ASCII.GetBytes("xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx");
-
- }
- public bool Authenticate(string userName, string password)
- {
- if (!string.IsNullOrEmpty(userName) &&
- !string.IsNullOrEmpty(password) &&
- userName.ToLower() == "ltcadmin" &&
- password == "ltcpassword")
- return true;
- else
- return false;
- }
-
- public string NewToken()
- {
- var tokenDescriptor = new SecurityTokenDescriptor
- {
- Subject = new ClaimsIdentity(new Claim[] { new Claim(ClaimTypes.Name, "LTC LMM") }),
- Expires = DateTime.UtcNow.AddMinutes(5),
- SigningCredentials = new SigningCredentials(
- new SymmetricSecurityKey(secretKey),
- SecurityAlgorithms.HmacSha256Signature)
- };
-
- var token = tokenHandler.CreateToken(tokenDescriptor);
- var jwtString = tokenHandler.WriteToken(token);
- return jwtString;
-
- }
-
- public ClaimsPrincipal VerifyToken(string token)
- {
- var claims = tokenHandler.ValidateToken(token,
- new TokenValidationParameters
- {
- ValidateIssuerSigningKey = true,
- IssuerSigningKey = new SymmetricSecurityKey(secretKey),
- ValidateLifetime = true,
- ValidateAudience = false,
- ValidateIssuer = false,
- ClockSkew = TimeSpan.Zero
- }, out SecurityToken validatedToken);
- return claims;
- }
It says that the error is in line 53. Thank you in advance.