Токен не активен что это
Перейти к содержимому

Токен не активен что это

  • автор:

Что означает статус «можно отправлять пуши»

Для отправки мобильного пуша обязательны два условия:
— у устройства есть активный токен;
— у приложения есть разрешение на показ уведомлений.

Если пуши не разрешены или токен не актуален, на такое устройство нет смысла отправлять пуш — пользователь его не увидит.

Эти два поля объединены в флаг «Можно отправлять пуши». При наличии разрешения и активности приложения флаг будет «да».

Значение статусов можно увидеть в карточке клиента:

Снимок экрана 2022-04-14 в 17.24.47.png

Активность устройства

С точки зрения Mindbox активность устройства — это наличие у нас токена, на который можно отправить мобильный пуш.
Токен получаем от телефона через наш мобильный SDK и считаем активным до момента, пока APNs или Firebase не сообщит нам, что этот токен больше не актуален.
Это происходит в момент отправки рассылки.

Если мы получили ошибку в момент отправки сообщения, мы меняем статус активности устройства на «деактивирован», сохраняем текст ошибки, которую получили, и ссылку на сообщение, которое привело к деактивации.

Три наиболее частые причины деактивации:
— токен устарел. Это значит, что в момент отправки мы явно получили сигнал от системы рассылок, что данный токен не актуален, то есть пользователь скорее всего удалил приложение.
— устройство не зарегистрировано в системе отправки. Это значит, что мы не получили от SDK никакого токена. Такое возможно, если пользователь при первом запуске запретил уведомления или если допущена ошибка в интеграции.
— использовано некорректное окружение. Это значит, что в конфигурации SDK использована точка интеграции, которая не подходит к окружению приложения. Подробно про окружения.

Разрешение на уведомление

Этот статус говорит нам о том, разрешил ли пользователь вашему приложения отображать уведомления.
Статус разрешений проверяется нашим мобильным SDK автоматически при каждом открытии приложения.

На iOS нужно явно запросить у пользователя разрешение через системный попап.
На Android разрешение на уведомления от новых приложений проставляется автоматически по тем настройках, которые указаны в магазине приложений.

Если вы хотите реактивировать пользователей, стоит построить коммуникацию в другом канале и рассказать, где найти в настройках нужный пункт для включения разрешения.

What’s Next

Токен авторизации на примере JSON WEB Token

https://proglib.io/p/jwt-for-dummies/

Доброго времени суток, дорогой читатель. В данной статье я постараюсь рассказать об одном из самых популярных (на сегодняшний день) способов авторизации в различных клиент-серверных приложениях — токен авторизации. А рассматривать мы его будем на примере самой популярной реализации — JSON Web Token или JWT.

Введение

Начнем с того, что важно уметь различать следующие два понятия: аутентификации и авторизации. Именно с помощью этих терминов почти все клиент-серверные приложения основывают разделение прав доступа в своих сервисах.

Очень часто к процессу аутентификации примешивают и процесс индентификации — процесс, позволяющий определить что за пользователь в данный момент хочет пользоваться нашим приложением, например, путем ввода логина. Далее нам, как разработчикам и как ответственным людям хочется убедиться, что данный пользователь действительно тот за кого он себя выдает — и поэтому следует процесс аутентификации, когда пользователь подтверждает, что он тот самый %user_name%, например, путем ввода пароля.

Казалось бы, все что необходимо выполнить для безопасности нашего приложения мы сделали. Но нет, еще одним очень важным шагом в любом клиент-серверном приложении является разграничение прав, разрешение или запрет тех или иных действий данному конкретному аутентифицированному пользователю — процесс авторизации.

Еще раз кратко закрепим: сначала идет идентификация и аутентификация, процессы когда мы определяем и удостоверяемся, что за пользователь в данный момент использует наше приложение, а далее идет авторизация — процесс принятия решения о разрешенных данному пользователю действиях.

Еще одно небольшое введение

Прежде чем начать говорить о самом токене авторизации следует упомянуть для каких целей вообще его решили использовать. Поскольку мы знаем, что почти весь интернет так или иначе построен на протоколе HTTP(или его старшем брате HTTPS) и что он не отслеживает состояние, то есть при каждом запросе HTTP ничего не знает, что происходило до этого, он лишь передает запросы, то возникает следующая проблема: если аутентификация нашего пользователя происходит с помощью логина и пароля, то при любом следующем запросе наше приложение не будет знать все тот же ли этот человек, и поэтому придётся каждый раз заново логиниться. Решением данной проблемы является как раз наш токен, а конкретно его самая популярная реализация — JSON Web Tokens (JWT). Также помимо решения вопросов с аутентификацией токен решает и другую не менее важную проблему авторизации (разграничение разрешенных данному пользователю действий), о том каким образом мы узнаем ниже, когда начнем разбирать структуру токена.

