срок токена истек что это

Почему срок действия токенов истекает?

Я только начинаю работать с Google API и OAuth2. Когда клиент авторизует мое приложение, мне выдают «токен обновления» и недолговечный «токен доступа». Теперь каждый раз, когда срок действия токена доступа истекает, я могу отправить свой токен обновления в Google, и они предоставят мне новый токен доступа.

У меня вопрос, какова цель истечения срока действия токена доступа? Почему вместо маркера обновления не может быть только длительного маркера доступа?

Кроме того, срок действия маркера обновления истекает?

См. Использование OAuth 2.0 для доступа к API Google для получения дополнительной информации о рабочем процессе Google OAuth2.

Это очень сильно зависит от реализации, но общая идея заключается в том, чтобы позволить провайдерам выдавать токены краткосрочного доступа с токенами долгосрочного обновления. Зачем?

Несколько сценариев могут помочь проиллюстрировать цель доступа и обновления токенов и технические компромиссы при разработке системы oauth2 (или любой другой аутентификации):

Сценарий веб-приложения

В сценарии веб-приложения у вас есть несколько вариантов:

В 1 access_token и refresh_token путешествуют только по проводам между сервером авторизации (в вашем случае Google) и сервером приложений. Это будет сделано по безопасному каналу. Хакер может захватить сеанс, но он сможет взаимодействовать только с вашим веб-приложением. Во 2 хакер может убрать access_token и сформировать свои собственные запросы к ресурсам, к которым пользователь предоставил доступ. Даже если хакер завладеет access_token, у него будет только короткое окно, в котором он сможет получить доступ к ресурсам.

В любом случае, refresh_token и clientid / secret известны только серверу, поэтому веб-браузер не может получить долгосрочный доступ.

Давайте представим, что вы реализуете oauth2 и установили длинный тайм-аут на токене доступа:

В 1) нет большой разницы между токеном короткого и длинного доступа, так как он скрыт на сервере приложений. Во-вторых, кто-то может получить access_token в браузере, а затем использовать его для прямого доступа к ресурсам пользователя в течение длительного времени.

Мобильный сценарий

На мобильном телефоне есть несколько известных мне сценариев:

Сохраните клиентские данные / секретные данные на устройстве и организуйте доступ к ресурсам пользователя.

Используйте бэкэнд-сервер приложений, чтобы держать клиент / секрет и заставить его выполнять оркестровку. Используйте access_token как своего рода сеансовый ключ и передайте его между клиентом и сервером приложений.

В 1) Когда у вас есть клиент / секрет на устройстве, они больше не являются секретом. Любой может декомпилировать, а затем начать действовать так, как будто это вы, с разрешения пользователя, конечно. Access_token и refresh_token также находятся в памяти и могут быть доступны на скомпрометированном устройстве, что означает, что кто-то может выступать в качестве вашего приложения, не предоставляя пользователю свои учетные данные. В этом сценарии длина access_token не влияет на возможность взлома, так как refresh_token находится в том же месте, что и access_token. В 2) клиент / секрет или токен обновления скомпрометированы. Здесь длина срока действия access_token определяет, как долго хакер сможет получить доступ к ресурсам пользователей, если они получат его.

Длина истечения

Здесь все зависит от того, что вы защищаете своей системой аутентификации, и от того, как долго должен истекать срок действия вашего access_token. Если это что-то особенно ценное для пользователя, оно должно быть коротким. Что-то менее ценное, это может быть дольше.

Надеюсь, что довольно длинный пост будет полезен.

Источник

Должен ли истекать срок действия токенов доступа OAuth2 для мобильного приложения?

предполагая, что мы не поддерживаем незашифрованную передачу токена доступа, заботится о первая точка пуля.

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

для мобильных приложений аутентификация клиента не может быть сильнее, потому что » client_id и client_secret, полученные при регистрации, встроены в исходный код вашего приложения. В этом контексте client_secret явно не рассматривается как секрет.»( Google). Это исключает третья проблема.

Итак, в чем преимущество разделения кратковременных токенов доступа и долгоживущих токенов обновления в этом сценарии? Это «хорошо», чтобы просто выдавать маркеры доступа без истечения срока действия и игнорировать всю часть токена обновления?

3 ответов

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

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

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

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

