diff --git a/Controllers/Managers/TokenManager.cs b/Controllers/Managers/TokenManager.cs index c2ca547..610a891 100644 --- a/Controllers/Managers/TokenManager.cs +++ b/Controllers/Managers/TokenManager.cs @@ -128,7 +128,7 @@ namespace Icarus.Controllers.Managers var result = false; var token = DecodeToken(accessToken); - if (token == null) + if (token == null || token.Erroneous()) { return result; } @@ -148,19 +148,26 @@ namespace Icarus.Controllers.Managers var rsaParams = GetRSAPublic(_publicKey); Token tok = null; - using (var rsa = new RSACryptoServiceProvider()) + try { - rsa.ImportParameters(rsaParams); + using (var rsa = new RSACryptoServiceProvider()) + { + rsa.ImportParameters(rsaParams); - IJsonSerializer serializer = new JsonNetSerializer(); - IDateTimeProvider provider = new UtcDateTimeProvider(); - IJwtValidator validator = new JwtValidator(serializer, provider); - IBase64UrlEncoder urlEncoder = new JwtBase64UrlEncoder(); - var algorithm = new JWT.Algorithms.RS256Algorithm(rsa); - IJwtDecoder decoder = new JwtDecoder(serializer, validator, urlEncoder, algorithm); - - var json = decoder.Decode(accessToken); - tok = JsonConvert.DeserializeObject(json); + IJsonSerializer serializer = new JsonNetSerializer(); + IDateTimeProvider provider = new UtcDateTimeProvider(); + IJwtValidator validator = new JwtValidator(serializer, provider); + IBase64UrlEncoder urlEncoder = new JwtBase64UrlEncoder(); + var algorithm = new JWT.Algorithms.RS256Algorithm(rsa); + IJwtDecoder decoder = new JwtDecoder(serializer, validator, urlEncoder, algorithm); + + var json = decoder.Decode(accessToken); + tok = JsonConvert.DeserializeObject(json); + } + } + catch (Exception ex) + { + _logger.Error("An error occurred: {0}", ex.Message); } diff --git a/Models/Token.cs b/Models/Token.cs index b1d4214..bfa5889 100644 --- a/Models/Token.cs +++ b/Models/Token.cs @@ -41,6 +41,16 @@ namespace Icarus.Models return result; } + + public bool Erroneous() + { + var result = true; + Func isEmpty = a => string.IsNullOrEmpty(a); + result = (!isEmpty(Scope) && !isEmpty(Audience) && !isEmpty(Issuer) && + Expiration > 0 && Issued > 0) ? false : true; + + return result; + } #endregion } } \ No newline at end of file