Разница между аутентификацией и авторизацией

Введение

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

Мы разберемся с процессом аутентификации пользователя, работой технологии единого входа (Single sign-on/SSO), дадим общее представлении о технологии OAuth2 и принципах ее работы, не углубляясь в особенности конкретной технической реализации. В следующей статье в качестве примера удачной реализации мы рассмотрим библиотеку Thinktecture Identity Server v3, подробнее остановимся на ее функциональных возможностях, поговорим, как собрать минимальный набор компонент, необходимый для работы в микросервисной архитектуре и достойный использования в боевой системе. В третьей части мы покажем, как расширять эту библиотеку, подстраиваясь под нужды вашей системы, а завершит цикл статей разбор различных сценариев, встречавшихся в жизни многих разработчиков с рекомендациями для каждого случая.

Какие могут быть Ошибки

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

  • В первую очередь, проверьте, правильно ли вы написали ключевую фразу, далее посмотрите, не активирована ли на клавиатуре клавиша Caps Lock (печать большими буквами). Если причины не в этом, то, скорее всего, неверно введен пароль.
  • Если вы не помните свой пароль, то его можно посмотреть в настройках к вайфай-роутеру.

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

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

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

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

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

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

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

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

Однако также мы можем сказать, что они не могут существовать друг без друга.

Безопасно ли использование токенов?

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

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

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

Основные определения

Аутентификация — это процедура, которая подтверждает подлинность конкретного человека. К примеру, аутентификацией можно назвать процедуру, при которой человек предъявляет свой паспорт или другой документ, подтверждающий его личность.

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

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

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

Спойлер второй части

Минимальная реализация интеграция Identity Server в ваше приложение выглядит так:

public void Configuration(IAppBuilder app)  {      var factory = new IdentityServerServiceFactory();      factory.UseInMemoryClients(Clients.Get())             .UseInMemoryScopes(Scopes.Get())             .UseInMemoryUsers(Users.Get());        var options = new IdentityServerOptions      {          SiteName = Constants.IdentityServerName,          SigningCertificate = Certificate.Get(),          Factory = factory,      };        app.UseIdentityServer(options);  }

Минимальная реализация интеграции веб-клиента с Identity Server:

public void Configuration(IAppBuilder app)  {      app.UseCookieAuthentication(new CookieAuthenticationOptions      {          AuthenticationType = "Cookies"      });        app.UseOpenIdConnectAuthentication(new OpenIdConnectAuthenticationOptions      {          ClientId = Constants.ClientName,          Authority = Constants.IdentityServerAddress,          RedirectUri = Constants.ClientReturnUrl,          ResponseType = "id_token",          Scope = "openid email",          SignInAsAuthenticationType = "Cookies",      });  }

Минимальная реализация интеграции веб-API с Identity Server:

Проблематика

требования к авторизации от бизнеса

  1. Пользователь, не имеющий отношения к конкретному договору, не должен его видеть в системе
  2. Автор договора должен видеть его на всех этапах.
  3. Создавать договор имеет право пользователь с грейдом не ниже 10.
  4. Визирующий должен видеть договор, начиная с поступления к нему на этап и далее.
  5. Руководители подразделений должны видеть договоры своих подразделений вверх по иерархии.
  6. Автор договора и руководитель подразделения имеют право отозвать договор на любом этапе согласования.
  7. Руководство и секретариат головного офиса должны видеть документы всех филиалов.
  8. Пользователь, создавший договор, не должен иметь права его завизировать.

От безопасности мы могли бы получить следующие требования

  1. Знать, кто имеет доступ к конкретному договору.
  2. Знать, кто имел доступ к конкретному договору в заданный момент времени.
  3. Лишать пользователя доступа к ранее доступным документам при изменении его должностных обязанностей.
  • Они не стабильны. Вероятность их изменения, даже в краткосрочной перспективе, стремится к 1.
  • Они сквозные. Их реализация влияет на все слои, от дизайна БД до UI.
  • Они лежат в плоскости предметной области. Это ведет к сильной связности механизма авторизации со слоем бизнес-логики. 
  • Они влияют на производительность. 

Резюме

Основные выводы

