Ответы пользователя по тегу ASP.NET
  • Как разобрать JSON модель из БД?

    tentrun
    @tentrun Автор вопроса
    Clown c# inside
    Решение найдено - проблема в БД, версия бд <2016 13.0, в нашей БД отсутствует Json_Query
    Ответ написан
    Комментировать
  • Почему не работает JWT bearer token?

    tentrun
    @tentrun Автор вопроса
    Clown c# inside
    Решил проблему.
    Баг с Microsoft.IdentityModel.Tokens
    Ссылка на issue

    Помог откат пакета на 6.27.0 с 6.30.1
    Ответ написан
    Комментировать
  • В чем проблема при валидации JWT токена?

    tentrun
    @tentrun Автор вопроса
    Clown c# inside
    Решил проблему.
    Необходимо было установить явное DateTime.UtcNow в LifeTimeValidator.
    Может кому-то поможет.

    LifeTimeValidator
    LifetimeValidator lifetimeValidator = (DateTime? notBefore, DateTime? expires, SecurityToken securityToken, TokenValidationParameters validationParameters) =>
                {
                    if (expires != null && notBefore != null)
                    {
                        if (DateTime.UtcNow < expires.Value.ToUniversalTime() & DateTime.UtcNow > notBefore.Value.ToUniversalTime())
                        {
                            return true; // Still valid
                        }
                    }
                    return false; // Expired
                };


    Валидация
    if (_authToken != null & tokenHandler.CanReadToken(_authToken) & _authToken?.Length == 348)
                {
                    var jwtSecurityToken = tokenHandler.ReadJwtToken(_authToken);
                    SecurityToken validatedToken;
                    IPrincipal principal = tokenHandler.ValidateToken(_authToken, GetValidationParameters(), out validatedToken);
    
                    if (lifetimeValidator(validatedToken.ValidFrom, validatedToken.ValidTo, jwtSecurityToken, GetValidationParameters()))
                    {
                        if(principal?.Identity?.Name != null)
                        {
                            return true; // Token is valid
                        }
                    }
                    else
                    {
                        return false; // Token is expired
                    }
                }
                return false; // Token is damaged
            }
    Ответ написан
    Комментировать