когда аутентификация клиента невозможна, сервер авторизации должен развернуть другие средства для обнаружения злоупотребления токеном обновления.

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

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

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

токены доступа OAuth2 не должны истекать (или, скорее, они истекают, но это может быть через много лет).

маркер доступа может использоваться один раз для получения определенных ресурсов с сервера ресурсов, в частности, он позволяет получать ресурсы, одобренные пользователем. Маркер обновления, с другой стороны, позволяет повторный доступ. Таким образом, нельзя избавиться от токенов обновления, не требуя взаимодействия пользователя между каждым доступом.

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

токены на предъявителя не слабее, чем любая другая форма токена как таковая, как доказано в куче документов (включая один из моих собственных, на который я отправлю ссылку, когда смогу его откопать.) Однако токены на предъявителя подходят только в тех случаях, когда допущения, которые они делают, действительны. Предположение о том, что токен может храниться в секрете, является основным предположением о токенах на предъявителя в целом. Если это не так, токены-носители не утверждают никаких свойств безопасности (хотя некоторые из них все еще сохраняются). См.NIST Уровень 3 токены, которые определяют, какие атаки токены-носители должны победить, как указано в Токены На Предъявителя OAuth. Короче говоря, токены на предъявителя не должны побеждать кражу токена.

токены на предъявителя не могут быть отозваны, это правда. Однако, учитывая, что обычным шаблоном доступа является использование маркера доступа сразу после приобретения, токены доступа должны истекать довольно быстро, чтобы предотвратить потенциальное злоупотребление, даже если случай злоупотребления не может быть придумано в настоящее время. Чем дольше находится токен, тем больше вероятность его кражи. Маркер обновления на самом деле гораздо опаснее украсть, поскольку он обеспечивает повторный доступ в течение более длительного периода времени, если вы не можете защитить идентификатор клиента. OAuth2 может предоставить доступ к ресурсам в целом и, например, может использоваться для предоставления API клиенту на время. С помощью токена обновления можно нанести значительно больший ущерб, в отличие от одного токена использования.

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

при использовании мобильного приложения долговечные токены обновления более безопасны, чем наличие какого-либо многофункционального токена на предъявителя, даже если не предпринимаются шаги для защиты клиента. Это происходит потому, что пользователь не может очистить маркер. Если токен обновления не украден, и пользователь просто хочет отозвать доступ тогда это можно сделать. Токен многоцелевого носителя не может быть отозван, даже если пользователь просто хочет отозвать доступ. Очевидно, что многофункциональный ссылочный маркер базы данных может быть отозван, но это не то, для чего предназначен протокол, и поэтому анализ безопасности, выполненный на OAuth, ничего не говорит о безопасности этой гибридной системы.

В заключение я бы рекомендовал использовать токены обновления и токены базы данных, так как это, скорее всего, будет безопасно. Если вы можете сделать все, чтобы защитить клиента, это бонус, но ситуации, которые это защищает, минимальны. Если вы хотите защитить клиента, рассмотрите мягкие токены, a la Google authenticator, поскольку это твердая реализация, которая выдержала анализ некоторыми очень умными людьми.

Источник

Когда истекает срок действия токенов GCM и что такое InstanceID?

поскольку GCM продолжает обновляться, большинство ресурсов, которые я искал, кажутся устаревшими или неясными. В принципе, я запутался, когда истекает срок действия токенов и идентификаторов. (Для справки, я работаю с Android.)

