Что значит пройти аутентификацию
Что такое Аутентификация: Методы и Элементы
Узнайте больше о том, для чего нужна аутентификация, и ознакомьтесь с её методами
Аутентификация (англ. authentication) — это основа безопасности любой системы, которая заключается в проверке подлинности данных о пользователе сервером.
Она не тождественна идентификации и авторизации. Эти три термина являются элементами защиты информации. Первая стадия — идентификация. На ней происходит распознавание информации о пользователе, например, логин и пароль. Вторая стадия — аутентификация. Это процесс проверки информации о пользователе. Третья стадия — авторизация. Здесь происходит проверка прав пользователя и определяется возможность доступа.
Содержание
Зачем нужна аутентификация
Аутентификация нужна для доступа к:
Элементы аутентификации
Методы аутентификации
Парольные
Самый распространенный метод. Аутентификация может проходить по одноразовым и многоразовым паролям. Многоразовый пароль задает пользователь, а система хранит его в базе данных. Он является одинаковым для каждой сессии. К ним относятся PIN-коды, слова, цифры, графические ключи. Одноразовые пароли — разные для каждой сессии. Это может быть SMS с кодом.
Комбинированные
Этот метод говорит сам за себя. Аутентификация происходит с использованием нескольких методов, например, парольных и криптографических сертификатов. Он требует специальное устройство для считывания информации.
Биометрические
Это самый дорогостоящий метод аутентификации. Он предотвращает утечку или кражу персональной информации. Проверка проходит по физиологическим характеристикам пользователя, например, по отпечатку пальца, сетчатке глаза, тембру голоса и даже ДНК.
Информация о пользователе
Она используется для восстановления логина или пароля и для двухэтапной аутентификации, чтобы обеспечить безопасность. К этому методу относится номер телефона, девичья фамилия матери, год рождения, дата регистрации, кличка питомца, место проживания.
Пользовательские данные
Этот метод основывается на геоданных о местоположении пользователя с использованием GPS, а также использует информацию о точках доступа беспроводной связи. Недостаток заключается в том, что с помощью прокси-серверов можно подменить данные.
Классификация видов аутентификации
В зависимости от количества используемых методов
В зависимости от политики безопасности систем и уровня доверия
Чтобы защитить владельца сайта от злоумышленников, используют криптографические протоколы аутентификации.
Типы протоколов обусловлены тем, где происходит аутентификация — на PC или в сети.
Идентификация, аутентификация и авторизация — в чем разница?
Объясняем на енотах, в чем разница между идентификацией и авторизацией, а также зачем нужна аутентификация, тем более двухфакторная.
Это происходит с каждым из нас, причем ежедневно: мы постоянно идентифицируемся, аутентифицируемся и авторизуемся в разнообразных системах. И все же многие путают значение этих слов и часто употребляют термин «идентификация» или «авторизация», когда на самом деле речь идет об аутентификации.
Ничего такого уж страшного в этом нет — пока идет бытовое общение и обе стороны диалога по контексту понимают, что в действительности имеется в виду. Но всегда лучше знать и понимать слова, которые употребляешь, а то рано или поздно нарвешься на зануду-специалиста, который вынет всю душу за «авторизацию» вместо «аутентификации», кофе среднего рода и такое душевное, но неуместное в серьезной беседе слово «ихний».
Идентификация, аутентификация и авторизация: серьезные определения
Итак, что же значат термины «идентификация», «аутентификация» и «авторизация» — и чем соответствующие процессы отличаются друг от друга? Для начала проконсультируемся с «Википедией»:
Объясняем идентификацию, аутентификацию и авторизацию на енотах
Выше было очень много умных слов, теперь давайте упростим до конкретных примеров. Скажем, пользователь хочет войти в свой аккаунт Google. Google подходит лучше всего, потому что там процедура входа явным образом разбита на несколько простейших этапов. Вот что при этом происходит:
Аутентификация без предварительной идентификации лишена смысла — пока система не поймет, подлинность чего же надо проверять, совершенно бессмысленно начинать проверку. Для начала надо представиться.
Идентификация без аутентификации — это просто глупо. Потому что мало ли кто ввел существующий в системе логин! Системе обязательно надо удостовериться, что этот кто-то знает еще и пароль. Но пароль могли подсмотреть или подобрать, поэтому лучше подстраховаться и спросить что-то дополнительное, что может быть известно только данному пользователю: например, одноразовый код для подтверждения входа.
А вот авторизация без идентификации и тем более аутентификации очень даже возможна. Например, в Google Документах можно публиковать документы так, чтобы они были доступны вообще кому угодно. В этом случае вы как владелец файла увидите сверху надпись, гласящую, что его читает неопознанный енот. Несмотря на то, что енот совершенно неопознанный, система его все же авторизовала — то есть выдала право прочитать этот документ.
А вот если бы вы открыли этот документ для чтения только определенным пользователям, то еноту в таком случае сперва пришлось бы идентифицироваться (ввести свой логин), потом аутентифицироваться (ввести пароль и одноразовый код) и только потом получить право на чтение документа — авторизоваться.
А уж если речь идет о содержимом вашего почтового ящика, то Google никогда и ни за что не авторизует неопознанного енота на чтение вашей переписки — если, конечно, он не идентифицируется с вашим логином и не аутентифицируется с вашим паролем. Но тогда это уже не будет неопознанный енот, поскольку Google однозначно определит этого енота как вас.
Теперь вы знаете, чем идентификация отличается от аутентификации и авторизации. Что еще важно понимать: аутентификация — пожалуй, самый важный из этих процессов с точки зрения безопасности вашего аккаунта. Если вы ленитесь и используете для аутентификации только слабенький пароль, то какой-нибудь енот может ваш аккаунт угнать. Поэтому:
Что такое аутентификация, и как ее пройти без проблем и ошибок
Вы помните, как в школе проходили новую тему по математике, физике, химии и другим сложным предметам? Открываешь книгу, а там масса непонятных слов. Но постепенно мы изучали термины, и все становилось на свои места.
Заканчивая школу, мы не перестаем учиться. Жизнь стремительно меняется, развиваются технологии, побуждая нас получать новые знания и навыки. Чтобы свободно выходить в интернет, общаться и работать в сети, нужно осваивать основные понятия. Сегодня мы разберемся, что такое аутентификация, какой она бывает, и чем этот процесс отличается от идентификации и авторизации.
Определение
С процессом аутентификации в том или ином виде мы сталкиваемся довольно часто.
Аутентификация – это процедура установления подлинности или соответствия.
Чтобы объяснить это простыми словами, приведу пример.
Представьте себе, что недавно купили квартиру или сменили замки, к ключам еще не привыкли. Подходим к дверям и пытаемся вставить ключ в замочную скважину. Если мы ошиблись, то аутентификация не пройдена, ключ не соответствует замку, не открывает его. Если, наоборот, все сошлось, и двери открываются, значит, проверка подлинности пройдена.
Другие примеры аутентификации:
Отличие от идентификации и авторизации
Эти понятия легко можно спутать, потому что они являются этапами одного процесса, частями мозаики. Вернемся к нашему примеру с дверью в квартиру. Чтобы открыть ее, нам нужен ключ, он выступает идентификатором, то есть инструментом, при помощи которого мы будем совершать нужное действие. Вставили его в замок, покрутили – прошли идентификацию.
Если двери открылись, значит, идентификатор верный, подлинный. Это уже аутентификация или, говоря другими словами, процедура проверки. Последний этап – авторизация, мы входим в квартиру, то есть получаем доступ.
Теперь пример с социальными сетями. Мы открываем сайт или приложение в телефоне, вводим логин и пароль – это наши идентификаторы. Затем нажимаем Enter, и информация отправляется на аутентификацию. Программа проверяет, существует ли пользователь с такими учетными данными. Если мы все сделали правильно, то происходит авторизация. Мы входим в социальную сеть и попадаем именно на свою страницу, видим оповещения, диалоги с друзьями, добавленные записи в ленте.
Если вы перепутаете эти термины, ничего страшного, но чтобы понимать, о чем конкретно идет речь в том или ином случае, лучше научиться их отличать.
Виды аутентификации
Пользователи интернета в моем представлении подразделяются на оптимистов и параноиков. Оптимисты не заморачиваются кодами и сложными паролями. Фамилия, дата рождения или слово “qwerty” вполне могут стать их паролем от аккаунта в соцсети или электронной почты. Главное, чтобы было легко запомнить.
Параноики придумывают сложные пароли, шифры и коды, выходят в интернет только со своих устройств и через проверенные сети, пароли хранят у жены в чулке. Они всегда обеспокоены безопасностью.
Если вы относитесь к оптимистам, то я должна вас предупредить. В интернете, как и в реальной жизни, довольно много желающих воспользоваться вашим простодушием, украсть коды доступа, взломать аккаунт, снять деньги со счета. Для этого уже придумано множество технических средств и способов развода.
Поэтому системы аутентификации постоянно совершенствуются, чтобы уменьшить шансы злоумышленников. С другой стороны, каждый сервис, сайт, приложение стремится к тому, чтобы пользователям было удобно и приятно.
Со временем для разных случаев появились такие виды аутентификации:
Как видите, есть разные виды аутентификации для разных программ и случаев. Использовать нужно один из них или несколько вместе в зависимости от целей и задач.
Чем двухуровневая проверка лучше одноуровневой
Двухфакторная аутентификация подразумевает использование сразу двух перечисленных выше методов защиты. Например, мы вставляем карту в терминал и вводим ПИН-код. Или вводим учетные данные от страницы в соцсети и затем получаем одноразовый код на телефон, привязанный к аккаунту.
Такая двойная проверка не требует больших финансовых затрат, она довольно простая и удобная для пользователей, а также значительно увеличивает безопасность данных.
Параноики считают, что можно сделать даже трех- и четырехуровневую проверку, главное, чтобы враги не получили доступ к информации. Но такие меры чаще всего являются излишними, значительно усложняют и замедляют все операции. Можно сказать, что двухэтапная проверка – это компромиссное решение для безопасности и удобства.
Ошибки аутентификации: причины и пути решения
При подключении к сети Wi-Fi, одного устройства к другому или при входе в любую программу и на сайт могут возникнуть проблемы. Чаще всего они связаны с такими причинами:
Как видим, причины могут быть разными. Чтобы разобраться с ними, нужно иметь запасной план, уметь работать с настройками программ и устройств или знать того, кто умеет это делать.
Заключение
Надеюсь, эта статья помогла вам разобраться с тем, для чего нужна аутентификация, и какие ее виды бывают. Также мы обсудили возможные проблемы при проверке подлинности и пути их решения. Если у вас возникла конкретная ошибка доступа, напишите об этом в комментариях, обсудим.
Подписывайтесь на новости iklife.ru, учитесь вместе с нами работать с разными программами, сервисами и приложениями, чтобы идти в ногу со временем.
Всего доброго. До новой познавательной встречи.
Что такое аутентификация
Создайте рассылку в конструкторе за 15 минут. Отправляйте до 1500 писем в месяц бесплатно.
Отправить рассылку
Аутентификация [1] — это процесс проверки подлинности чего-либо. Термин чаще всего используется в среде информационных технологий. Примером аутентификации может быть сравнение пароля, введенного пользователем, с паролем, который сохранен в базе данных сервера. Подобная проверка может быть как односторонней, так и взаимной — все зависит от способа защиты и политики безопасности сервиса.
Методы аутентификации
Методы аутентификации разделяются в зависимости от типа ресурса, структуры и тонкостей организации сети, удаленности объекта и технологии, которая используется в процессе распознавания. На основании степени конфиденциальности можно выделить несколько уровней аутентификации:
Классификация способов аутентификации
Все методы аутентификации можно разделить на одностороннюю (проверка осуществляется только одной стороной) и взаимную (в проверке данных принимают участие обе стороны). Также выделяют однофакторный и криптографический способ. Самым популярным примером применения однофакторных систем являются пароли. В зависимости от уровня организации и степени конфиденциальности данных, они могут быть многоразовыми (менее защищенный вариант) и одноразовыми.
Все способы аутентификации можно расположить по возрастанию их сложности.
Базовая аутентификация
При применении этого вида аутентификации логин пользователя и его пароль входят в состав веб-запроса. Любой перехватчик пакета информации без труда узнает засекреченные данные.
Данный способ не рекомендуется использовать даже в ситуациях, когда засекреченные данные не несут существенной информации ни для пользователя, ни для интернет-ресурса. Данное обстоятельство связано с тем, что большинство людей используют в сети один и тот же пароль для всех сервисов, которыми они пользуются. По данным Sophos (компания-производитель средств информационной безопасности), 41% интернет-пользователей применяют одни и те же данные для регистрации для различных платформах, будь то банковская страница или форум, посвященный их любимому хобби.
Дайджест-аутентификация
Вид аутентификации, который подразумевает передачу пользовательских паролей в хешированном состоянии. На первый взгляд может показаться, что уровень защиты в данном случае немногим отличается от базовой проверки. На деле это не так: к каждому паролю добавляется произвольная строка, состоящая из символов (хэш), которая генерируется отдельно на каждый новый веб-запрос. Постоянное обновление хеша не дает злоумышленнику возможности расшифровать пакет данных — каждое новое подключение образует другое значение пароля.
На основе данного метода аутентификации работает большинство интернет-браузеров (Mozilla, Google Chrome, Opera).
HTTPS
Этот протокол дает возможность шифрования не только логина и пароля пользователя, но и всех остальных данных, передаваемых между интернет-клиентом и сервером. Используется для ввода личной информации:
У протокола есть один существенный недостаток — он значительно замедляет скорость соединения.
Аутентификация с предъявлением цифрового сертификата
Такой способ подразумевает использование протоколов с запросом и соответствующим ответом на него. Страница аутентификации направляет к пользователю определенный набор символов («адрес»). Ответом является запрос сервера, который подписан при помощи персонального ключа. Аутентификация [2] по открытому ключу применяется в качестве защитного механизма в следующих протоколах:
Аутентификация с использованием Cookies
Куки — небольшой массив данных, который отправляется интернет-сервером и хранится на ПК пользователя. Браузер при каждой попытке подключения к данному ресурсу посылает Cookies как одну из составных частей HTTP-запроса. Данная технология, помимо аутентификации, используется для:
Как средство аутентификации куки используются для систем безопасности чатов, форумов и различных интернет-игр. Cookies обладают низкой степенью защиты — если сессия плохо фильтруется, то похитить их не составляет труда. Поэтому применяется дополнительная привязка по IP-адресу, с которого пользователь вошел в систему.
Децентрализованная аутентификация
Выделяют несколько основных протоколов, работающих по принципу децентрализованной аутентификации:
Отслеживание процесса аутентификации пользователем
Безопасность пользовательских данных во многом зависит от поведения самого пользователя. Многие веб-ресурсы отслеживают подозрительную активность и уведомляют об этом владельца учетной записи. К примеру, Google фиксирует IP-адреса, с которых осуществлялся вход в систему, логирует процесс авторизации и предоставляет пользователю произвести следующие настройки:
Другой пример — компания IBM. Включив функцию аудита сеансов пользователя, вы получаете доступ к следующей информации:
Многие веб-сервисы позволяют отслеживать процесс аутентификации при помощи какого-то одного значения, например, IP-адреса (необъективно, если у вас динамический IP).
Многофакторная аутентификация
Многофакторная аутентификация подразумевает предъявления более чем одного «доказательства» способа аутентификации для доступа к данным. Такими «доказательствами» могут быть:
Одной из разновидностей многофакторной аутентификации является двухфакторная (также называется двухэтапной или двойной). Такой способ подразумевает под собой проверку данных пользователя на основании двух отличных друг от друга компонентов.
Примером двухэтапной аутентификации являются сервисы от Google и Microsoft. При попытке авторизации с нового устройства, помимо логина и пароля, необходимо также ввести код, состоящий из шести (Google) или восьми (Microsoft) знаков. Получить его можно одним из перечисленных способов:
Выбрать способ подтверждения можно в личном кабинете вашей учетной записи.
Основными преимуществами двойной аутентификации является удобство (смартфон всегда под рукой) и безопасность (постоянное изменение кода подтверждения). Данный метод также имеет определенные недостатки. Проблемы с мобильной сетью могут стать помехой для получения кода подтверждения, а само смс-сообщение может быть перехвачено злоумышленниками. Существует также некоторая задержка при получении SMS — она связана с процедурой проверки подлинности.
Двухфакторная аутентификация используется сервисами Facebook, Web Money, Yandex, Microsoft, Google и другими. Все они используют свои собственные программы-аутентификаторы, каждая из которых подчиняется определенным стандартам.
Ошибки аутентификации при подключении к беспроводным сетям
Подключаясь к беспроводной сети, пользователь также проходит через процесс аутентификации. Существует несколько способов проверки подлинности такого типа. Они зависят от настроек роутера, количества абонентов, вида беспроводной сети (домашняя, общественная, корпоративная). Чаще всего используется тип шифрования WPA-PSKWPA2-PSK2 mixed. Он является достаточно защищенным и подходит для применения в различных видах сетей. Для большей безопасности многие частные организации используют шифрование, где каждый пользователь имеет индивидуальный пароль, привязанный к ПК.
Ошибки аутентификации чаще всего возникает при несоответствии вида шифрования и набранной парольной фразы. Пути решения проблемы будут отличаться для пользователей ПК и владельцев мобильных телефонов.
Как убрать ошибки аутентификации на компьютере
Если после введения ключевой фразы вы получаете уведомление об ошибке аутентификации, то в первую очередь вам необходимо проверить следующее:
Как узнать пароль от Wi-Fi?
Если вы забыли свою парольную фразу, то узнать ее можно в настройках роутера. Для этого подключитесь к нему при помощи кабеля и откройте любой интернет-браузер. Напишите IP маршрутизатора в адресной строке. Посмотреть его можно в инструкции или на корпусе роутера. Еще один способ узнать IP-адрес — использовать командную строку. Для этого используйте комбинацию Win+R и в появившемся окне введите команду «CMD». Запустится командная строка, где вам необходимо будет ввести «ipconfig». Строка «Основной шлюз» является требуемым IP-адресом.
Введите IP-адрес в адресной строке браузера. В появившемся окне введите логин и пароль для входа (по умолчанию admin и admin соответственно). В меню выберите пункт «Расширенные настройки» и перейдите в подраздел «Wi-Fi». Найдите параметры безопасности — именно здесь можно обнаружить тип шифрования, название сети и пароль.
Пароль введен правильно, но войти в сеть не удается
Аутентификация может не состояться при сбое самого роутера. Решается простой перезагрузкой девайса. В таких ситуациях также рекомендуется проверить канал роутера. Для этого в настройках WiFi перейдите в раздел «Основные настройки», а там — в подпункт «Канал». Желательно установить значение «Автоматически».
Если и это не помогло, то необходимо проверить Wi-Fi-адаптер компьютера. Проверьте наличие и правильность работы драйверов в вашем диспетчере устройств. Перейдите во вкладку «сетевые адаптеры» и найдите свой Wi-Fi модуль. Если рядом с устройством есть восклицательный знак, значит его работа некорректна — отсутствуют или не работают драйвера. Переустановите их, и проблема с аутентификацией должна решиться.
Проблемы с аутентификацией на мобильном устройстве
Процесс аутентификации на мобильном девайсе происходит следующим образом:
Что значит уведомление «Ошибка аутентификации»? Данное сообщение показывает, что проблема кроется в неправильно введенном пароле или параметрах безопасности роутера. Неработающий Wi-Fi после уведомления «Сохранено» свидетельствует о неполадках самой беспроводной сети.
Как исправить?
Прежде чем изменять параметры роутера, убедитесь, что пароль введен правильно, у вас не включен Caps Lock или кириллица/латынь. Только после этого обращайтесь к настройкам Wi-Fi:
Еще один вариант, который может вам помочь — это специальное приложение для устройств Android — Wi-Fi Fixer (доступен для скачивания в Google Play). Оно автоматически исправляет ошибки беспроводной сети и позволяет вам подключиться к роутеру при ошибке аутентификации.
Обзор способов и протоколов аутентификации в веб-приложениях
Я расскажу о применении различных способов аутентификации для веб-приложений, включая аутентификацию по паролю, по сертификатам, по одноразовым паролям, по ключам доступа и по токенам. Коснусь технологии единого входа (Single Sign-On), рассмотрю различные стандарты и протоколы аутентификации.
Перед тем, как перейти к техническим деталям, давайте немного освежим терминологию.
Аналогично эти термины применяются в компьютерных системах, где традиционно под идентификацией понимают получение вашей учетной записи (identity) по username или email; под аутентификацией — проверку, что вы знаете пароль от этой учетной записи, а под авторизацией — проверку вашей роли в системе и решение о предоставлении доступа к запрошенной странице или ресурсу.
Однако в современных системах существуют и более сложные схемы аутентификации и авторизации, о которых я расскажу далее. Но начнем с простого и понятного.
Аутентификация по паролю
Этот метод основывается на том, что пользователь должен предоставить username и password для успешной идентификации и аутентификации в системе. Пара username/password задается пользователем при его регистрации в системе, при этом в качестве username может выступать адрес электронной почты пользователя.
Применительно к веб-приложениям, существует несколько стандартных протоколов для аутентификации по паролю, которые мы рассмотрим ниже.
HTTP authentication
Этот протокол, описанный в стандартах HTTP 1.0/1.1, существует очень давно и до сих пор активно применяется в корпоративной среде. Применительно к веб-сайтам работает следующим образом:
Весь процесс стандартизирован и хорошо поддерживается всеми браузерами и веб-серверами. Существует несколько схем аутентификации, отличающихся по уровню безопасности:
Forms authentication
Для этого протокола нет определенного стандарта, поэтому все его реализации специфичны для конкретных систем, а точнее, для модулей аутентификации фреймворков разработки.
Работает это по следующему принципу: в веб-приложение включается HTML-форма, в которую пользователь должен ввести свои username/password и отправить их на сервер через HTTP POST для аутентификации. В случае успеха веб-приложение создает session token, который обычно помещается в browser cookies. При последующих веб-запросах session token автоматически передается на сервер и позволяет приложению получить информацию о текущем пользователе для авторизации запроса.
Пример forms authentication.
Приложение может создать session token двумя способами:
Другие протоколы аутентификации по паролю
Два протокола, описанных выше, успешно используются для аутентификации пользователей на веб-сайтах. Но при разработке клиент-серверных приложений с использованием веб-сервисов (например, iOS или Android), наряду с HTTP аутентификацией, часто применяются нестандартные протоколы, в которых данные для аутентификации передаются в других частях запроса.
Существует всего несколько мест, где можно передать username и password в HTTP запросах:
Распространенные уязвимости и ошибки реализации
Аутентификации по паролю считается не очень надежным способом, так как пароль часто можно подобрать, а пользователи склонны использовать простые и одинаковые пароли в разных системах, либо записывать их на клочках бумаги. Если злоумышленник смог выяснить пароль, то пользователь зачастую об этом не узнает. Кроме того, разработчики приложений могут допустить ряд концептуальных ошибок, упрощающих взлом учетных записей.
Ниже представлен список наиболее часто встречающихся уязвимостей в случае использования аутентификации по паролю:
Аутентификация по сертификатам
Сертификат представляет собой набор атрибутов, идентифицирующих владельца, подписанный certificate authority (CA). CA выступает в роли посредника, который гарантирует подлинность сертификатов (по аналогии с ФМС, выпускающей паспорта). Также сертификат криптографически связан с закрытым ключом, который хранится у владельца сертификата и позволяет однозначно подтвердить факт владения сертификатом.
На стороне клиента сертификат вместе с закрытым ключом могут храниться в операционной системе, в браузере, в файле, на отдельном физическом устройстве (smart card, USB token). Обычно закрытый ключ дополнительно защищен паролем или PIN-кодом.
В веб-приложениях традиционно используют сертификаты стандарта X.509. Аутентификация с помощью X.509-сертификата происходит в момент соединения с сервером и является частью протокола SSL/TLS. Этот механизм также хорошо поддерживается браузерами, которые позволяют пользователю выбрать и применить сертификат, если веб-сайт допускает такой способ аутентификации.
Использование сертификата для аутентификации.
Во время аутентификации сервер выполняет проверку сертификата на основании следующих правил:
Пример X.509 сертификата.
После успешной аутентификации веб-приложение может выполнить авторизацию запроса на основании таких данных сертификата, как subject (имя владельца), issuer (эмитент), serial number (серийный номер сертификата) или thumbprint (отпечаток открытого ключа сертификата).
Использование сертификатов для аутентификации — куда более надежный способ, чем аутентификация посредством паролей. Это достигается созданием в процессе аутентификации цифровой подписи, наличие которой доказывает факт применения закрытого ключа в конкретной ситуации (non-repudiation). Однако трудности с распространением и поддержкой сертификатов делает такой способ аутентификации малодоступным в широких кругах.
Аутентификация по одноразовым паролям
Аутентификация по одноразовым паролям обычно применяется дополнительно к аутентификации по паролям для реализации two-factor authentication (2FA). В этой концепции пользователю необходимо предоставить данные двух типов для входа в систему: что-то, что он знает (например, пароль), и что-то, чем он владеет (например, устройство для генерации одноразовых паролей). Наличие двух факторов позволяет в значительной степени увеличить уровень безопасности, что м. б. востребовано для определенных видов веб-приложений.
Другой популярный сценарий использования одноразовых паролей — дополнительная аутентификация пользователя во время выполнения важных действий: перевод денег, изменение настроек и т. п.
Существуют разные источники для создания одноразовых паролей. Наиболее популярные:
Аппаратный токен RSA SecurID генерирует новый код каждые 30 секунд.
В веб-приложениях такой механизм аутентификации часто реализуется посредством расширения forms authentication: после первичной аутентификации по паролю, создается сессия пользователя, однако в контексте этой сессии пользователь не имеет доступа к приложению до тех пор, пока он не выполнит дополнительную аутентификацию по одноразовому паролю.
Аутентификация по ключам доступа
Этот способ чаще всего используется для аутентификации устройств, сервисов или других приложений при обращении к веб-сервисам. Здесь в качестве секрета применяются ключи доступа (access key, API key) — длинные уникальные строки, содержащие произвольный набор символов, по сути заменяющие собой комбинацию username/password.
В большинстве случаев, сервер генерирует ключи доступа по запросу пользователей, которые далее сохраняют эти ключи в клиентских приложениях. При создании ключа также возможно ограничить срок действия и уровень доступа, который получит клиентское приложение при аутентификации с помощью этого ключа.
Хороший пример применения аутентификации по ключу — облако Amazon Web Services. Предположим, у пользователя есть веб-приложение, позволяющее загружать и просматривать фотографии, и он хочет использовать сервис Amazon S3 для хранения файлов. В таком случае, пользователь через консоль AWS может создать ключ, имеющий ограниченный доступ к облаку: только чтение/запись его файлов в Amazon S3. Этот ключ в результате можно применить для аутентификации веб-приложения в облаке AWS.
Пример применения аутентификации по ключу.
Использование ключей позволяет избежать передачи пароля пользователя сторонним приложениям (в примере выше пользователь сохранил в веб-приложении не свой пароль, а ключ доступа). Ключи обладают значительно большей энтропией по сравнению с паролями, поэтому их практически невозможно подобрать. Кроме того, если ключ был раскрыт, это не приводит к компрометации основной учетной записи пользователя — достаточно лишь аннулировать этот ключ и создать новый.
С технической точки зрения, здесь не существует единого протокола: ключи могут передаваться в разных частях HTTP-запроса: URL query, request body или HTTP header. Как и в случае аутентификации по паролю, наиболее оптимальный вариант — использование HTTP header. В некоторых случаях используют HTTP-схему Bearer для передачи токена в заголовке (Authorization: Bearer [token]). Чтобы избежать перехвата ключей, соединение с сервером должно быть обязательно защищено протоколом SSL/TLS.
Пример аутентификации по ключу доступа, переданного в HTTP заголовке.
Кроме того, существуют более сложные схемы аутентификации по ключам для незащищенных соединений. В этом случае, ключ обычно состоит их двух частей: публичной и секретной. Публичная часть используется для идентификации клиента, а секретная часть позволяет сгенерировать подпись. Например, по аналогии с digest authentication схемой, сервер может послать клиенту уникальное значение nonce или timestamp, а клиент — возвратить хэш или HMAC этого значения, вычисленный с использованием секретной части ключа. Это позволяет избежать передачи всего ключа в оригинальном виде и защищает от replay attacks.
Аутентификация по токенам
Такой способ аутентификации чаще всего применяется при построении распределенных систем Single Sign-On (SSO), где одно приложение (service provider или relying party) делегирует функцию аутентификации пользователей другому приложению (identity provider или authentication service). Типичный пример этого способа — вход в приложение через учетную запись в социальных сетях. Здесь социальные сети являются сервисами аутентификации, а приложение доверяет функцию аутентификации пользователей социальным сетям.
Реализация этого способа заключается в том, что identity provider (IP) предоставляет достоверные сведения о пользователе в виде токена, а service provider (SP) приложение использует этот токен для идентификации, аутентификации и авторизации пользователя.
На общем уровне, весь процесс выглядит следующим образом:
Пример аутентификации «активного» клиента при помощи токена, переданного посредством Bearer схемы.
Процесс, описанный выше, отражает механизм аутентификации активного клиента, т. е. такого, который может выполнять запрограммированную последовательность действий (например, iOS/Android приложения). Браузер же — пассивный клиент в том смысле, что он только может отображать страницы, запрошенные пользователем. В этом случае аутентификация достигается посредством автоматического перенаправления браузера между веб-приложениями identity provider и service provider.
Пример аутентификации «пассивного» клиента посредством перенаправления запросов.
Существует несколько стандартов, в точности определяющих протокол взаимодействия между клиентами (активными и пассивными) и IP/SP-приложениями и формат поддерживаемых токенов. Среди наиболее популярных стандартов — OAuth, OpenID Connect, SAML, и WS-Federation. Некоторая информация об этих протоколах — ниже в статье.
Сам токен обычно представляет собой структуру данных, которая содержит информацию, кто сгенерировал токен, кто может быть получателем токена, срок действия, набор сведений о самом пользователе (claims). Кроме того, токен дополнительно подписывается для предотвращения несанкционированных изменений и гарантий подлинности.
При аутентификации с помощью токена SP-приложение должно выполнить следующие проверки:
В случае успешной проверки SP-приложение выполняет авторизацию запроса на основании данных о пользователе, содержащихся в токене.
Форматы токенов
Существует несколько распространенных форматов токенов для веб-приложений:
Пример SWT токена (после декодирования).
Issuer=http://auth.myservice.com&
Audience=http://myservice.com&
ExpiresOn=1435937883&
UserName=John Smith&
UserRole=Admin&
HMACSHA256=KOUQRPSpy64rvT2KnYyQKtFFXUIggnesSpE7ADA4o9w
Пример подписанного JWT токена (после декодирования 1 и 2 блоков).
Стандарт SAML
Стандарт Security Assertion Markup Language (SAML) описывает способы взаимодействия и протоколы между identity provider и service provider для обмена данными аутентификации и авторизации посредством токенов. Изначально версии 1.0 и 1.1 были выпущены в 2002 – 2003 гг., в то время как версия 2.0, значительно расширяющая стандарт и обратно несовместимая, опубликована в 2005 г.
Этот основополагающий стандарт — достаточно сложный и поддерживает много различных сценариев интеграции систем. Основные «строительные блоки» стандарта:
Кроме того, стандарт определяет формат обмена метаинформацией между участниками, которая включает список поддерживаемых ролей, протоколов, атрибутов, ключи шифрования и т. п.
Рассмотрим краткий пример использования SAML для сценария Single Sign-On. Пользователь хочет получить доступ на защищенный ресурс сервис-провайдера (шаг № 1 на диаграмме аутентификации пассивных клиентов). Т. к. пользователь не был аутентифицирован, SP отправляет его на сайт identity provider’а для создания токена (шаг № 2). Ниже приведен пример ответа SP, где последний использует SAML HTTP Redirect binding для отправки сообщения с запросом токена:
В случае такого запроса, identity provider аутентифицирует пользователя (шаги №3-4), после чего генерирует токен. Ниже приведен пример ответа IP с использованием HTTP POST binding (шаг № 5):
После того как браузер автоматически отправит эту форму на сайт service provider’а (шаг № 6), последний декодирует токен и аутентифицирует пользователя. По результатам успешной авторизации запроса пользователь получает доступ к запрошенному ресурсу (шаг № 7).
Стандарты WS-Trust и WS-Federation
WS-Trust и WS-Federation входят в группу стандартов WS-*, описывающих SOAP/XML-веб сервисы. Эти стандарты разрабатываются группой компаний, куда входят Microsoft, IBM, VeriSign и другие. Наряду с SAML, эти стандарты достаточно сложные, используются преимущественно в корпоративных сценариях.
Стандарт WS-Trust описывает интерфейс сервиса авторизации, именуемого Secure Token Service (STS). Этот сервис работает по протоколу SOAP и поддерживает создание, обновление и аннулирование токенов. При этом стандарт допускает использование токенов различного формата, однако на практике в основном используются SAML-токены.
Стандарт WS-Federation касается механизмов взаимодействия сервисов между компаниями, в частности, протоколов обмена токенов. При этом WS-Federation расширяет функции и интерфейс сервиса STS, описанного в стандарте WS-Trust. Среди прочего, стандарт WS-Federation определяет:
Можно сказать, что WS-Federation позволяет решить те же задачи, что и SAML, однако их подходы и реализация в некоторой степени отличаются.
Стандарты OAuth и OpenID Connect
В отличие от SAML и WS-Federation, стандарт OAuth (Open Authorization) не описывает протокол аутентификации пользователя. Вместо этого он определяет механизм получения доступа одного приложения к другому от имени пользователя. Однако существуют схемы, позволяющие осуществить аутентификацию пользователя на базе этого стандарта (об этом — ниже).
Первая версия стандарта разрабатывалась в 2007 – 2010 гг., а текущая версия 2.0 опубликована в 2012 г. Версия 2.0 значительно расширяет и в то же время упрощает стандарт, но обратно несовместима с версией 1.0. Сейчас OAuth 2.0 очень популярен и используется повсеместно для предоставления делегированного доступа и третье-сторонней аутентификации пользователей.
Чтобы лучше понять сам стандарт, рассмотрим пример веб-приложения, которое помогает пользователям планировать путешествия. Как часть функциональности оно умеет анализировать почту пользователей на наличие писем с подтверждениями бронирований и автоматически включать их в планируемый маршрут. Возникает вопрос, как это веб-приложение может безопасно получить доступ к почте пользователей, например, к Gmail?
> Попросить пользователя указать данные своей учетной записи? — плохой вариант.
> Попросить пользователя создать ключ доступа? — возможно, но весьма сложно.
Как раз эту проблему и позволяет решить стандарт OAuth: он описывает, как приложение путешествий (client) может получить доступ к почте пользователя (resource server) с разрешения пользователя (resource owner). В общем виде весь процесс состоит из нескольких шагов:
Взаимодействие компонентов в стандарте OAuth.
Стандарт описывает четыре вида грантов, которые определяют возможные сценарии применения:
Стандарт не определяет формат токена, который получает приложение: в сценариях, адресуемых стандартом, приложению нет необходимости анализировать токен, т. к. он лишь используется для получения доступа к ресурсам. Поэтому ни токен, ни грант сами по себе не могут быть использованы для аутентификации пользователя. Однако если приложению необходимо получить достоверную информацию о пользователе, существуют несколько способов это сделать:
Стоит заметить, что OpenID Connect, заменивший предыдущие версии стандарта OpenID 1.0 и 2.0, также содержит набор необязательных дополнений для поиска серверов авторизации, динамической регистрации клиентов и управления сессией пользователя.
Заключение
В этой статье мы рассмотрели различные методы аутентификации в веб-приложениях. Ниже — таблица, которая резюмирует описанные способы и протоколы: