Попытка декодировать JWT в Dot Net Core 2.0 - PullRequest
0 голосов
/ 05 сентября 2018

Я пытаюсь протестировать некоторые функции, где мы декодируем строку JWT и возвращаем объект JwtSecurityToken. Однако у меня есть некоторые проблемы с использованием общего секрета, чтобы помочь мне проверить его. Я думаю, что делаю что-то не так, но у меня были некоторые проблемы, чтобы добраться до сути проблемы.

Сейчас я пытаюсь расшифровать строку

private JwtSecurityToken GetJsonWebTokenFromCookie()
{
    var cookieValueFromContext = HttpContext.Request.Cookies[".FAPPSOJWT"];

    Logger.LogInformation($"cookieValueFromContext: {cookieValueFromContext}");

#if DEBUG
            cookieValueFromContext = "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJuYW1laWQiOiI5MDg4MjczNiIsInVuaXF1ZV9uYW1lIjoibWljaGFlbC5tb3JhbGVzQGljZS5vcmcudWsiLCJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2FjY2Vzc2NvbnRyb2xzZXJ2aWNlLzIwMTAvMDcvY2xhaW1zL2lkZW50aXR5cHJvdmlkZXIiOiJBU1AuTkVUIElkZW50aXR5IiwiQXNwTmV0LklkZW50aXR5LlNlY3VyaXR5U3RhbXAiOiIxZGNhNDQwNC1mMDBlLTQxZWEtOTYwNi03NjE3YWM3YmE3MmQiLCJnaXZlbl9uYW1lIjoiTWljaGFlbCBzYXBwc29hdHRhY2hlZG9uZSIsInJvbGUiOiJUcmFpbmVlIiwiaXNzIjoiaHR0cDovL2xvY2FsaG9zdDo1MjM2NyIsImF1ZCI6IjQxNGUxOTI3YTM4ODRmNjhhYmM3OWY3MjgzODM3ZmQxIiwiZXhwIjoxNTM2MTM0MDU1LCJuYmYiOjE1MzYwNDc2NTV9.4bvW_MAsXW3WmQXPkHtDXP0PO1m1jyDaiqlmtgI7qOI";
#endif

   if (string.IsNullOrEmpty(cookieValueFromContext)) return null;

   string secret = "5043651CD3E2AF73666D216855E5D59F83C4421DB051A44D";
   var key = Encoding.ASCII.GetBytes(secret);
   var handler = new JwtSecurityTokenHandler();

   var validations = new TokenValidationParameters
   {
        ValidateIssuerSigningKey = true,
        IssuerSigningKey = new SymmetricSecurityKey(key),
        ValidateIssuer = false,
        ValidateAudience = false
   };

   var claims = handler.ValidateToken(cookieValueFromContext, validations, out var tokenSecure);

    return (JwtSecurityToken) tokenSecure;
}

Это ошибка, которую я получаю:

Microsoft.IdentityModel.Tokens.SecurityTokenInvalidSignatureException: 'IDX10503: Signature validation failed. Keys tried: 'Microsoft.IdentityModel.Tokens.SymmetricSecurityKey , KeyId: 
'.
Exceptions caught:
 ''.
token: '{"alg":"HS256","typ":"JWT"}.{"nameid":"90882736","unique_name":"michael.morales@ice.org.uk","http://schemas.microsoft.com/accesscontrolservice/2010/07/claims/identityprovider":"ASP.NET Identity","AspNet.Identity.SecurityStamp":"1dca4404-f00e-41ea-9606-7617ac7ba72d","given_name":"Michael sappsoattachedone","role":"Trainee","iss":"http://localhost:52367","aud":"414e1927a3884f68abc79f7283837fd1","exp":1536134055,"nbf":1536047655}'.'

На этой строке:

 var claims = handler.ValidateToken(cookieValueFromContext, validations, out var tokenSecure);

В целях тестирования я использую #IF DEBUG только для того, чтобы убедиться, что код работает перед использованием cookie.

Любая помощь или совет будет принята с благодарностью.

Вот изображение также JWT на JWT.IO

enter image description here

...