Token validation

This commit is contained in:
Kun Deng
2022-08-27 20:16:01 -04:00
parent fd0f487615
commit e5bea187f4
2 changed files with 29 additions and 12 deletions
+19 -12
View File
@@ -128,7 +128,7 @@ namespace Icarus.Controllers.Managers
var result = false; var result = false;
var token = DecodeToken(accessToken); var token = DecodeToken(accessToken);
if (token == null) if (token == null || token.Erroneous())
{ {
return result; return result;
} }
@@ -148,19 +148,26 @@ namespace Icarus.Controllers.Managers
var rsaParams = GetRSAPublic(_publicKey); var rsaParams = GetRSAPublic(_publicKey);
Token tok = null; Token tok = null;
using (var rsa = new RSACryptoServiceProvider()) try
{ {
rsa.ImportParameters(rsaParams); using (var rsa = new RSACryptoServiceProvider())
{
rsa.ImportParameters(rsaParams);
IJsonSerializer serializer = new JsonNetSerializer(); IJsonSerializer serializer = new JsonNetSerializer();
IDateTimeProvider provider = new UtcDateTimeProvider(); IDateTimeProvider provider = new UtcDateTimeProvider();
IJwtValidator validator = new JwtValidator(serializer, provider); IJwtValidator validator = new JwtValidator(serializer, provider);
IBase64UrlEncoder urlEncoder = new JwtBase64UrlEncoder(); IBase64UrlEncoder urlEncoder = new JwtBase64UrlEncoder();
var algorithm = new JWT.Algorithms.RS256Algorithm(rsa); var algorithm = new JWT.Algorithms.RS256Algorithm(rsa);
IJwtDecoder decoder = new JwtDecoder(serializer, validator, urlEncoder, algorithm); IJwtDecoder decoder = new JwtDecoder(serializer, validator, urlEncoder, algorithm);
var json = decoder.Decode(accessToken); var json = decoder.Decode(accessToken);
tok = JsonConvert.DeserializeObject<Token>(json); tok = JsonConvert.DeserializeObject<Token>(json);
}
}
catch (Exception ex)
{
_logger.Error("An error occurred: {0}", ex.Message);
} }
+10
View File
@@ -41,6 +41,16 @@ namespace Icarus.Models
return result; return result;
} }
public bool Erroneous()
{
var result = true;
Func<string, bool> isEmpty = a => string.IsNullOrEmpty(a);
result = (!isEmpty(Scope) && !isEmpty(Audience) && !isEmpty(Issuer) &&
Expiration > 0 && Issued > 0) ? false : true;
return result;
}
#endregion #endregion
} }
} }