Формальное определение

Приступим наконец к работе самого токена. Как я сказал ранее в качестве токенов наиболее часто рассматривают JSON Web Tokens (JWT) и хотя реализации бывают разные, но токены JWT превратились в некий стандарт, именно поэтому будем рассматривать именно на его примере.

JSON Web Token (JWT) — это открытый стандарт (RFC 7519) для создания токенов доступа, основанный на формате JSON.

Фактически это просто строка символов (закодированная и подписанная определенными алгоритмами) с некоторой структурой, содержащая полезные данные пользователя, например ID, имя, уровень доступа и так далее. И эта строчка передается клиентом приложению при каждом запросе, когда есть необходимость идентифицировать и понять кто прислал этот запрос.

Принцип работы

Рассмотрим принцип работы клиент серверных приложений, работающих с помощью JWT. Первым делом пользователь проходит аутентификацию, конечно же если не делал этого ранее и в этом есть необходимость, а именно, например, вводит свой логин и пароль. Далее приложение выдаст ему 2 токена: access token и refresh token (для чего нужен второй мы обсудим ниже, сейчас речь идет именно об access token). Пользователь тем или иным способом сохраняет его себе, например, в локальном хранилище или в хранилище сессий. Затем, когда пользователь делает запрос к API приложения он добавляет полученный ранее access token. И наконец наше приложение, получив данный запрос с токеном, проверяет что данный токен действительный (об этой проверке, опять же, ниже), вычитывает полезные данные, которые помогут идентифицировать пользователя и проверить, что он имеет право на запрашиваемые ресурсы. Таким нехитрым образом происходит основная логика работы с JSON Web Tokens.

https://habr.com/ru/post/336082/

Структура токена

Пришло время обсудить структуру токена и тем самым лучше разобраться в его работе. Первое что следует отметить, что JWT токен состоит из трех частей, разделенных через точку:

  1. Заголовок (header)
  2. Полезные данные (playload)
  3. Подпись (signature)

funnytorimage.pw

Рассмотрим каждую часть по подробнее.

Заголовок

Это первая часть токена. Она служит прежде всего для хранения информации о токене, которая должна рассказать о том, как нам прочитать дальнейшие данные, передаваемые JWT. Заголовок представлен в виде JSON объекта, закодированного в Base64-URL Например:

Если раскодировать данную строку получим:

Заголовок содержит два главных поля: alg и typ. Поле typ служит для информации о типе токена, но как я уже упоминал ранее, что JWT превратился в некий стандарт, то это поле перестало нести особый смысл и служит скорее для целей будущего, если вдруг появится улучшенная версия алгоритма JWT(2.0), которая заменит JWT. Поле alg задает алгоритм шифрования. Обязательный для поддержки всеми реализациями является алгоритм HMAC с использованием SHA-256, или же, как он обозначен в заголовке, HS256. Для работы с этим алгоритмом нужен один секретный ключ, конкретный механизм работы рассмотрим ниже. Для справки можно также отметить, что существует и асимметричный алгоритм, который можно использовать в JWT, например, RS256. Для работы с ним требуется два ключа — открытый и закрытый. Но в данной статье рассмотрим работу с одним закрытым ключом.

Полезные данные

Перейдем наконец к полезным данным. Опять же — это JSON объект, который для удобства и безопасности передачи представляется строкой, закодированной в base64. Наглядный пример полезных данных (playload) токена может быть представлен следующей строкой:

Что в JSON формате представляет собой:

Именно здесь хранится вся полезная информация. Для данной части нет обязательных полей, из наиболее часто встречаемых можно отметить следующие:

iss — используется для указания приложения, из которого отправляется токен.

user_id — для идентификации пользователя в нашем приложении, кому принадлежит токен.