Начиная с 2017 года резко возрос процент использования строгой аутентификации. Те, кто не использует строгую аутентификацию, недооценивают свой риск для бизнеса и клиентов. Тем не менее, пароли находятся на пути «в могилу». Развивающаяся нормативно-правовая среда обещает ускорить внедрение строгой аутентификации для потребительских приложений. Создание надёжной основы аутентификации позволяет компаниям сместить акцент с удовлетворения нормативных требований на удовлетворение потребностей клиентов. При выборе метода корпоративной аутентификации внутри предприятия требования регуляторов уже не являются значимым фактором. В эпоху фишинга злоумышленники могут использовать корпоративную электронную почту для мошенничества,Google усилил свою защиту внедрив строгую аутентификацию.

Рекомендации

Внедряйте строгую аутентификацию для мобильных и онлайн приложений. Готовьтесь к закату одноразовых паролей (OTP). Используйте строгую аутентификацию в качестве маркетингового инструмента для повышения доверия клиентов

Проведите тщательную инвентаризацию и оценку важности корпоративных данных и защитите их в соответствии с важностью. нет, правда, в отчёте так и написано “low-risk”, очень странно, что они недооценивают важность этой информацииИспользуйте строгую аутентификацию на предприятии

Рекомендации по аутентификации на основе токенов

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

Правильный веб-токен. Хотя существует целый ряд веб-токенов, ни один из них не может обеспечить ту же надежность, которую предоставляет веб-токен JSON (JWT). JWT считается открытым стандартом (RFC 7519) для передачи конфиденциальной информации между несколькими сторонами. Обмен информацией осуществляется цифровой подписью с использованием алгоритма или сопряжения открытого и закрытого ключей для обеспечения оптимальной безопасности.
Приватность.
Использование HTTPS-соединений. HTTPS-соединения были построены с использованием протоколов безопасности, включающих шифрование и сертификаты безопасности, предназначенные для защиты конфиденциальных данных

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

Взаимосвязь идентификации, аутентификации и авторизации

Наверное, вы уже догадались, что все три процедуры взаимосвязаны:

  1. Сначала определяют имя (логин или номер) – идентификация
  2. Затем проверяют пароль (ключ или отпечаток пальца) – аутентификация
  3. И в конце предоставляют доступ – авторизация

Инфографика: 1 — Идентификация; 2 — Аутентификация; 3 — Авторизация

Проблемы безопасности при авторизации

Помните, как в сказке «Красная Шапочка» бабушка разрешает внучке войти в дом? Сначала бабушка спрашивает, кто за дверью, затем говорит Красной Шапочке, как открыть дверь. Волку же оказалось достаточным узнать имя внучки и расположение дома, чтобы пробраться в дом.

Какой вывод можно сделать из этой истории?

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

Сравнение

Как проходит процедура аутентификации? Вот некий пользователь вознамерился прочитать свежий спам в своем электронном почтовом ящике. Он заходит на сайт почтового сервиса, читает рекламу и новости, но никаких писем ему пока не показывают – система не знает ни о его личности, ни о его намерениях. Когда в форму ввода логина и пароля он впишет свои «username/qwerty» и отправит эту информацию, начнется процесс аутентификации. Система проверит, существует ли пользователь с таким именем, совпадает ли введенный пароль с его учетной записью. Во многих случаях соответствия подобных идентификаторов достаточно, однако сервисы, где безопасность данных в приоритете, могут запрашивать и другие сведения: наличие сертификата, определенный IP-адрес или дополнительный код верификации.

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

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

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

Процесс токен авторизации

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

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

Основные отличия терминов

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

  1. Технология предназначена для непосредственной проверки личности пользователя.
  2. Проведение данной процедуры полностью зависит от информации, которую даёт юзер. Другими словами, если указать неверный логин, либо же допустить ошибку в пароле, то система не сможет распознать пользователя, соответственно, аутентификация не будет произведена.
  3. Процедура производится однократно для того, чтобы попасть в учётную запись конкретного ресурса в рамках одной сессии.

Что же касается авторизации, то она характеризуется следующими особенностями:

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

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

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

Биометрия.

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

До сих пор в Windows не было стандартной поддержки биометрических устройств. Чтобы решить эту проблему, Windows 7 вводит Windows Biometric Framework (WBF). WBF предоставляет новый набор компонентов, поддерживающий снятие отпечатка пальца с помощью биометрические устройства. Эти компоненты увеличивают безопасность пользователей.