из того, что я понимаю (и, пожалуйста, поправьте меня, если я ошибаюсь), мой сервер имеет ключ API и идентификатор отправителя. Используя идентификатор отправителя, я могу попросить моего клиента запросить токен через InstanceID, хранящийся локально на моем клиенте. Я уже немного запутался. В instanceid-это назначенный момент, когда мое приложение выходит в интернет? Она когда-нибудь меняется? Как насчет того, когда приложение обновляется или удаляется и переустанавливается (или устройство восстанавливается)? Позвонив в InstanceID.getInstance я всегда буду получать один и тот же InstanceID, или он в конечном итоге истечет и даст мне новый? Есть ли значение для хранения строки, которую вы получаете, вызывая getID ()? Документы, похоже, указывают, что вы фактически получаете новый InstanceID при вызове getID (), так что это еще больше усложняет ситуацию. (Для ссылка, я имею в виду: https://developers.google.com/instance-id/)

используя InstanceID, мой клиент может запросить токен с серверов GCM, который он затем отправляет на мой сервер приложений. Мой сервер приложений хранит этот маркер и может использовать его для отправки сообщений на серверы GCM, которые затем отправят сообщение на устройство. Я считаю, что устройство использует сохраненный InstanceID для фактического получения этих сообщений. Поэтому иметь класс, который расширяет GcmListenerService позволит мне получать эти сообщения с onMessageReceived? Мне не нужно делать ничего особенного (кроме определения его в AndroidManifest)? Мне не нужно на самом деле говорить ему использовать InstanceID? Он просто волшебным образом знает?

когда истекает срок действия этих идентификаторов и токенов? У них есть срок годности? Я храню токен как строку на сервере, но если в какой-то момент один из них истекает, как я могу знать, что они истекли? Я всегда могу создать новый InstanceID и токен, это кажется легким, но затем сделайте старые остаются активными? Как стереть старые токены с сервера? Кажется, есть простой способ сделать это с APNS на стороне iOS вещей, где вы можете получить список всех истекших токенов и просто стереть их из своей базы данных.

3 ответов

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

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

InstanceID назначается момент, когда мое приложение выходит в интернет?

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

это когда-нибудь изменится? Как насчет того, когда приложение обновляется или удаляется и переустанавливается (или устройство восстанавливается)? Позвонив в InstanceID.getInstance я всегда буду получать один и тот же InstanceID, или он в конечном итоге истечет и даст мне новый?

идентификатор экземпляра стабилен, но может стать недействительным, если:

если идентификатор экземпляра стал недопустимым, приложение может вызвать getId (), чтобы запросить новый идентификатор экземпляра.

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

есть ли значение для хранения строки, которую вы извлекаете, вызывая getID ()?

похоже, что API обрабатывает это в локальном хранилище вашего приложения для вас.

используя InstanceID, мой клиент может запросить токен с серверов GCM, который он затем отправляет на мой сервер приложений. Мой сервер приложений хранит этот маркер и может использовать его для отправки сообщений на серверы GCM, который затем отправит сообщение на устройство. Я считаю, что устройство использует сохраненный InstanceID для фактического получения этих сообщений. Поэтому иметь класс, который расширяет GcmListenerService позволит мне получать эти сообщения с onMessageReceived? Мне не нужно делать ничего особенного (кроме определения его в AndroidManifest)? Мне не нужно на самом деле говорить ему использовать InstanceID? Он просто волшебным образом знает?

насколько я могу судить, не было никакого InstanceId в предыдущая реализация, и не похоже, что она явно используется в этом. Если это так, то он вызывается в любом GcmReceiver или GcmListenerService.

когда и жетоны эти документы действительны? У них есть срок годности?

Я уже обратился к истечению ID, и мы можем узнать о токенах, истекающих в руководство по реализации Android InstanceID:

служба ID экземпляра периодически инициирует обратные вызовы (например, каждые 6 месяцев), запрашивая обновление маркеров приложения. Он также может инициировать обратные вызовы, когда:

руководство говорит подкласс InstanceIDListenerService и переопределить onTokenRefresh() для обработки таких ситуаций.

Я храню токен как строку на сервере, но если в любой момент один из них истекает, как я могу знать, что они истекли?

на руководство по реализации GCM на вашем сервере говорит, что сервер GCM ответит на ваш сервер некоторой информацией о токене, который вы использовали для отправки push-уведомления.

Я всегда могу создать новый InstanceID и токен, это кажется легким, но тогда старые остаются активными?

мои тесты показывают, что да, они делают.

Как стереть старые маркеры с сервера? Кажется, есть простой способ сделать это с APNS на стороне iOS вещей, где вы можете получить список всех истекших токенов и просто стереть их из своей базы данных.

Я все еще изучаю это и буду обновите, если я смогу что-то выяснить.

@pumpkinpie65 и @B. Roth вот что я сделал, чтобы обнаружить недопустимые токены в моей базе данных.

в GCM есть опция «dry run» при отправке уведомления пользователю/списку пользователей. Когда вы устанавливаете dry-run во время отправки уведомлений, он не предупреждает клиентов или не показывает им уведомления, но возвращает ответ о том, какие токены действительны(200), а какие нет.

Если вы отправляете уведомление 200 пользователям с использованием опции dry-run, то в том же порядке вы будете получите ответ от GCM.

Что такое идентификатор экземпляра?

Instance ID предоставляет уникальный идентификатор для каждого экземпляра ваших приложений. Вы можете реализовать идентификатор экземпляра для приложений Android и iOS, а также приложений/расширений Chrome.

помимо предоставления уникальных идентификаторов для аутентификации, идентификатор экземпляра может генерировать токены безопасности для использования с другими службами.

Основные Возможности

жизненный цикл ID экземпляра

когда идентификатор экземпляра становится недействительным?

если идентификатор экземпляра стал недействительным, приложение может вызвать getId (), чтобы запросить новый идентификатор экземпляра. Доказать право собственности на экземпляр ID и разрешить серверам доступ к данным или службам, связанным с приложением, вызовите getToken (строка, строка).

когда обновить ключи?

служба идентификаторов экземпляров периодически инициирует обратные вызовы (например, каждые 6 месяцев), запрашивая обновление токенов приложения. Он также может инициировать обратные вызовы, когда:

существуют проблемы безопасности; например, проблемы SSL или платформы. Информация об устройстве больше не действительна; например, резервное копирование и восстановление. Этот В противном случае затрагивается служба ID экземпляра.

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

Источник

Срок действия ключа электронной подписи

срок токена истек что это. Смотреть фото срок токена истек что это. Смотреть картинку срок токена истек что это. Картинка про срок токена истек что это. Фото срок токена истек что это

Из нашей статьи вы узнаете:

Стандартный срок действия сертификата

На какой срок выдаётся сертификат электронной подписи? Стандартный срок его действия — 12 месяцев, но может быть меньше и больше. По его истечению электронная подпись перестаёт действовать, если не перевыпустить сертификат.

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

Разницы в сроке действия сертификата для физических и юридических лиц нет, так как он формируется по единому алгоритму. Различие составляют объём информации и перечень предоставленных документов. В остальном подпись действует от 3 дней до 15 месяцев.

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

Как узнать дату окончания действия подписи

Дата начала действия сертификата закрепляется в едином реестре ключей в момент выдачи владельцу. Также срок действия электронной подписи зашифрован в криптографическом коде. Узнать их можно через криптопровайдер. Приведём инструкцию, как проверить срок действия ключа для криптопрофиля в программе «КриптоПро CSP».

Откроется окно сертификата, нужную информацию можно найти внизу.

Срок выдачи сертификата ключа электронной подписи составляет одни сутки. Однако, если получить ЭЦП нужно срочно, можно воспользоваться услугой «КЭП за 1 час». Подробнее об этом здесь.

Как отозвать сертификат электронной подписи

Электронную подпись можно отозвать в любой момент. Для этого владельцу необходимо подать заявление в удостоверяющий центр.

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

Что делать, если срок действия ключа истёк?

Владелец сертификата электронной подписи должен самостоятельно следить за сроком её действия. Если нужно продлить этот период, то за 14 дней до его истечения нужно подать заявление на продление действия сертификата. Если срок действия ключа подписи истёк, а заявление не подано, работа электронной подписи прекратится.

Истёк срок действия ЭЦП, что делать в этом случае? Только перевыпускать сертификат.

Сейчас в УЦ «Калуга-Астрал» проходит акция @ZABOTA. По её условиям можно продлить срок действия сертификата на 15 месяцев: он будет действителен весь 2022 год и немного больше. Эта акция подходит индивидуальным предпринимателям и юридическим лицам.

Плановая и внеплановая смена сертификата

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

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

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

Часто задаваемые вопросы

Как отозвать электронную подпись?

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

Как проверить, отозван ли сертификат электронной подписи?

Узнать эту информацию можно в личном кабинете. В случае с «Астрал-ЭТ», он находится здесь → «Личный кабинет».

Срок действия «КриптоПро» истёк, что делать?

Действие криптопровайдера нужно продлевать так же, как и действие сертификата электронной подписи. Но если оформить «КриптоПро CSP» с бессрочной лицензией, он будет действовать постоянно.

Источник

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

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