Одной из самых важных характеристик любого токена является время его жизни, которое может быть задано полем exp. По нему происходит проверка, актуален ли токен еще (что происходит, когда токен перестает быть актуальным можно узнать ниже). Как я уже упоминал, токен может помочь с проблемой авторизации, именно в полезных данных мы можем добавить свои поля, которые будут отражать возможности взаимодействия пользователя с нашим приложением. Например, мы можем добавить поле is_admin или же is_preferUser, где можем указать имеет ли пользователь права на те или иные действия, и при каждом новом запросе с легкостью проверять, не противоречат ли запрашиваемые действия с разрешенными. Ну а что же делать, если попробовать изменить токен и указать, например, что мы являемся администраторами, хотя таковыми никогда не были. Здесь мы плавно можем перейти к третьей и заключительной части нашего JWT.

Подпись

На данный момент мы поняли, что пока токен никак не защищен и не зашифрован, и любой может изменить его и тем самым нарушается вообще весь смысл аутентификации. Эту проблему призвана решить последняя часть токена — а именно сигнатура (подпись). Происходит следующее: наше приложение при прохождении пользователем процедуры подтверждения, что он тот за кого себя выдает, генерирует этот самый токен, определяет поля, которые нужны, записывает туда данные, которые характеризуют данного пользователя, а дальше с помощью заранее выбранного алгоритма (который отмечается в заголовке в поле alg токена), например HMAC-SHA256, и с помощью своего приватного ключа (или некой секретной фразы, которая находится только на серверах приложения) все данные токена подписываются. И затем сформированная подпись добавляется, также в формате base64, в конец токена. Таким образом наш итоговый токен представляет собой закодированную и подписанную строку. И далее при каждом новом запросе к API нашего приложения, сервер с помощью своего секретного ключа сможет проверить эту подпись и тем самым убедиться, что токен не был изменен. Эта проверка представляет собой похожую на подпись операцию, а именно, получив токен при новом запросе, он вынимает заголовок и полезные данные, затем подписывает их своим секретным ключом, и затем идет просто сравнение двух получившихся строк. Таким нехитрым способом, если не скомпроментировать секретный ключ, мы всегда можем знать, что перед нами все еще наш %user_name% с четко отведенными ему правами.

Время жизни токена и Refresh Token

Теперь плавно перейдем к следующему вопросу — времени жизни токена, и сопутствующей этой теме refresh token. Мы помним, что одно из важнейших свойств токена — это время его жизни. И оно совсем недолговечное, а именно 10-30 минут. Может возникнуть вопрос: а зачем такое короткое время жизни, ведь тогда придется каждый раз заново создавать новый токен, а это лишняя нагрузка на приложения. А ответ достаточно очевидный, который включает в себя и одновременно ответ на вопрос: а что делать если токен был перехвачен. Действительно, если токен был перехвачен, то это большая беда, так как злоумышленник получает доступ к приложению от имени нашего %user_name%, но так как access token является короткоживущим, то это происходит лишь на недолгий период. А дальше этот токен уже является не валидным. И именно чтобы обновить и получить новый access token нужен refresh token. Как мы знаем (или если забыли можем снова прочитать в начале) пользователь после процесса аутентификацию получает оба этих токена. И теперь по истечении времени жизни access token мы отсылаем в приложение refresh token и в ответ получаем снова два новых токена, опять же один многоразовый, но ограниченный по времени — токен доступа, а второй одноразовый, но долгоживущий — токен обновления. Время жизни refresh token вполне может измеряться месяцами, что достаточно для активного пользователя, но в случае если и этот токен окажется не валидным, то пользователю следует заново пройти идентификацию и аутентификацию, и он снова получит два токена. И весь механизм работы повторится.

Заключение

В данной статье я постарался подробно рассмотреть работу клиент-серверных приложений с токеном доступа, а конкретно на примере JSON Web Token (JWT). Еще раз хочется отметить с какой сравнительной легкостью, но в тоже время хорошей надежностью, токен позволяет решать проблемы аутентификации и авторизации, что и сделало его таким популярным. Спасибо за уделенное время.

Полезные ссылки

  1. 5 Easy Steps to Understanding JSON Web Tokens (JWT)
  2. JWT — как безопасный способ аутентификации и передачи данных
  3. Securing React Redux Apps With JWT Tokens
  4. Зачем нужен Refresh Token, если есть Access Token?

Сообщения об ошибке CSRF токена

Если вы видите сообщение об ошибке CSRF токена при входе в аккаунт Todoist, ничего страшного. Простые решения проблемы описаны ниже.

