Проверка подлинности токена на предъявителя OAuth не проходит проверку подписи

Я получаю следующую ошибку на токене потребителя. Любая помощь в решении этого вопроса будет оценена по достоинству. Благодарю.

"IDX10503: Ошибка проверки подписи.

Ключи пробовали: «System.IdentityModel.Tokens.SymmetricSecurityKey». Обнаружены исключения: 'System.InvalidOperationException: IDX10636: SignatureProviderFactory.CreateForVerifying возвратило нулевое значение для ключа:' System.IdentityModel.Tokens.SymmetricSecurityKey ', signatureAlgorithm:'http://www.w3.org/2001/04/xmldsig-more#hmac-sha256». в Microsoft.IdentityModel.Logging.LogHelper.Throw (строковое сообщение, Type exceptionType, EventLevel logLevel, Exception innerException) в System.IdentityModel.Tokens.JwtSecurityTokenHandler.ValidateSignature (байт [кодированный ключ шифрования, алгоритм безопасности] [байт, алгоритм шифрования] в System.IdentityModel.Tokens.JwtSecurityTokenHandler.ValidateSignature (строковый токен, TokenValidationParameters validationParameters) '. токен: «информация о токене была здесь»

Код генерации токена на сервере OAuth

 using (var ctlr = new EntityController())
        {
            var authRepo = ctlr.GetAuthModelRepository();

            string clientId;

            ticket.Properties.Dictionary.TryGetValue(WebConstants.OwinContextProps.OAuthClientIdPropertyKey, out clientId);

            if (string.IsNullOrWhiteSpace(clientId))
            {
                throw new InvalidOperationException("AuthenticationTicket.Properties does not include audience");
            }


            //audience record
            var client = authRepo.FindAuthClientByOAuthClientID(clientId);

            var issued = ticket.Properties.IssuedUtc;
            var expires = ticket.Properties.ExpiresUtc;


            var hmac = new HMACSHA256(Convert.FromBase64String(client.Secret));
            var signingCredentials = new SigningCredentials(
                new InMemorySymmetricSecurityKey(hmac.Key),
                Algorithms.HmacSha256Signature, Algorithms.Sha256Digest);

            TokenValidationParameters validationParams =
                new TokenValidationParameters()
                {
                    ValidAudience = clientId,
                    ValidIssuer = _issuer,
                    ValidateLifetime = true,
                    ValidateAudience = true,
                    ValidateIssuer = true,
                    RequireSignedTokens = true,
                    RequireExpirationTime = true,
                    ValidateIssuerSigningKey = true,
                    IssuerSigningToken = new BinarySecretSecurityToken(hmac.Key)
                };

            var jwtHandler = new JwtSecurityTokenHandler();

            var jwt = new JwtSecurityToken(_issuer, clientId, ticket.Identity.Claims, issued.Value.UtcDateTime, expires.Value.UtcDateTime, signingCredentials);

            jwtOnTheWire = jwtHandler.WriteToken(jwt);

            SecurityToken validatedToken = null;
            jwtHandler.ValidateToken(jwtOnTheWire, validationParams,out validatedToken);
            if (validatedToken == null)
                return "token_validation_failed";

        }
        return jwtOnTheWire;

Потребление токена \ проверка ASP.Net 5 vNext на сайте Owin Startup.cs

public void ConfigureServices (службы IServiceCollection)

services.ConfigureOAuthBearerAuthentication(config =>
        {

            //oauth validation
            var clientSecret = "not the real secret";

            var hmac = new HMACSHA256(Convert.FromBase64String(clientSecret));
            var signingCredentials = new SigningCredentials(
                new SymmetricSecurityKey(hmac.Key), Algorithms.HmacSha256Signature, Algorithms.Sha256Digest);

            config.TokenValidationParameters.ValidAudience = "myappname";
            config.TokenValidationParameters.ValidIssuer = "mydomain.com";
            config.TokenValidationParameters.RequireSignedTokens = true;
            config.TokenValidationParameters.RequireExpirationTime = true;
            config.TokenValidationParameters.ValidateLifetime = true;
            config.TokenValidationParameters.ValidateIssuerSigningKey = true;
            config.TokenValidationParameters.ValidateSignature = true;
            config.TokenValidationParameters.ValidateAudience = true;
            config.TokenValidationParameters.IssuerSigningKey = signingCredentials.SigningKey;
        });

public void Configure (приложение IApplicationBuilder)

app.UseOAuthBearerAuthentication(config =>
            {

                config.AuthenticationScheme = "Bearer";
                config.AutomaticAuthentication = true;
            });

Ответы на вопрос(1)

Ваш ответ на вопрос