JwtSecurityToken понимание и исключение - PullRequest
0 голосов
/ 01 октября 2018

Я довольно новичок в JwtSecurityTokens, и я пытаюсь понять различные его аспекты, а также целые claimsidentity и claimprincipal, но это другая история.

Я пытаюсь сгенерироватьтокен в C # с помощью следующего кода:

private const string SECRET_KEY = "abcdef";
private static readonly SymmetricSecurityKey SIGNING_KEY = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(SECRET_KEY));

    public static string GenerateToken(string someName)
    {
        var token = new JwtSecurityToken(
            claims: new Claim[]
            {
                new Claim(ClaimTypes.Name, someName), 
            },
            notBefore: new DateTimeOffset(DateTime.Now).DateTime,
            expires: new DateTimeOffset(DateTime.Now.AddMinutes(60)).DateTime,
            signingCredentials: new SigningCredentials(SIGNING_KEY, SecurityAlgorithms.HmacSha256)
        );

        return new JwtSecurityTokenHandler().WriteToken(token);
    }

Я следовал учебному пособию на Youtube, но не уверен, что понимаю различные части JwtSecurityToken.Кроме того, когда я выполняю код через контроллер только для того, чтобы попытаться вернуть токен, он возвращает ошибку: «IDX10603: Расшифровка не удалась. Ключи пробовали:« [PII скрыт] ».

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

Ответы [ 2 ]

0 голосов
/ 25 мая 2019

Вы должны добавить достаточно символов для вас секретный ключ .если вы установите здесь свой секретный ключ,

//your SECRET_KEY = "abcdef"
new SymmetricSecurityKey(Encoding.UTF8.GetBytes(SECRET_KEY));

измените его на

new SymmetricSecurityKey(Encoding.UTF8.GetBytes("somethingyouwantwhichissecurewillworkk"));

, это должно работать.

0 голосов
/ 01 октября 2018

Алгоритм HS256 требует, чтобы SecurityKey.KeySize было больше 128 бит, а ваш ключ - только 48. Расширьте его, добавив как минимум еще 10 символов.Что касается части «PII является скрытой», это было сделано как часть усилий по соблюдению GDPR, чтобы скрыть любой стек или переменную информацию в журналах.Вы должны включить дополнительные детали с помощью:

IdentityModelEventSource.ShowPII = true;
...