Windows Biometric Framework упрощает пользователям и администраторам настройку и управление биометрическими устройствами на локальном компьютере или в домене.

Что такое аутентификация и авторизация?

Аутентификация — это процесс, используемый для подтверждения личности пользователя, при обращении его к компьютерной системе или дополнительным системным ресурсам. В частных и государственных компьютерных сетях (включая Интернет) наиболее часто для аутентификации предполагается проверка учетных данных пользователя; то есть, имя пользователя и пароль. Однако для типов критических транзакций, например обработка платежей, проверки подлинности имени пользователя и пароля не достаточно, так как пароли могут быть украдены или взломаны. По этой причине, основная часть интернет-бизнеса, а также многие другие сделки теперь используют цифровые сертификаты, которые выдаются и проверяются центром сертификации.

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

Есть два варианта авторизации:

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

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

Что такое идентификация?

Сначала давайте прочитаем определение:

Идентификация выполняется при попытке войти в какую-либо систему (например, в операционную систему или в сервис электронной почты).

Сложно? Давайте перейдём к примерам, заодно разберемся, что такое идентификатор.

Пример идентификатора в социальной сети ВКонтакте

Когда нам звонят с неизвестного номера, что мы делаем? Правильно, спрашиваем “Кто это”, т.е. узнаём имя. Имя в данном случае и есть идентификатор, а ответ вашего собеседника — это будет идентификация.

Идентификатором может быть:

  • номер телефона
  • номер паспорта
  • e-mail
  • номер страницы в социальной сети и т.д.

Подробнее об идентификаторах и ID рекомендую прочитать здесь.

Типы токенов авторизации

Токены авторизации различаются по типам. Рассмотрим их:

  1. Устройства, которые необходимо подключить физически. Например: ключи, диски и тому подобные. Тот, кто когда-либо использовал USB-устройство или смарт-карту для входа в систему, сталкивался с подключенным токеном.

  2. Устройства, которые находятся достаточно близко к серверу, чтобы установить с ним соединение, но оно не подключаются физически. Примером такого типа токенов может служить «magic ring» от компании Microsoft.

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

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

Ни одно решение для аутентификации не является панацеей

Рисунок 2. Таблица вариантов аутентификации

Аутентификация Фактор Описание Ключевые уязвимости
Пароль или PIN Знание Фиксированное значение, которое может включать буквы, цифры и ряд прочих знаков Может быть перехвачен, подсмотрен, украден, подобран или взломан
Аутентификация основанная на знаниях Знание Вопросы, ответы на которые может знать только легальный пользователь Могут быть перехвачены, подобраны, получены с помощью методов социальной инженерии
Аппаратные OTP (пример) Обладание Специальное устройство, которое генерирует одноразовые пароли Код может быть перехвачен и повторен, либо устройство может быть украдено
Программные OTP Обладание Приложение (мобильное, доступное через браузер, либо отправляющее коды по e-mail), которое генерирует одноразовые пароли Код может быть перехвачен и повторен, либо устройство может быть украдено
SMS OTP Обладание Одноразовый пароль, доставляемый с помощью текстового сообщения SMS Код может быть перехвачен и повторен, либо смартфон или SIM-карта могут быть украдены, либо SIM-карта может быть дублирована
Смарт-карты (пример) Обладание Карта, которая содержит криптографический чип и защищенную память с ключами, использующая для аутентификации инфраструктуру открытых ключей Может быть физически украдено (но злоумышленник не сможет воспользоваться устройством без знания PIN-кода; в случае нескольких неверных попытках ввода устройство будет заблокировано)
Ключи безопасности — токены (пример, ещё пример) Обладание Устройство с интерфейсом USB, которое содержит криптографический чип и защищенную память с ключами, использующее для аутентификации инфраструктуру открытых ключей Может быть физически украдено (но злоумышленник не сможет воспользоваться устройством без знания PIN-кода; в случае нескольких неверных попыток ввода устройство будет заблокировано)
Привязка к устройству Обладание Процесс, создающий профиль, часто с использованием JavaScript, либо с помощью маркеров, таких как cookies и Flash Shared Objects для того чтобы гарантировать, что используется конкретное устройство Маркеры могут быть украдены (скопированы), также характеристики легального устройства могут быть имитированы злоумышленником на своем устройстве
Поведение Неотъемле-мость Анализируется как пользователь взаимодействует с устройством или программой Поведение может быть сымитировано
Отпечатки пальцев Неотъемле-мость Сохраненные отпечатки пальцев сравниваются со считанными оптическим или электронным способом Изображение может быть украдено и использовано для аутентификации
Сканирование глаз Неотъемле-мость Сравниваются характеристики глаза, такие как рисунок радужной оболочки зрачка, с новыми сканами, полученными оптическим способом Изображение может быть украдено и использовано для аутентификации
Распознавание лица Неотъемле-мость Сравниваются характеристики лица, с новыми сканами, полученными оптическим способом Изображение может быть украдено и использовано для аутентификации
Распознавание голоса Неотъемле-мость Сравниваются характеристики записанного образца голоса, с новыми образцами Запись может быть украдена и использована для аутентификации, либо эмулирована