CSRF токен недействителен или отсутствует

Это сообщение означает, что вашему браузеру не удалось создать защищённые файлы куки или получить к ним доступ, чтобы авторизовать вход в вашу учетную запись. Причиной этого могут быть плагины для блокировки рекламы и скриптов, а также настройки браузера, если они не разрешают настройку куки.

Чтобы решить проблему, следуйте этой инструкции:

Google Chrome

  1. Откройте Настройки Chrome.
  2. В разделе Конфиденциальность и безопасность выберите Файлы cookie и другие данные сайтов.
  3. Прокрутите вниз до Сайты, которые всегда могут использовать файлы cookie и нажмите Добавить.
    • Скопируйте и вставьте «[*.]todoist.com», нажмите Добавить.
    • Затем скопируйте и вставьте «[*.]cloudfront.net», нажмите Добавить.
  4. Нажмите Все файлы cookie и данные сайта, введите в поле поиска todoist и удалите все записи, связанные с Todoist.
  5. Перезагрузите Chrome и войдите в аккаунт Todoist.

Firefox

  1. Откройте Настройки Firefox.
  2. Слева выберите раздел Приватность и Защита.
  3. В разделе Куки и данные сайтов нажмите на кнопку Управление исключениями.
    1. Скопируйте и вставьте «https://todoist.com», нажмите Добавить.
    2. Затем скопируйте и вставьте «https://cloudfront.net», нажмитеДобавить.

    Safari

    1. Откройте настройки Safari из выпадающего меню в панели навигации, либо нажав Cmd + , (⌘,).
    2. Нажмите на вкладку «Конфиденциальность» и убедитесь, что для пункта «Файлы cookie и данные веб-сайтов» не выбрано «Блокировать все файлы cookie» .
    3. Нажмите Управление данными веб-сайтов, чтобы увидеть данные всех веб-сайтов, которые хранятся локально.
    4. Найдите «Todoist» и удалите все записи, связанные с Todoist.
    5. Перезагрузите Safari и войдите в аккаунт Todoist.

    CSRF токены не совпадают

    Это сообщение об ошибке возникает из-за расширений для защиты конфиденциальности. Если вы используете такие расширения, как Ghostery или Privacy Badger, добавьте todoist.com в список доверенных сайтов.

    Вопросы по токенам

    Что такое токен? Токен — это устройство или программное обеспечение, предназначенное для генерации одноразового пароля. Что будет если злоумышленник похитит мой токен? Для предотвращения последствий кражи токена предусмотрен PIN код, который исключает использование токена злоумышленником. PIN код это 4-символьная последовательность цифр, введенная пользователем на этапе выпуска токена. К тому же, в отличии от обычного пароля, кража токена всегда заметна, а значит пользователь может быстро заблокировать и перевыпустить токен, чтобы предотвратить несанкционированные действия злоумышленника. Какие токены Вы поддерживаете? Мы поддерживаем токены, которые работают по стандартным алгоритмам OATH: по времени, по событию, по ответу от сервера.
    Имеется возможность использовать как программные так и аппаратные токены. На выбор предлагаются различные токены Protectimus, наилучшим образом оптимизированные для работы в системе. Помимо этого, Вы можете использовать и другие стандартные токены, например: SafeNet, Yubico, Google Authenticator. Могу ли я заказать токены с собственным логотипом? Да, это возможно. Обратитесь, пожалуйста, в службу поддержки Что означают звездочки на кнопках создания токенов? Количество звезд означает уровень надежности токена. Чем больше золотых звезд, тем выше уровень надежности токена. Этот показатель учитывает каким образом храниться секретный ключ, используемый алгоритм и сложность доступа злоумышленника к сгенерированному паролю. Как мне защититься, если украден мой токен? Для предотвращения кражи токена предусмотрен PIN код, который исключает использование токена злоумышленником. Используйте PIN.
    К тому же, в отличии от обычного пароля, кража токена всегда заметна, а значит пользователь может быстро заблокировать свой аккаунт, чтобы предотвратить несанкционированные действия злоумышленника. Возможен ли перехват значения OTP с моего токена? Токен не связывается с сервером для генерации пароля, а значит вариант с перехватом передаваемого пароля не возможен. Нужен ли доступ к сети Интернет для генерации пароля токеном? Токен является независимым устройством, которое самостоятельно генерирует одноразовый пароль. Доступ ни к каким сетям не нужен.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *