Поговорим о принципе сканирования QR-кода и авторизации

Java

Сканирование QR-кода для входа в систему теперь более распространено, например, WeChat, Alipay и другие входы в систему на стороне ПК, и кажется, что каждое приложение поддерживает сканирование кода для входа в систему, и стыдно не сканировать код для входа. . Как технический специалист, я не знаю, интересует ли вас логика реализации, стоящая за этим.В любом случае, мне всегда было любопытно, что за этим стоит. Недавно я увидел видео о принципе сканирования QR-кода, поэтому составил эту статью в надежде помочь вам.

В этой работе всего три темы:

  • Что такое двумерный код.
  • Механизм аутентификации на основе токенов для мобильных терминалов.
  • Принцип входа по коду сканирования QR-кода.

1. Что такое QR-код

Двумерный код также называется двумерным штрих-кодом. Обычный двумерный код — QR-код. Полное название QR — Quick Response. В последние годы это очень популярный метод кодирования на мобильных устройствах. Он может хранить более традиционные штрих-коды штрих-кодов, информация, а также может представлять больше типов данных. ----Из энциклопедии Baidu

На товарах обычно есть штрих-коды, также известные как одномерные коды, которые могут представлять только строку чисел. QR-коды намного богаче штрих-кодов и могут хранить числа, строки, изображения, файлы и т. д. Например, мы можем поместитьwww.baidu.comСохраненный в QR-коде, мы можем получить адрес Baidu, отсканировав QR-код.

Это может быть трудно понять на словах.Вы можете использовать Baidu: Forage QR Code, инструмент для генерации и анализа QR-кода, и вы узнаете, что такое QR-код, поиграв.

图片描述

2. Механизм аутентификации токена на основе мобильного терминала

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

Блок-схема механизма аутентификации на основе токенов показана на следующем рисунке:

基于token的认证机制

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

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

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

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

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

3. Принцип сканирования QR-кода и авторизации

Хорошо, я знаю, что после механизма аутентификации на основе мобильного TOKEN я перейду к нашей теме: принцип входа в систему с помощью сканирования QR-кода. Блок-схема кода сканирования QR-кода для входа в систему в первую очередь:

扫码登录全流程

Вход в систему с помощью скан-кода можно разделить на три этапа:В ожидании сканирования, Отсканировано в ожидании подтверждения, Подтверждено. Давайте рассмотрим эти три этапа один за другим.

1. Для сканирования

Сканируемым этапом является также этап 1~5 на блок-схеме, то есть этап генерации QR-кода, этот этап не имеет ничего общего с мобильным терминалом, а представляет собой процесс взаимодействия между ПК и сервером.

待扫描的二维码

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

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

2. Отсканировано в ожидании этапа подтверждения

На этапах с 6 по 10 в блок-схеме, когда мы входим в WeChat на стороне ПК, после того, как мобильный телефон сканирует код, QR-код на стороне ПК становится отсканированным кодом, пожалуйста, подтвердите на мобильном терминале. Этот этап представляет собой процесс взаимодействия мобильного терминала и сервера.

待确认的二维码

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

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

Таймер на стороне ПК выполнит опрос, чтобы обнаружить, что статус QR-кода изменился, и обновит QR-код на стороне ПК для сканирования, пожалуйста, подтвердите.

3. Подтверждено

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

手机端确认状态

Таймер на стороне ПК опрашивает статус QR-кода как статус входа в систему и получает сгенерированный токен, завершает вход в систему, а последующий доступ осуществляется на основе токена.

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

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

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

Наконец

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

互联网平头哥