Ключи безопасности, они же токены, указанные в отчете, созданы по стандартам FIDO (U2F или FIDO2). Токены изготовленные согласно этому стандарту действительно не имеют никакой защиты, как не имеют её и аппаратные ОТР – каждый, кто украдет или найдёт устройство, сможет действовать от имени законного владельца (если, конечно, узнает пароль).
Но классические криптографические токены и смарт-карты надежно защищены PIN-кодом. Перед началом работы, пользователь подключает свой токен к устройству по USB, Bluetooth, NFC или через SmartCard Reader. Далее, он вводит PIN-код, который разблокирует доступ к защищенной памяти токена и позволяет выполнить аутентификацию. PIN-код не передаётся на сервер, а значит не может быть перехвачен при передаче. В отличие от пароля он может быть простым и лёгким для запоминания. Этот PIN-код является фактором знания, что позволяет достаточно просто организовать двухфакторную аутентификацию с помощью криптографических токенов / смарт-карт.Таким образом, практически любой способ аутентификации имеет изъяны, за исключением криптографических токенов.
второй части публикации

Подготовка к реализации системы аутентификации

Даже несмотря на то, что наш запрос на данный момент заканчивается ошибкой, мы наглядно показали как вписывается Identity в жизненный цикл приложения ASP.NET. Следующий шаг — создать контроллер, обрабатывающий запрос к URL /Account/Login, для отображения формы входа в приложение. Добавьте сначала новый класс view-model в файл UserViewModels.cs:

Новый класс модели содержит свойства Name и Password, декларированные атрибутом Required, который говорит системы валидации модели, что эти свойства не должны иметь пустых значений. В реальном проекте не забывайте также добавлять клиентскую проверку при вводе пользователем имени и пароля. В данном проекте мы пропустим эту проверку, т. к. основная наша цель — разобраться в ASP.NET Identity.

Теперь добавьте контроллер Account в наше приложение, с кодом, показанным в примере ниже, который содержит две перегруженные версии метода Login

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

Хотя этот код еще не относится к аутентификации пользователей, контроллер Account все же содержит некоторую полезную инфраструктуру, не относящуюся к ASP.NET Identity.

Во-первых, обратите внимание, что оба метода Login принимают строковый аргумент returnUrl. Когда пользователь запрашивает URL-адрес с ограниченным доступом, он перенаправляется по адресу /Account/Login со строкой запроса, содержащей адрес страницы с ограниченным доступом

Например, если сейчас вы запросите адрес /Home/Index, вас перенаправит на URL следующего вида:

/Account/Login?ReturnUrl=%2FHome%2FIndex

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

Далее обратите внимание на атрибуты, которые я применил к контроллеру и его методам действий. Функции контроллера Account (такие как смена пароля, например) по умолчанию должны быть доступны только авторизованным пользователям

Для этого мы применили атрибут Authorize к контроллеру Account и добавили атрибут AllowAnonymous к некоторым методам действий. Это позволяет ограничить методы действий для авторизованных пользователей по умолчанию, но открыть доступ неавторизованным пользователям для входа в приложение.

Наконец, мы добавили атрибут ValidateAntiForgeryToken который работает в связке с классом HtmlHelper, используемом в Razor в представлениях cshtml. Вспомогательный метод AntiForgeryToken защищает от межсайтовой подделки запросов CSRF, благодаря тому, что генерирует скрытое поле формы с токеном, который проверяется при отправке формы.

