Region | URL |
|---|---|
AMER | https://amer.api.transit-hub.thomsonreuters.com/webhooks/certificate/public |
APAC | https://emea.api.transit-hub.thomsonreuters.com/webhooks/certificate/public |
EMEA | https://apac.api.transit-hub.thomsonreuters.com/webhooks/certificate/public |
/// <summary> /// Check if the JWT signature is valid. /// </summary> /// <param name="token">JWT sent with request.</param> /// <param name="publicKey">Public key for signature validation.</param> /// <param name="cancellationToken">Cancellation token.</param> /// <returns>Is token valid</returns> public async Task<bool> ValidateJwtSignature(string token, byte[] publicKey, CancellationToken cancellationToken) { var jwtHandler = new JwtSecurityTokenHandler(); var jwt = jwtHandler.ReadJwtToken(token); try { using (var rsa = RSA.Create()) { rsa.ImportRSAPublicKey(publicKey, out _); var validationParameters = new TokenValidationParameters { ValidateAudience = false, ValidateIssuer = false, ValidateIssuerSigningKey = true, IssuerSigningKey = new RsaSecurityKey(rsa), CryptoProviderFactory = new CryptoProviderFactory { CacheSignatureProviders = false } }; SecurityToken validatedToken; jwtHandler.ValidateToken(jwt.RawData, validationParameters, out validatedToken); return true; } } catch (SecurityTokenExpiredException) { return false; } catch (Exception) { return false; } }