public static JsonWebKeySet GetJwks()
        {
            KeyVaultClient keyVaultClient = new KeyVaultClient(new KeyVaultClient.AuthenticationCallback(
                                                                   (authority, resource, scope) => KeyVaultUtil.GetToken(authority, resource, scope)));

            var key = Task.Run(() => keyVaultClient.GetKeyAsync(SignKey())).ConfigureAwait(false).GetAwaiter().GetResult();

            var e = Base64UrlEncoder.Encode(key.Key.E);
            var n = Base64UrlEncoder.Encode(key.Key.E);

            var jsonWebKey = new Microsoft.IdentityModel.Tokens.JsonWebKey()
            {
                Kid = KEY,
                Kty = "RSA",
                E   = Base64UrlEncoder.Encode(key.Key.E),
                N   = Base64UrlEncoder.Encode(key.Key.N),
                Alg = "RS256"
            };
            JsonWebKeySet jsonWebKeySet = new JsonWebKeySet();

            jsonWebKeySet.Keys.Add(jsonWebKey);

            return(jsonWebKeySet);
        }
        public static string Sign(byte[] inputBytes)
        {
            // signature
            SHA256 sha256 = SHA256Managed.Create();

            KeyVaultClient keyVaultClient = new KeyVaultClient(new KeyVaultClient.AuthenticationCallback(
                                                                   (authority, resource, scope) => KeyVaultUtil.GetToken(authority, resource, scope)));

            KeyOperationResult resultSign = Task.Run(() => keyVaultClient.SignAsync(SignKey(),
                                                                                    JsonWebKeySignatureAlgorithm.RS256, sha256.ComputeHash(inputBytes)))
                                            .ConfigureAwait(false).GetAwaiter().GetResult();
            var signatureEncoded = System.Convert.ToBase64String(resultSign.Result);

            return(signatureEncoded);
        }