Последний подготовительный шаг — создание формы входа в приложение. Добавьте в папку /Views/Account файл представления Login.cshtml:

В этой разметке стоит обратить внимание на использование вспомогательного метода Html.AntiForgeryToken и создание скрытое поля с сохранением параметра returnUrl. В остальном — это обычная форма, генерируемая с помощью Razor

Итак, мы завершили подготовку к созданию системы аутентификации. Запустите приложение и перейдите по адресу /Home/Index – система перенаправит вас на страницу входа:

Двухфакторная аутентификация (2FA)

Двухфакторная аутентификация (2FA) улучшает безопасность доступа за счёт использования двух методов (также называемых факторами) проверки личности пользователя. Это разновидность многофакторной аутентификации. Наверное, вам не приходило в голову, но в банкоматах вы проходите двухфакторную аутентификацию: на вашей банковской карте должна быть записана правильная информация, и в дополнение к этому вы вводите PIN. Если кто-то украдёт вашу карту, то без кода он не сможет ею воспользоваться. (Не факт! — Примеч. пер.) То есть в системе двухфакторной аутентификации пользователь получает доступ только после того, как предоставит несколько отдельных частей информации.

Другой знакомый пример — двухфакторная аутентификация Mail.Ru, Google, Facebook и т. д. Если включён этот метод входа, то сначала вам нужно ввести логин и пароль, а затем одноразовый пароль (код проверки), отправляемый по SMS. Если ваш обычный пароль был скомпрометирован, аккаунт останется защищённым, потому что на втором шаге входа злоумышленник не сможет ввести нужный код проверки.

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

При двухфакторной аутентификации пользователь должен предоставить два из трёх:

  • То, что вы знаете: пароль или PIN.
  • То, что у вас есть: физическое устройство (смартфон) или приложение, генерирующее одноразовые пароли.
  • Часть вас: биологически уникальное свойство вроде ваших отпечатков пальцев, голоса или снимка сетчатки.

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

То есть это универсальное решение? Возможно, нет.

И всё же двухфакторка поможет усилить безопасность аутентификации в вашем приложении. Как реализовать? Возможно, стоит не велосипедить, а воспользоваться существующими решениями вроде Auth0 или Duo.

Что такое аутентификация?

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

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

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

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

Пути решения

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

OAuth 2. Общая схема работы

Если вы разрабатываете приложение (бот для телеграма, плагин для общедоступной CRM и т.д.), которое может быть полезно для любого пользователя Модульбанка, вы можете авторизовывать пользователей через сервер авторизации Модульбанка по OAuth подобному протоколу. Схема авторизации пользователей идентична протоколу OAuth 2.0, за небольшим исключением что сервер авторизации Модульбанка кроме формата x-www-form-urlencoded также поддерживает формат json в теле запроса. Для того чтобы стороннее приложение могло совершать запросы к API от лица конкретного пользователя, приложению необходимо получить токен авторизации, подтверждающий что пользователь предоставил приложению права на выполнение тех или иных действий.

!

Важно! Если вы хотите авторизовывать пользователей Модульбанка по протоколу OAuth, ваше приложение должно быть зарегистрировано у нас. Для регистрации приложения напишите нам письмо на api@modulbank.ru

В ответ мы вышлем вам и  — уникальные для каждого приложения идентификатор и секретное слово (необходимые параметры для взаимодействия с сервером авторизации Модульбанка).

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

Итоги

Безопасность ИС невозможна без применения средств аутентификации, а проникновение в корпоративную среду мобильных устройств и облачных технологий не может не влиять на принципы обеспечения информационной безопасности. Применение механизма аутентификации является самым распространенным и одним из самых эффективных методов обеспечения безопасности. Являясь по своей сути процедурой подтверждения подлинности субъекта в ИС по уникальному идентификатору, аутентификация является криптографическим методом, что обуславливает применение к устройствам, ее поддерживающим, Положения о ввозе и вывозе шифровальных (криптографических) средств, а следовательно – оформление нотификации.

Оцените статью
Рейтинг автора
5
Материал подготовил
Илья Коршунов
Наш эксперт
Написано статей
134
Добавить комментарий