Аутентификация в node.js. учебные руководства и возможные ошибки
Содержание:
- Процесс аутентификации/авторизации
- Ошибка вторая: система сброса паролей
- Делегирование со Scopes
- Стандарты
- Основные отличия терминов
- Литература
- Что такое Авторизация
- Основные понятия AAA
- Что такое авторизация?
- Генерация токена в ЛК
- Единая точка входа (Single Sign On, SSO)
- Аутентификация на основе сессий
- Ошибки аутентификации: причины и пути решения
- Техника
- Пути решения
- Доступ к API с помощью токенов доступа
- Энергомашбанк — финансовые показатели
- Что такое идентификация?
- Взаимосвязь идентификации, аутентификации и авторизации
- Что такое Идентификация
Процесс аутентификации/авторизации
Платформа ASP.NET Identity полностью интегрирована в ASP.NET. Это означает, что вы можете использовать стандартные средства аутентификации/авторизации MVC вместе с Identity, такие как атрибут Authorize. В этой статье мы ограничим доступ к методу действия Index контроллера Home и реализуем функции, которые позволят идентифицировать пользователей, чтобы они могли получить к нему доступ. В примере ниже я применил атрибут Authorize:
Атрибут Authorize по умолчанию ограничивает доступ к методам действий для пользователей, не прошедших аутентификацию. Если вы запустите приложение и запросите представление Index контроллера Home (по любому из адресов /Home/Index, /Home или просто /), вы увидите сообщение об ошибке, показанное на рисунке ниже:
Платформа ASP.NET предоставляет полезную информацию о пользователе в объекте HttpContext, которую использует атрибут Authorize, чтобы проверить состояние текущего запроса и посмотреть, является ли пользователь аутентифицированным. Свойство HttpContext.User возвращает реализацию интерфейса IPrincipal, который определен в пространстве имен System.Security.Principal. Интерфейс IPrincipal определяет свойства и методы, перечисленные в таблице ниже:
Название | Описание |
---|---|
Identity |
Возвращает реализацию интерфейса IIdentity, описывающую пользователя, связанного с запросом. |
IsInRole(role) |
Возвращает true, если пользователь является членом указанной роли. |
Интерфейс IIdentity, реализация которого возвращается свойством Iprincipal.Identity, также содержит несколько полезных свойств:
Название | Описание |
---|---|
AuthenticationType |
Возвращает строку, описывающую механизм, который используется для аутентификации пользователей. |
IsAuthenticated |
Возвращает true, если пользователь аутентифицирован. |
Name |
Возвращает имя текущего пользователя. |
ASP.NET Identity содержит модуль, который обрабатывает глобальное событие AuthenticateRequest жизненного цикла приложения в котором проверяет cookie в браузере пользователя, для определения того, является ли он аутентифицированным. Позже я покажу как используются эти cookie-файлы. Если пользователь аутентифицирован, ASP.NET задает свойству IIdentity.IsAuthenticated значение true. (В нашем приложении мы еще не реализовали функцию аутентификации, поэтому свойство IsAuthenticated будет всегда возвращать false.)
Модуль авторизации проверяет свойство IsAuthenticated и, если пользователь не прошел проверку, возвращает HTTP-статус 401 и завершает запрос. В этот момент модуль ASP.NET Identity перехватывает запрос и перенаправляет пользователя на страницу входа /Account/Login. Это URL-адрес, который я определил в классе IdentityConfig ранее:
Браузер перенаправит вас по адресу /Account/Login, но т. к. мы еще не добавили контроллер для этого запроса, появится ошибка 404.
Ошибка вторая: система сброса паролей
- Предсказуемые токены. Токены, основанные на текущем времени — хороший пример. Токены, построенные на базе плохого генератора псевдослучайных чисел, хотя и выглядят лучше, проблему не решают.
- Неудачное хранилище данных. Хранение незашифрованных токенов сброса пароля в базе данных означает, что если она будет взломана, эти токены равносильны паролям, хранящимся в виде обычного текста. Создание длинных токенов с помощью криптографически стойкого генератора псевдослучайных чисел позволяет предотвратить удалённые атаки на токены сброса пароля методом грубой силы, но не защищает от локальных атак. Токены для сброса пароля следует воспринимать как учётные данные и обращаться с ними соответственно.
- Токены, срок действия которых не истекает. Если срок действия токенов не истекает, у атакующего есть время для того, чтобы воспользоваться временным окном сброса пароля.
- Отсутствие дополнительных проверок. Дополнительные вопросы при сбросе пароля — это стандарт верификации данных де-факто. Конечно, это работает как надо лишь в том случае, если разработчики выбирают хорошие вопросы. У подобных вопросов есть собственные проблемы. Тут стоит сказать и об использовании электронной почты для восстановления пароля, хотя рассуждения об этом могут показаться излишней перестраховкой. Ваш адрес электронной почты — это то, что у вас есть, а не то, что вы знаете. Он объединяет различные факторы аутентификации. Как результат, адрес почты становится ключом к любой учётной записи, которая просто отправляет на него токен сброса пароля.
шпаргалкупосмотримпакетдокументацияматериалызакрываетсяпервый результат
Делегирование со Scopes
Как API узнает, какой уровень доступа он должен предоставить приложению, запрашивающему использование его API? Мы делаем это с помощью scopes.
Scopes (Области действия) «ограничивают возможности приложения от имени пользователя». Они не могут предоставлять привилегии, которых у пользователя еще нет. Например, если у пользователя MyCalApp нет разрешения на создание новых корпоративных учетных записей MyCalApp, scopes, предоставленные HireMe123, также никогда не позволят пользователю создавать новые корпоративные учетные записи.
Scopes делегируют управление доступом к API или ресурсу. Затем API отвечает за объединение входящих scopes с фактическими правами пользователя для принятия соответствующих решений по управлению доступом.
Давайте рассмотрим это на нашем примере.
Я использую приложение HireMe123, и HireMe123 хочет получить доступ к стороннему API MyCalApp для создания событий от моего имени. HireMe123 уже запросил токен доступа для MyCalApp с сервера авторизации MyCalApp. Этот токен содержит некоторую важную информацию, такую как:
- : (пользовательский ID на MyCalApp )
- : (то есть этот токен предназначен только для API MyCalApp)
- : write: events (scope — область действия, в которой говорится, что HireMe123 имеет право использовать API для записи событий в мой календарь)
HireMe123 отправляет запрос в API MyCalApp с токеном доступа в своем заголовке авторизации. Когда MyCalApp API получает этот запрос, он может увидеть, что токен содержит scope write: events.
Но MyCalApp размещает учетные записи календаря для сотен тысяч пользователей. В дополнение к рассмотрению scope в токене, промежуточному программному обеспечению (middleware) API MyCalApp необходимо проверить sub идентификатор пользователя, чтобы убедиться, что этот запрос от HireMe123 может только использовать мои привилегии для создания событий с моей учетной записью MyCalApp.
В контексте делегированной авторизации scopes (области действия) показывают, что приложение может делать от имени пользователя. Они являются подмножеством общих возможностей пользователя.
Предоставление согласия
Помните, когда сервер авторизации спрашивал пользователя HireMe123 о его согласии разрешить HireMe123 использовать привилегии пользователя для доступа к MyCalApp?
Этот диалог согласия может выглядеть примерно так:
HireMe123 может запросить множество различных областей, например:
- …etc.
В общем, мы должны избегать увеличения количества областей с правами пользователя. Тем не менее, можно добавить разные области для отдельных пользователей, если ваш сервер авторизации обеспечивает управление доступом на основе ролей (Role-Based Access Control — RBAC).
Стандарты
Документы, определяющие стандарты аутентификации
ГОСТ Р ИСО/МЭК 9594-8-98 — Основы аутентификации
Настоящий стандарт:
- определяет формат информации аутентификации, хранимой справочником;
- описывает способ получения из справочника информации аутентификации;
- устанавливает предпосылки о способах формирования и размещения в справочнике информации аутентификации;
- определяет три способа, с помощью которых прикладные программы могут использовать такую информацию аутентификации для выполнения аутентификации, и описывает, каким образом с помощью аутентификации могут быть обеспечены другие услуги защиты.
В настоящем стандарте изложены два вида аутентификации: простая, использующая пароль как проверку заявленной идентичности, и строгая, использующая удостоверения личности, созданные с использованием криптографических методов
FIPS 113 — COMPUTER DATA AUTHENTICATION
Настоящий стандарт устанавливает Data Authentication Algorithm(DAA), который может быть использован для обнаружения несанкционированных изменений данных, как преднамеренных, так и случайных, стандарт основан на алгоритме, указанном в Data Encryption Standard(DES) Federal Information Processing Standards Publication(FIPS PUB) 46, и совместим как с Department of the Treasury’s Electronic Funds and Security Transfer Policy and the American National Standards Institute(ANSI) так и с Standard for Financial Institution Message Authentication.
Данный стандарт используется для контроля над целостностью передаваемой информации средствами криптографической аутентификации.
Основные отличия терминов
Для того, чтобы понять разницу между двумя чрезвычайно похожими в локализованных системах технологиями стоить вникнуть в их главные особенности. Так, аутентификация характеризуется следующими аспектами:
- Технология предназначена для непосредственной проверки личности пользователя.
- Проведение данной процедуры полностью зависит от информации, которую даёт юзер. Другими словами, если указать неверный логин, либо же допустить ошибку в пароле, то система не сможет распознать пользователя, соответственно, аутентификация не будет произведена.
- Процедура производится однократно для того, чтобы попасть в учётную запись конкретного ресурса в рамках одной сессии.
Что же касается авторизации, то она характеризуется следующими особенностями:
- Данный процесс направлен на то, чтобы проверить возможность предоставления конкретному юзеру прав на совершение конкретных действий в рамках одного ресурса.
- Процесс зависит исключительно от системы и не имеет отношения к данным, которые вносит пользователь.
- Процедура повторяется многократно во время проведения одной сессии и активируется каждый раз, когда юзер пытается совершить то или иное действие.
Очевидно, что без первой процедуры не может производится вторая, и наоборот. Именно поэтому эти термины так тесно взаимосвязаны и многие не видят между ними разницу, хотя она есть и весьма значимая.
Теперь Вы знаете, что такое авторизация и аутентификация, а также, чем они отличаются друг от друга. До новых полезных компьютерных программ и интересных приложений для Андроид.
Литература
- Ричард Э. Смит. Аутентификация: от паролей до открытых ключей = Authentication: From Passwords to Public Keys First Edition. — М.: Вильямс, 2002. — С. 432. — ISBN 0-201-61599-1.
- под. редакцией А.А. Шелупанова, С.Л. Груздева, Ю.С. Нахаева. Аутентификация. Теория и практика обеспечения доступа к информационным ресурсам. = Authentication. Theory and practice of ensuring access to information resources.. — М.: Горячая линия – Телеком, 2009. — С. 552. — ISBN 978-5-9912-0110-0.
- Шнайер Б. Прикладная криптография. Протоколы, алгоритмы, исходные тексты на языке Си = Applied Cryptography. Protocols, Algorithms and Source Code in C. — М.: Триумф, 2002. — 816 с. — 3000 экз. — ISBN 5-89392-055-4.
- Linn J. Common Authentication Technology Overview,.
- Bellovin S. and M. Merritt. Limitations of the Kerberos Authentication System.
- Kaufman, C. Distributed Authentication Security Service (DASS).
- Anderson, B.,. TACACS User Identification Telnet Option. — December 1984.
- Tardo J. and K. Alagappan. SPX: Global Authentication Using Public Key Certificates. — М.California, 1991. — С. pp.232-244.
- А.А. Гладких, В.Е. Дементьев. Базовые принципы информационной безопасности вычислительных сетей.. — Ульяновск: УлГТУ, 2009. — С. 156.
Что такое Авторизация
И последнее, что необходимо знать о входе на сайт – это авторизация.
Данная процедура подразумевает попадание на страницу в случае успешного прохождения аутентификации и идентификации.
Также авторизация может означать, что человек допускается до выполнения определенной задачи, доступ к которой имеет только он или определенная группа человек.
По итогу можем сказать, что все выше изучаемые процедуры взаимосвязаны между собой и напрямую зависят друг от друга и выполнение операций соблюдается в строгом порядке. Однако путать между собой их не следует.
- Идентификация.
- Аутентификация.
- Авторизация.
Основные понятия AAA
Прежде чем мы познакомимся с протоколами RADIUS и TACACS+, разберемся с основными понятиями механизма AAA. Для примера будем использовать процесс законного проникновения в помещение с контролем доступа.
Аутентификация (authentication) – определение личности того, кто пытается проникнуть в помещение. В нашем примере это может быть сканирование отпечатка пальца, ведь у каждого человека он уникален и может являться гарантом подтверждения личности. В сетевом мире стандартная аутентификация заключается в использовании логина и пароля, которые сгенерированы для каждого пользователя и позволяют ему подтвердить свою личность.
Авторизация (authorization) – следующий шаг после успешной аутентификации. Заключается в проверке прав доступа к помещению того человека, который прошел аутентификацию. Возможно, у человека есть право проникнуть в первое помещение, но запрещено прохождение дальше. На сетевых устройствах права доступа чаще всего определяют перечень команд, которые может выполнить пользователь, прошедший аутентификацию. Например, сетевому инженеру с 1-м уровнем доступа разрешен только просмотр конфигурации устройства с помощью команды show, а инженеру с 2-м уровнем доступно внесение изменений. На AAA-серверах операторов связи право доступа может определять принадлежность абонента к какому-либо тарифному плану.
Учет (аccounting) – параллельный с аутентификацией и авторизацией этап, который записывает в журнал успех или неудачу данных процессов, смог человек проникнуть в помещение или нет, получил ли пользователь доступ к сетевому устройству и, если да, то какие действия на нем совершал. Этот процесс важен с точки зрения безопасности и контроля доступа, так как позволяет определять потенциальные угрозы и искать «дыры» в системе.
На практике в сетях операторов связи AAA-процесс выглядит следующим образом:
- Абонент подключается к устройству доступа AGW (Access Gateway) или Network Access Server (NAS) и вводит свой логин и пароль.
- AGW (NAS) формирует и посылает запрос аутентификации к AAA-серверу и ожидает ответ.
- AAA-сервер обращается к DPI-системе или серверу биллинга по протоколу RADIUS для проверки логина абонента и пароля.
- AAA-сервер формирует ответ и отсылает его обратно на AGW (NAS).
- Если аутентификация пройдена, то AGW (NAS) пропускает абонента в сеть, но пока еще не предоставляет ему никаких услуг.
- Если пользователь пытается выйти в Интернет (вводит URL в строке браузера), AGW (NAS) формирует новый запрос AAA-серверу для авторизации.
- ААА-сервер вновь обращается к DPI-системе или серверу биллинга, чтобы получить информацию о тарифном плане и подключенных абоненту услугах.
- Получив положительный ответ от биллинга, ААА-сервер посылает ответ на AGW (NAS), и абонент получает доступ к Интернету в соответствии с настройками, установленными для тарифного плана.
О применении СКАТ DPI для тарификации и политик абонентов мы рассказывали в статье про реализацию L3 BRAS, но вскоре остановимся на этой функции подробнее.
Что такое авторизация?
Предоставление доступа к той или иной системе, присутствие в ней и выполнения определенных действий — авторизация. Понятие подразумевает, что человек прошедший авторизацию получает полное право выполнять действия в рамках его привилегий и полномочий, для этого в информационной системе могут применять три основные категории:
- избирательное управление доступом — доступ к информации и выполнению тех или иных действий предоставлен определённому пользователю или группе пользователей;
- мандатное управление — предоставление и ограничение доступа к информации по степени ее секретности. Действия пользователей регламентируется уровнями доступа или же должностью пользователей;
- доступ по ролям — гибкая форма разграничения доступа, сочетающая две предыдущие, которая варируется в зависимости от ситуации, в конкретный период времени.
Если рассмотреть на приведенных примерах, то в первом случае, если человек пройдет идентификацию и аутентификацию, и Вы откроете ему дверь для доступа в квартиру — это будет считаться авторизацией.
Вторая ситуация, в момент, когда банковский сотрудник получит необходимые ему сведения, а затем предоставит или сделает желаемое для Вас (например, перевод денежных средств) — этот процесс будет называться авторизацией.
Генерация токена в ЛК
Единая точка входа (Single Sign On, SSO)
Обращали внимание, что, когда логинишься в браузере в каком-нибудь Google-сервисе, например Gmail, а потом идёшь на Youtube или иной Google-сервис, там не приходится логиниться? Ты автомагически получаешь доступ ко всем сервисам компании. Впечатляет, верно? Ведь хотя Gmail и Youtube — это сервисы Google, но всё же раздельные продукты
Как они аутентифицируют пользователя во всех продуктах после единственного входа?
Этот метод называется единой точкой входа (Single Sign On, SSO).
Реализовать его можно по-разному. Например, использовать центральный сервис для оркестрации единого входа между несколькими клиентами. В случае с Google этот сервис называется Google Accounts. Когда пользователь логинится, Google Accounts создаёт куку, которая сохраняется за пользователем, когда тот ходит по принадлежащим компании сервисам. Как это работает:
- Пользователь входит в один из сервисов Google.
- Пользователь получает сгенерированную в Google Accounts куку.
- Пользователь идёт в другой продукт Google.
- Пользователь снова перенаправляется в Google Accounts.
- Google Accounts видит, что пользователю уже присвоена кука, и перенаправляет пользователя в запрошенный продукт.
Очень простое описание единой точки входа: пользователь входит один раз и получает доступ ко всем системам без необходимости входить в каждую из них. В этой процедуре используется три сущности, доверяющие другу прямо и косвенно. Пользователь вводит пароль (или аутентифицируется иначе) у поставщика идентификационной информации (identity provider, IDP), чтобы получить доступ к поставщику услуги (service provider (SP). Пользователь доверяет IDP, и SP доверяет IDP, так что SP может доверять пользователю.
Выглядит очень просто, но конкретные реализации бывают очень сложными. Подробнее об этом методе аутентификации.
Аутентификация на основе сессий
Самый распространённый и широко известный метод. Аутентификационная запись или сессия храниться на сервере и на клиенте. Сервер должен отслеживать активные сессии в базе данных или памяти, а на фронтенде создаётся кука, в которой хранится идентификатор сессии.
Процедура аутентификации на основе сессий:
- Пользователь вводит в браузере своё имя и пароль, после чего клиентское приложение отправляет на сервер запрос.
- Сервер проверяет пользователя, аутентифицирует его, шлёт приложению уникальный пользовательский токен (сохранив его в памяти или базе данных).
- Клиентское приложение сохраняет токены в куках и отправляет их при каждом последующем запросе.
- Сервер получает каждый запрос, требующий аутентификации, с помощью токена аутентифицирует пользователя и возвращает запрошенные данные клиентскому приложению.
- Когда пользователь выходит, клиентское приложение удаляет его токен, поэтому все последующие запросы от этого клиента становятся неаутентифицированными.
Недостатки:
- При каждой аутентификации пользователя сервер должен создавать у себя запись. Обычно она хранится в памяти, и при большом количестве пользователей есть вероятность слишком высокой нагрузки на сервер.
- Поскольку сессии хранятся в памяти, масштабировать не так просто. Если вы многократно реплицируете сервер, то на все новые серверы придётся реплицировать и все пользовательские сессии. Это усложняет масштабирование. (Я считал, этого можно избежать, если иметь выделенный сервер для управления сессиями, но это сложно реализовать, да и не всегда возможно.)
Ошибки аутентификации: причины и пути решения
При подключении к сети Wi-Fi, одного устройства к другому или при входе в любую программу и на сайт могут возникнуть проблемы. Чаще всего они связаны с такими причинами:
Неправильный идентификатор, то есть вы просто забыли или перепутали логин, пароль, ПИН-код, банковскую карту. Тут не возникает особых вопросов, как исправить ошибку
Проверьте данные для входа, возможно, вы не обратили внимание на регистр и написали строчные буквы вместо больших. Также часто при входе на сайт или в программу мы забываем проверить раскладку клавиатуры и пишем не на английском, а на русском языке.
Повреждение физического носителя, например, магнитная лента на банковской карте поцарапалась, карта погнулась, ключ от онлайн-банка или электронная подпись сломались, на глазу появился конъюнктивит, на пальце ранка, что препятствует считыванию биометрических данных, а телефон потерялся или утонул в Волге
Все это приводит к определенным затруднениям, и нужно искать способ убрать ошибку и получить доступ к данным или деньгам в каждом конкретном случае. Можно перевыпустить карту, а тем временем перевести деньги на другой счет и обналичить с него, заказать новую подпись или ключ, обратиться в офис, чтобы подтвердить действие без отпечатка пальцев, а, к примеру, при помощи кодового слова.
Разная система шифрования на телефоне и роутере приводит к их несовместимости. Чтобы подключиться к Wi-Fi в случае такой ошибки, потребуется изменить настройки роутера, применив шифрование, доступное в мобильном устройстве.
Иногда телефон не подключается к сети из-за программного сбоя ОС или ошибки в работе роутера. В таком случае попробуйте обновить программу в мобильном устройстве и перезапустите маршрутизатор.
Разная скорость передачи данных на устройствах, тут придется разбираться и снова лезть в настройки выставлять приемлемый объем данных, передаваемый за определенный промежуток времени.
В настройках роутера или другого прибора могут быть четко прописаны устройства, с которыми он может поддерживать связь. Если нужно добавить новый гаджет, то снова-таки придется поработать с настройками.
Как видим, причины могут быть разными. Чтобы разобраться с ними, нужно иметь запасной план, уметь работать с настройками программ и устройств или знать того, кто умеет это делать.
Техника
Пути решения
MACDAC(ACL)RBACАВАСPBAC, RAdAC, CBACшикарный обзор от CUSTIS
Требование от бизнеса | Решение | |
---|---|---|
1 | Пользователь, не имеющий отношения к конкретному договору, не должен его видеть в системе | Тут напрашивается ACL, поскольку определить отношение пользователя к бизнес-процессу достаточно сложно, не записывая его в какой-то список в момент вовлечения. Это будет оптимальным решением с точки зрения производительности чтения относительно реализации с помощью политик. |
2 | Автор договора должен видеть его на всех этапах | Требование может быть реализовано обоими механизмами, но оптимальным я считаю ACL, поскольку в этом случае будет проще реализовать требование №3 от ИБ. |
3 | Создавать договор имеет право пользователь с грейдом не ниже 10 | Это политика (PBAC), без вариантов |
4 | Визирующий должен видеть договор начиная с поступления к нему на этап и далее | ACL будет оптимален |
5 | Руководители подразделений должны видеть договоры своих подразделений вниз по иерархии | Замечательная задача для PBAC, но его применение может снизить производительность чтения, а требования 1 и 2 от ИБ потребуют дополнительных усилий, поэтому стоит подумать над реализацией. |
6 | Автор договора и руководитель подразделения имеют право отозвать договор на любом этапе согласования | PBAC справится отлично |
7 | Руководство и секретариат головного офиса должны видеть документы всех филиалов | PBAC, с теми же ограничениями что и в п. 5 |
8 | Пользователь, создавший договор, не должен иметь права его завизировать | Это требование можно было бы закрыть с помощью PBAC, однако так делать не стоит. Это то самое место, где авторизация вступает в конфликт с бизнес-логикой, и если происходит такая ситуация, ответственность стоит отдать бизнес-логике. |
Требование от ИБ | Решение | |
---|---|---|
1 | Знать, кто имеет доступ к конкретному договору | Общий журнал для ACL и PBAC |
2 | Знать, кто имел доступ к конкретному договору в заданный момент времени | Общий журнал для ACL и PBAC |
3 | Лишать пользователя доступа к ранее доступным документам при изменении его должностных обязанностей | ACL |
Доступ к API с помощью токенов доступа
Энергомашбанк — финансовые показатели
Что такое идентификация?
Предположим, что есть определенная система или база данных, где содержится ряд из параметров (идентификаторов), например:
- ID пользователя;
- ФИО (фамилия, имя и отчество);
- номер телефона;
- IMEI-устройства;
- адрес электронной почты;
- логин (никнейм);
- реквизиты банковской карты;
- номер автомобиля;
- серийный номер (штрих-код);
- трек-номер;
- смарт-карта;
- адрес веб-сайта;
- и т. д.
Каждый раз, когда что-либо покупаете в Интернете, где-либо регистрируетесь, Вы получаете идентификатор — определенный параметр позволяющий взаимодействовать с системой. Как правило, он является уникальным — не пересекается с другими информационными системами, участниками и пользователями. Таким образом, при необходимости получить доступ к системе или узнать какие-либо сведения, потребуется предоставить один или несколько идентификаторов. Исходя из этого, можно сказать, что идентификации — процесс позволяющий однозначно определить (распознать) субъект или объект, по его идентификатору, в той или иной системе.
Для большего понимания давайте рассмотрим на примере простой ситуации. Вы находитесь дома, занимаетесь своими делами: смотрите фильмы для взрослых, делаете физические упражнения или читаете статью про кибербезопасность на моём сайте. В один момент Вы слышите звонок в дверь, прекращаете заниматься своей деятельностью и направляетесь открывать. Подойдя к двери смотрите в глазок, но никого не видите, спрашиваете: «Кто там?» и слышите в ответ: «Это я, ИМЯ человека!». Имя человека по ту стороны двери, в данной ситуации, является идентификатором. Правильный или неправильный ответ на вопрос — процесс идентификации.
Рассмотрим на примере другой ситуации. Вы совершаете звонок в банк с целью получить какую-либо информацию по Вашей банковской карте. Сотрудник, отвечающий на Ваш звонок, прежде чем предоставить информацию, обязан Вас идентифицировать. Помимо номера телефона, он может запросить у Вас другой идентификатор, например, номер банковской карты или ФИО. Ваш ответ, в данном случае — идентификация.
Взаимосвязь идентификации, аутентификации и авторизации
Наверное, вы уже догадались, что все три процедуры взаимосвязаны:
- Сначала определяют имя (логин или номер) – идентификация
- Затем проверяют пароль (ключ или отпечаток пальца) – аутентификация
- И в конце предоставляют доступ – авторизация
Инфографика: 1 — Идентификация; 2 — Аутентификация; 3 — Авторизация
Проблемы безопасности при авторизации
Помните, как в сказке «Красная Шапочка» бабушка разрешает внучке войти в дом? Сначала бабушка спрашивает, кто за дверью, затем говорит Красной Шапочке, как открыть дверь. Волку же оказалось достаточным узнать имя внучки и расположение дома, чтобы пробраться в дом.
Какой вывод можно сделать из этой истории?
Каждый этап авторизации должен быть тщательно продуман, а идентификатор, пароль и сам принцип авторизации нужно держать в секрете.
Что такое Идентификация
Это еще одна из встроенных функций для входа на сервис либо в приложение.
Идентификация представляет собой процедуру указания личности, когда программа должна распознать идентификатора по предоставленным данным.
В данном случае – логин, объект, желающий войти в систему, указывает свое имя и пароль к нему. Распознавание имени – это идентификация, распознавание пароля — аутентификация.
В целом процедура идентификации и процедура аутентификации напрямую зависят друга от друга. Успешное завершение этих операций подразумевает доступ к запрашиваемой системе — авторизация.
Регистрируясь на каком-либо сайте либо в приложении вы получаете номер либо имя – логин – который и является идентификатором.
Отметим, что в базе данных каждой системы идентификаторы индивидуальны, повторений быть не может.
- Серия и номер паспорта.
- Номер мобильного телефона.
- Адрес электронной почты.
- Номер аккаунта в социальной сети.
- Номер банковской карточки.
- Номер машины.
- IMEI телефона.
- Другое.