public EncodedParameters Verify(string token) { if (token == null) { throw new ArgumentNullException("token"); } try { var headers = JWT.Headers(token); if (headers == null || !headers.ContainsKey(HttpSigningConstants.Jwk.AlgorithmProperty)) { Logger.Error("Token does not contain " + HttpSigningConstants.Jwk.AlgorithmProperty + " property in header"); return(null); } var alg = headers[HttpSigningConstants.Jwk.AlgorithmProperty]; if (!Alg.Equals(alg)) { Logger.Error("Signature alg does not match token alg"); return(null); } var json = JWT.Decode(token, _key); if (json == null) { Logger.Error("Failed to decode token"); return(null); } return(EncodedParameters.FromJson(json)); } catch (Exception ex) { Logger.ErrorException("Failed to decode token", ex); } return(null); }