Esempio n. 1
0
        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);
        }