Видел несколько дней назадВидео Geek Time с QR-кодом, хорошо написано, вот краткое содержание
В повседневной жизни QR-коды используются во многих сценариях, таких как оплата в супермаркете, вход в систему, загрузка приложения и так далее. Понимание принципа QR-кода может дать новые идеи для технических специалистов в области технического отбора. Для нетехнического персонала, помимо понимания путаницы, это также может помочь ему лучше идентифицировать различные QR-коды, встречающиеся в жизни, чтобы предотвратить обман.
QR-код, он всем знаком
Отсканируйте код для покупок, отсканируйте код для ужина, отсканируйте код для автобуса.
В процессе сканирования кода у вас могут возникнуть вопросы: Безопасен ли этот QR-код? Будет ли утечка моей личной информации? Более опытные пользователи также рассмотрят вопрос: может ли моя система также разработать QR-код для ее продвижения?
В настоящее время вам необходимо понять технологию и логику QR-кода!
Одним из наиболее часто используемых сценариев QR-кода является сканирование QR-кода на ПК или в Интернете через приложение для мобильного телефона для входа в ту же систему. Например, мобильный телефон WeChat сканирует код для входа в WeChat на стороне ПК, а мобильный телефон Taobao сканирует код для входа в Taobao на стороне ПК. Итак, давайте посмотрим, как работает вход в систему с помощью QR-кода!
Суть входа по QR коду
Вход по QR-коду — это, по сути, метод аутентификации при входе. Поскольку это аутентификация при входе в систему, нужно сделать только две вещи!
- Скажи системе, кто я
- Докажи системе, кто я
Например, чтобы войти в систему с учетной записью и паролем, учетная запись должна сообщить системе, кто я, а пароль должен подтвердить, кто я для системы; Например, при входе в систему с проверочным кодом мобильного телефона номер мобильного телефона сообщает системе, кто я, а проверочный код доказывает, кто я;
Так как же вход в систему с помощью скан-кода выполняет эти две задачи? Давайте подумаем об этом
Мобильное приложение сканирует QR-код на ПК, и после подтверждения на мобильном телефоне происходит успешный вход в учетную запись на ПК! Здесь учетная запись, зарегистрированная на ПК-терминале, должна быть той же учетной записью, что и на мобильном терминале. Невозможно войти в учетную запись А на мобильном телефоне, но после сканирования кода для входа на ПК выполняется вход в учетную запись Б.
Итак, во-первых, скажите системе, кто я, она относительно ясна!
При сканировании QR-кода информация об учетной записи на мобильном телефоне передается на ПК, а о том, как она передается, мы поговорим позже.
Во-вторых, доказать системе, кто я такой. В процессе сканирования кода для входа пользователь не вводит ни пароль, ни проверочный код, ни какой-либо другой код. Как это доказано?
Некоторые студенты подумают, а пароль отправляется на ПК в процессе сканирования? Но это невозможно. Поскольку это слишком небезопасно, клиент вообще не будет хранить пароль. Давайте подумаем хорошенько: на самом деле мобильное приложение уже авторизовалось, то есть мобильный терминал прошел авторизацию при входе. скажи, покаОтсканируйте код, чтобы подтвердить, что именно этот мобильный телефон и эта учетная запись управляется, по сути, он может косвенно доказать, кто я.
Знать QR-код
Так как сделать подтверждение? Мы подробно объясним позже, прежде чем нам нужно знать QR-код! Прежде чем мы узнаем двухмерный код, давайте посмотрим на одномерный код!
Так называемый одномерный код, который является штрих-кодом, штрих-кодом в супермаркете — я думаю, все хорошо знакомы с этим, штрих-код — это на самом деле строка цифр, в которой хранится серийный номер продукта.
Двумерный код на самом деле похож на штрих-код, за исключением того, что он не обязательно хранит числа, но также может быть любой строкой.Можно подумать, что это другая форма строки.
Ищите QR-коды в поисковой системе, вы можете найти множество веб-сайтов инструментов для создания QR-кодов в Интернете, эти веб-сайты могут предоставлять функцию преобразования между строками и QR-кодами, такими какВеб-сайт с QR-кодом для корма
Вы можете ввести свой контент в поле ввода слева, это может быть текст, URL, файл... . Затем вы можете генерировать QR-коды, которые представляют их
Вы также можете загрузить QR-код, выполнить «декодирование», а затем проанализировать значение QR-кода.
Механизм аутентификации системы
Зная QR-код, давайте взглянем на механизм аутентификации системы в условиях мобильного интернета.
Как мы уже говорили ранее, в целях безопасности он не будет хранить ваш пароль для входа в мобильный телефон. Но в процессе ежедневного использования мы должны заметить, что только после загрузки вашего приложения, при первом входе в систему, вам необходимо войти в систему с учетной записью и паролем, После этого, даже если процесс приложения убит, или При перезагрузке телефона нет необходимости снова вводить пароль учетной записи, он может войти в систему автоматически.
На самом деле за этим стоит набор механизмов аутентификации на основе токенов, давайте посмотрим, как этот механизм работает.
- При входе в систему с учетной записью и паролем клиент вместе передает информацию об устройстве на сервер.
- Если проверка пароля учетной записи пройдена, сервер привязывает учетную запись к устройству, и создается структура данных, которая содержит идентификатор учетной записи, идентификатор устройства, тип устройства и т. д.
const token = {
acountid:'账号ID',
deviceid:'登录的设备ID',
deviceType:'设备类型,如 iso,android,pc......',
}
Затем сервер сгенерирует токен и использует его для сопоставления структуры данных.Этот токен на самом деле представляет собой строку со специальным значением.Его смысл в том, что он может найти соответствующую информацию об учетной записи и устройстве.
- После того, как клиент получит этот токен, необходимо локальное сохранение, каждое посещение несет в себе токен системы API и информацию об устройстве.
- Сервер может найти учетную запись и информацию об устройстве, привязанную к нему через токен, а затем сравнить информацию о связанном устройстве с информацией об устройстве, отправляемой клиентом каждый раз, если они совпадают, проверка пройдена, и данные ответа интерфейса AP возвращается. , если отличается, значит проверка не проходит запретить доступ
Из предыдущего процесса мы видим, что клиент не сохраняет и не нуждается в сохранении вашего пароля, наоборот, он сохраняет токен. Некоторые ученики могут подумать, что этот жетон настолько важен, что, если он известен другим. На самом деле, не имеет значения, знаете ли вы его, потому что информация об устройстве уникальна.Пока информация о вашем устройстве неизвестна другим, и другие используют другие устройства для доступа к ней, проверка не пройдет.
Можно сказать, что целью входа клиента является получение собственного токена.
Так как же ПК получает свой собственный токен во время процесса входа в систему с помощью скан-кода? Мобильный терминал не может напрямую использовать свой жетон на ПК-терминале! Токены могут находиться только в частной собственности клиента и не могут использоваться другими людьми или другими клиентами. Прежде чем анализировать эту проблему, нам необходимо разобраться в общих шагах сканирования QR-кода для входа в систему. Это может помочь нам разобраться во всем процессе,
Общие шаги по сканированию QR-кода для входа в систему
Примерный процесс
- Перед кодом сканирования мобильные клиентские приложения уже вошли в систему, на стороне ПК отображается двумерный код, дождитесь сканирования
- Откройте приложение на мобильном телефоне и сканируйте QR-код на ПК. После сканирования он подскажет «отсканированные, пожалуйста, нажмите на мобильный телефон, чтобы подтвердить»
- Пользователь нажимает «ОК» на мобильном телефоне, и после подтверждения вход на ПК проходит успешно.
Видно, что QR-код имеет три состояния посередине: ожидание сканирования, сканирование для подтверждения и подтверждение. тогда представьте
- За QR-кодом должен стоять уникальный идентификатор.При создании QR-кода этот идентификатор также создается и привязывается к информации об устройстве на ПК.
- Отсканируйте этот QR-код своим телефоном
- QR-код переключается на отсканированный для подтверждения, после чего информация об учетной записи будет привязана к этому идентификатору.
- Когда мобильный терминал подтвердит вход в систему, он сгенерирует токен, используемый стороной ПК для входа в систему, и вернет его стороне ПК.
Ну вот, основная идея ясна, давайте конкретизируем весь процесс.
Подготовка QR-кода
Согласно различным состояниям QR-кода, первым является состояние ожидания, когда пользователь открывает ПК и переключается на интерфейс входа в систему с помощью QR-кода.
- Сторона ПК инициирует запрос на сторону сервера, сообщая стороне сервера, что я хочу сгенерировать QR-код для входа пользователя, а также передать информацию об устройстве на стороне ПК на сторону сервера.
- После того, как сервер получает запрос, он генерирует идентификатор QR-кода и связывает идентификатор QR-кода с информацией об устройстве на стороне ПК.
- Затем верните идентификатор QR-кода на ПК.
- После того, как ПК получит идентификатор QR-кода, он генерирует QR-код (QR-код должен содержать идентификатор)
- Чтобы вовремя узнать статус QR-кода, после того, как клиент отображает QR-код, ПК постоянно опрашивает сервер, например, опрос каждую секунду, запрашивая у сервера текущий статус QR-кода и соответствующую информацию.
QR-код готов, следующий шаг — сканирование статуса
Переключатель состояния сканирования
- Пользователь сканирует QR-код на ПК с помощью мобильного телефона и получает идентификатор QR-кода через содержимое QR-кода.
- Затем вызовите серверный API, чтобы отправить идентификационную информацию мобильного терминала вместе с идентификатором QR-кода на сервер.
- После того, как сервер получит его, он может связать идентификационную информацию с идентификатором QR-кода для создания временного токена. Затем вернитесь к мобильному терминалу
- Поскольку ПК опрашивал статус QR-кода, в это время статус QR-кода изменился, и он может обновить статус QR-кода на интерфейсе до отсканированного.
Так зачем вам нужно вернуть временный токен на мобильный телефон? Временный токен такой же, как токен, это также вид сертификата идентичности, разница состоит в том, что она может использоваться только один раз, и он будет недействительным после использования.
На третьем этапе возвращается временный токен, чтобы мобильный терминал мог использовать его в качестве сертификата в следующей операции. Это гарантирует, что двухэтапная операция сканирования кода и входа в систему выполняется одним и тем же мобильным телефоном.
Подтверждение статуса
Наконец, статус подтвержден.
- После получения временного токена мобильный терминал откроет интерфейс подтверждения входа.Когда пользователь нажимает «Подтвердить», мобильный терминал будет нести временный токен, чтобы вызвать интерфейс сервера и сообщить серверу, что я его подтвердил.
- После того, как сервер получает подтверждение, он создает токен для входа пользователя на ПК на основе информации об устройстве и информации об учетной записи, связанной с идентификатором QR-кода.
- В это время интерфейс опроса на стороне ПК может знать, что состояние QR-кода стало «подтвержденным». И с сервера, чтобы получить токен входа пользователя
- На этом этапе вход выполнен успешно, и внутренний ПК может использовать токен для доступа к ресурсам сервера.
Был объяснен основной процесс сканирования кода, и некоторые детали не были подробно описаны.
Например, каково содержание QR-кода?
- Может быть идентификатором QR-кода
- Может быть URL-адресом, содержащим идентификатор QR-кода.
Что делать на этапе сканирования кода для подтверждения, если пользователь отменит подписку? Эти детали оставлены на размышление каждому
Суммировать
Мы начнем с сути входа в систему и рассмотрим, как достигается вход в систему с помощью сканирования QR-кода.
- Скажи системе, кто я
- Докажи, кто я системе
В этом процессе мы сначала кратко упомянули о двух необходимых знаниях,
- Одним из них является принцип двумерного кода,
- Одним из них является механизм аутентификации на основе токенов.
Затем мы устанавливаем ось двумерного кода, мы анализируем логику, стоящую за этим: для достижения входа в систему с помощью скан-кода с помощью механизма аутентификации токена с изменениями состояния двумерного кода.
Следует отметить, что упомянутый выше процесс входа в систему применим к ПК, WEB и мобильным терминалам одной и той же системы.
Обычно у нас есть другой более распространенный сценарий, который заключается в сканировании кода для входа через стороннее приложение.Например, Geek Time/Nuggets может выбрать WeChat/QQ для сканирования кода для входа, тогда этот вид сканировать код через стороннее приложение Каков принцип входа в систему?
Заинтересованные студенты могут подумать об этом и могут оставить свое мнение в комментариях.