Что значит срок действия токена истек

Должен ли истекать срок действия токенов доступа 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, поскольку это твердая реализация, которая выдержала анализ некоторыми очень умными людьми.

Источник

Что означает срок действия токена истек?

Что такое авторизационный токен?

OAuth-токен (авторизационный токен) — это специальный код или ключ, выдаваемый API Яндекса и API Google для доступа к данным. … Пользователь авторизуется на Яндексе или на Google (под своим логином) и подтверждает доступ Робота к своим данным.

Что такое токены простыми словами?

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

Что такое токен?

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

Для чего нужен токен?

Token (токен по рус.) – это специализированный, защищённый носитель, который предназначен для хранения электронной подписи. Для электронных подписей используются USB-токены. … Данная мера безопасности призвана свести к минимуму возможность несанкционированного доступа к электронной подписи.

Где хранится токен?

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

Сколько стоит один токен в рублях?

1 Token as a Service в рублях

По курсу на 06.04.2021 1 TAAS = 677.55 RUB. На странице показана информация о том, сколько стоит 1 Token as a Service в российиских рублях сегодня.

Чем токен отличается от Криптовалюты?

Coin имеет свой блокчейн, токен – нет

Например, bitcoin – криптовалюта, имеющая блокчейн. … Токен не имеет своего блокчейна. Обычно он является частью какой-либо платформы (например, ethereum), и именно она является для него блокчейном.

Что такое Альткоин?

Альткоины (англ. Altcoins) это название всех криптовалют, кроме биткоина. Первые альткоины появились в 2011 году. Их целью было преодолеть все технические ограничения, которые имеет биткоин.

Сколько стоит один токен в тенге?

Сегодня 1 300 Токен стоит 50 905.90 казахстанский тенге на криптобирже.

Какие есть токены?

20 самых интересных токенов на платформе Ethereum

Что делать если пишет токен устарел?

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

Что такое мобильный токен?

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

Как работает банковский токен?

В токен встроены криптосредства, которым на вход подаёшь документ, авторизуешься по одноразовому паролю для подписания закрытым ключом (он хранится в токене, возможности получить его средствами токена нет), а на выходе получаешь ЭЦП документа, которая вместе с документом передаётся в банк и там проверяется (разумеется, …

Как получить ВК токен?

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

Как составить правильную ссылку:

Источник

Когда истекает срок действия токенов 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 экземпляра.

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

Источник

Каков срок истечения срока действия ID-токена в OpenID Connect?

В OpenID Connect срок действия токена доступа истекает. Для потока кода авторизации это обычно короткое время (например, 20 минут), после чего вы используете токен обновления для запроса нового токена доступа.

У токена ID также есть срок действия. Мой вопрос в том, какова цель этого?

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

В спецификации OpenID Connect просто говорится, что при проверке токена идентификатора

Который (возможно) поддерживает третий вариант выше.

ИЗМЕНИТЬ

Поскольку OpenID Connect основывается на OAuth2, ответ на дополнительный вопрос ниже можно найти в спецификации OAuth2 который говорит,

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

Но к чему в этом случае относится expires_in? Токен доступа, токен обновления или токен идентификатора?

(Для информации IdentityServer3 устанавливает время истечения срока действия токена доступа).

7 ответов

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

Маркер ID предназначен для доказательства клиенту, что пользователь прошел аутентификацию и кто он в результате.

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

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

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

Таким образом, для любого потока вы изначально получаете идентификатор ID Token, но как его обновить? Раздел 12 OIDC: Использование токенов обновления содержит следующее заявление о Обновить ответ токена:

Таким образом, срок действия токена ID кажется естественным, но prompt=none гарантирует, что новый токен ID может быть получен плавно без вмешательства пользователя (если, конечно, пользователь не вышел из этого OpenID).

Потребитель id_token должен всегда проверять его (временную) действительность.

В потоке кода вы вызываете конечную точку авторизации OP и получаете код авторизации (также называемый токеном авторизации, или authcode для краткости). Он должен истечь, как и id_token, который вы получили в неявном потоке, по тем же причинам и не может и не должен обновляться.

Затем ваш пользовательский интерфейс или приложение вызывает конечную точку токена OP и получает (иногда после дальнейшего согласия пользователя через пользовательский интерфейс, чтобы разрешить использование принадлежащих им ресурсов на сервере OP):

Вы можете обновить этот access_token, поскольку он только сообщает API, какие утверждения есть у пользователя и какие ресурсы (по областям действия и утверждениям каждой области) пользователь согласился предоставить вам. Как объяснялось выше, это необходимо для разрешения доступа даже после того, как пользователь больше не вошел в систему. Конечно, вы никогда не хотите разрешать обновление id_token, потому что вы не хотите разрешать олицетворение без входа в систему.

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

Прежде чем доверять тому, что написано, проверьте токен идентификатора.

Подробнее

Каков срок истечения срока действия токена ID в OpenID Connect?

Если какая-либо из процедур проверки, определенных в этом документе, не срабатывает, любые операции, требующие информации, которая не прошла проверку, ДОЛЖНЫ быть прерваны, а информация, не прошедшая проверку, НЕ ДОЛЖНА использоваться.

Чтобы подтвердить это, в документации Google OpenID Connect говорится о проверке токена идентификатора:

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

Итак, если наше клиентское приложение собирается предпринять какие-то действия на основе содержимого токена ID, мы должны снова проверить токен ID.

Источник

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

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