Оглавление
- Basic HTTP Authentication
- Почему стоит использовать токены авторизации?
- Взаимосвязь идентификации, аутентификации и авторизации
- Авторизация
- WebAuthn
- Ошибки аутентификации: причины и пути решения
- Что такое идентификация?
- Классификация видов аутентификации
- Что документируется в разделе аутентификации
- Объясняем идентификацию, аутентификацию и авторизацию на енотах
- Связь между идентификацией, аутентификацией и авторизацией
- Что такое ОAuth2.0?
- Элементы аутентификации
- Методы аутентификации
- Классификация видов аутентификации
- Блог компании ArtisMedia
- Преимущества входа в домен по токену
- Проблема входа в систему
- Однофакторная двухэтапная аутентификация
- Обзор Digest Аутентификации
- Идентификация, аутентификация и авторизация
- Принцип работы
- Образцы разделов авторизации
Basic HTTP Authentication
Чтобы создать проверку пользователя во всплывающем окне достаточно
следующего кода:
Тем не менее, желательно добавить немного функционала:
Работать такой код будет довольно убого — если ввести пароль неверно не
будет второй попытки. Придётся закрывать вкладку, идти в историю браузера и удалять
там соответствующие данные.
В
Firefox
это Library → History → Clear Recent History → Active Logins
В Chrome это
Passwords and other sing-in data (в Clear browsing data → Advanced)
В Safari это Clear History
Если пароль поменялся, пользователя со старым паролем не выкинет и т.д.
Примечание о совместимости
Пожалуйста, будьте осторожны при кодировании строк заголовка HTTP.
Чтобы гарантировать максимальную совместимость со всеми клиентами, ключевое слово «Basic» должно быть написано с прописной буквой «B», строка realm должна быть заключена в двойные (а не одинарные) кавычки, и ровно один пробел должен предшествовать коду 401 в строке заголовка HTTP/1.0 401. Параметры аутентификации должны быть разделены запятыми, как показано в приведенном выше примере дайджеста.
Почему стоит использовать токены авторизации?
Многие люди считают, что если текущая стратегия работает хорошо (пусть и с некоторыми ошибками), то нет смысла что-то менять. Но токены авторизации могут принести множество выгод.
Они хороши для администраторов систем, которые часто предоставляют временный доступ, т.е. база пользователей колеблется в зависимости от даты, времени или особого события. Многократное предоставление и отмена доступа создаёт серьёзную нагрузку на людей.
Токены авторизации позволяют обеспечить детальный доступ, т.е. сервер предоставляет доступ на основе определенных свойств документа, а не свойств пользователя. Традиционная система логинов и паролей не допускает такой тонкой настройки деталей.
Токены авторизации могут обеспечить повышенную безопасность. Сервер содержит конфиденциальные документы, которые могут нанести компании или стране серьезный ущерб при выпуске. Простой пароль не может обеспечить достаточную защиту.
Взаимосвязь идентификации, аутентификации и авторизации
Наверное, вы уже догадались, что все три процедуры взаимосвязаны:
- Сначала определяют имя (логин или номер) – идентификация
- Затем проверяют пароль (ключ или отпечаток пальца) – аутентификация
- И в конце предоставляют доступ – авторизация
Инфографика: 1 — Идентификация; 2 — Аутентификация; 3 — Авторизация
Проблемы безопасности при авторизации
Помните, как в сказке «Красная Шапочка» бабушка разрешает внучке войти в дом? Сначала бабушка спрашивает, кто за дверью, затем говорит Красной Шапочке, как открыть дверь. Волку же оказалось достаточным узнать имя внучки и расположение дома, чтобы пробраться в дом.
Какой вывод можно сделать из этой истории?
Каждый этап авторизации должен быть тщательно продуман, а идентификатор, пароль и сам принцип авторизации нужно держать в секрете.
Авторизация
ABACофициальной документацииRBACRole-based access controlKubernetes 1.8Чтобы включить RBACстатью
- и — роли, которые служат для описания прав доступа:
- позволяет описать права в рамках пространства имён;
- — в рамках кластера, в том числе к кластер-специфичным объектам типа узлов, non-resources urls (т.е. не связанных с ресурсами Kubernetes — например, , , );
- и — служит для привязки и к пользователю, группе пользователей или ServiceAccount.
- группы API — см. по apiGroups и вывод ;
- ресурсы (resources: , , и т.п.);
- глаголы (verbs: , и т.п.).
- имена ресурсов () — для случая, когда нужно предоставить доступ к какому-то определённому ресурсу, а не ко всем ресурсам этого типа.
официальной документации
WebAuthn
- Стандарт дает пользователям возможность идентифицироваться на сайтах и в приложениях с помощью внешних ключей безопасности (например, USB-ключей) или по отпечатку пальца и, впоследствии, по другим биометрическим данным: лицу, сетчатке глаза.
- Основная задача стандарта — избавить пользователей от логинов / паролей и перейти на идентификацию с помощью криптографии с использованием публичных ключей «Public key cryptography». Public key cryptography — это криптографическая концепция, использующая пары математически связанных ключей. Private key (закрытый ключ) хранится в безопасном месте у пользователя, а public key (открытый ключ) хранится и используется открыто.
Роли
Authenticator
- Генерации public key credentials (пар открытых / закрытых ключей).
- Authenticator безопасно хранит закрытый ключ в своей памяти
- Передает открытый ключ внешним системам
- Подписывает данные закрытым ключом и результат передает внешним системам
Relying PartyUser Agent
Authorization flow
- navigator.credentials.create — для создания идентификационных данных пользователя
- navigator.credentials.get — осуществляет проверку идентификационных данных пользователя
- Зарегистрированный пользователь заходит на сайт и в форме логина выбирает войти с помощью “WebAuthn”. На сайте будет написано, конечно, не WebAuthn, а “войти по отпечатку пальца” или “войти с помощью внешнего ключа”. Приложение делает на Relying Party запрос Challenge. Challenge — имеет тот же смысл, что и Code в OAuth 2.0.
- Relying Party присылает Challenge. Этот обмен не регламентируется стандартом, но обычно используется формат REST API.
- Взаимодействие браузера и Authenticator-а происходит по протоколу CTAP (Client to Authenticator Protocols). Браузер вызывает navigator.credentials.get c параметрами:
- Challenge
- Дополнительные атрибуты
- Authenticator ищет идентификационные данные пользователя, опционально запрашивает у пользователя подтвердить, что он это он.
- Если проверка прошла успешно, то Authenticator возвращает подписанные приватным ключом данные.
- Приложение посылает подписанные данные на Relying Party.
- Relying Party расшифровывает данные с помощью открытого ключа, проверяет Challenge и авторизует пользователя.
Ошибки аутентификации: причины и пути решения
При подключении к сети Wi-Fi, одного устройства к другому или при входе в любую программу и на сайт могут возникнуть проблемы. Чаще всего они связаны с такими причинами:
Неправильный идентификатор, то есть вы просто забыли или перепутали логин, пароль, ПИН-код, банковскую карту. Тут не возникает особых вопросов, как исправить ошибку
Проверьте данные для входа, возможно, вы не обратили внимание на регистр и написали строчные буквы вместо больших. Также часто при входе на сайт или в программу мы забываем проверить раскладку клавиатуры и пишем не на английском, а на русском языке.
Повреждение физического носителя, например, магнитная лента на банковской карте поцарапалась, карта погнулась, ключ от онлайн-банка или электронная подпись сломались, на глазу появился конъюнктивит, на пальце ранка, что препятствует считыванию биометрических данных, а телефон потерялся или утонул в Волге
Все это приводит к определенным затруднениям, и нужно искать способ убрать ошибку и получить доступ к данным или деньгам в каждом конкретном случае. Можно перевыпустить карту, а тем временем перевести деньги на другой счет и обналичить с него, заказать новую подпись или ключ, обратиться в офис, чтобы подтвердить действие без отпечатка пальцев, а, к примеру, при помощи кодового слова.
Разная система шифрования на телефоне и роутере приводит к их несовместимости. Чтобы подключиться к Wi-Fi в случае такой ошибки, потребуется изменить настройки роутера, применив шифрование, доступное в мобильном устройстве.
Иногда телефон не подключается к сети из-за программного сбоя ОС или ошибки в работе роутера. В таком случае попробуйте обновить программу в мобильном устройстве и перезапустите маршрутизатор.
Разная скорость передачи данных на устройствах, тут придется разбираться и снова лезть в настройки выставлять приемлемый объем данных, передаваемый за определенный промежуток времени.
В настройках роутера или другого прибора могут быть четко прописаны устройства, с которыми он может поддерживать связь. Если нужно добавить новый гаджет, то снова-таки придется поработать с настройками.
Как видим, причины могут быть разными. Чтобы разобраться с ними, нужно иметь запасной план, уметь работать с настройками программ и устройств или знать того, кто умеет это делать.
Что такое идентификация?
Сначала давайте прочитаем определение:
Идентификация выполняется при попытке войти в какую-либо систему (например, в операционную систему или в сервис электронной почты).
Сложно? Давайте перейдём к примерам, заодно разберемся, что такое идентификатор.
Пример идентификатора в социальной сети ВКонтакте
Когда нам звонят с неизвестного номера, что мы делаем? Правильно, спрашиваем “Кто это”, т.е. узнаём имя. Имя в данном случае и есть идентификатор, а ответ вашего собеседника — это будет идентификация.
Идентификатором может быть:
- номер телефона
- номер паспорта
- номер страницы в социальной сети и т.д.
Подробнее об идентификаторах и ID рекомендую прочитать здесь.
Классификация видов аутентификации
В зависимости от политики безопасности систем и уровня доверия
- Односторонняя. Пользователь доказывает право доступа к ресурсу его владельцу.
- Взаимная. Проверяется подлинность прав доступа и пользователя и владельца сайта. Для этого используют криптографические способы.
Чтобы защитить владельца сайта от злоумышленников, используют криптографические протоколы аутентификации.
Типы протоколов обусловлены тем, где происходит аутентификация — на PC или в сети.
Аутентификация на PC
- Login
- PAP (Password Authentication Protocol) — логин и пароль
- Карта доступа — USB и сертификаты
- Биометрические данные
Аутентификация в сети
- Cookies. Используются для отслеживания сеанса, сохранения предпочтений и сбора статистики. Степень защиты невысокая, однако привязка к IP-адресу решает эту проблему.
- Kerberos. Протокол взаимной аутентификации с помощью криптографического ключа.
- SAML (Security Assertion Markup Language) Язык разметки, который позволяет сторонам обмениваться данными аутентификации.
- SNMP (Simple Network Management Protocol) Протокол, который контролирует подключенные к сети устройства.
- Сертификаты X.509 Сертификаты с открытым ключом.
- OpenID Connect. Используется для создания единой учетной записи для аутентификации на разных ресурсах.
Что документируется в разделе аутентификации
В документации API не нужно подробно объяснять внешним пользователям, как работает аутентификация. Отсутствие объяснений внутренних процессов аутентификации, является лучшей практикой, поскольку хакерам будет сложнее злоупотреблять API.
Тем не менее нужно объяснить необходимую информацию:
- как получить API ключ;
- как пройти аутентификацию запроса;
- сообщения об ошибках, связанных с неверной аутентификацией;
- чувствительность информации аутентификации;
- период действия токена доступа (авторизации).
Если есть открытый и закрытый ключи, нужно объяснить, где следует использовать каждый ключ, и отметить, что закрытые ключи не должны использоваться совместно. Если разные уровни лицензий предоставляют разный доступ к вызовам API, эти уровни лицензирования должны быть явно указаны в разделе авторизации или в другом месте.
Поскольку раздел API ключей важен, и нужен разработчикам до того, как они начнут использовать API, этот раздел должен быть в начале руководства.
Объясняем идентификацию, аутентификацию и авторизацию на енотах
Выше было очень много умных слов, теперь давайте упростим до конкретных примеров. Скажем, пользователь хочет войти в свой аккаунт Google. Google подходит лучше всего, потому что там процедура входа явным образом разбита на несколько простейших этапов. Вот что при этом происходит:
- Для начала система запрашивает логин, пользователь его указывает, система распознает его как существующий — это идентификация.
- После этого Google просит ввести пароль, пользователь его вводит, и система соглашается, что пользователь, похоже, действительно настоящий, раз пароль совпал, — это аутентификация.
- Скорее всего, Google дополнительно спросит еще и одноразовый код из SMS или приложения. Если пользователь и его правильно введет, то система окончательно согласится с тем, что он настоящий владелец аккаунта, — это двухфакторная аутентификация.
- После этого система предоставит пользователю право читать письма в его почтовом ящике и все в таком духе — это авторизация.
Аутентификация без предварительной идентификации лишена смысла — пока система не поймет, подлинность чего же надо проверять, совершенно бессмысленно начинать проверку. Для начала надо представиться.
Идентификация без аутентификации — это просто глупо. Потому что мало ли кто ввел существующий в системе логин! Системе обязательно надо удостовериться, что этот кто-то знает еще и пароль. Но пароль могли подсмотреть или подобрать, поэтому лучше подстраховаться и спросить что-то дополнительное, что может быть известно только данному пользователю: например, одноразовый код для подтверждения входа.
А вот авторизация без идентификации и тем более аутентификации очень даже возможна. Например, в Google Документах можно публиковать документы так, чтобы они были доступны вообще кому угодно. В этом случае вы как владелец файла увидите сверху надпись, гласящую, что его читает неопознанный енот. Несмотря на то, что енот совершенно неопознанный, система его все же авторизовала — то есть выдала право прочитать этот документ.
А вот если бы вы открыли этот документ для чтения только определенным пользователям, то еноту в таком случае сперва пришлось бы идентифицироваться (ввести свой логин), потом аутентифицироваться (ввести пароль и одноразовый код) и только потом получить право на чтение документа — авторизоваться.
А уж если речь идет о содержимом вашего почтового ящика, то Google никогда и ни за что не авторизует неопознанного енота на чтение вашей переписки — если, конечно, он не идентифицируется с вашим логином и не аутентифицируется с вашим паролем. Но тогда это уже не будет неопознанный енот, поскольку Google однозначно определит этого енота как вас.
Теперь вы знаете, чем идентификация отличается от аутентификации и авторизации
Что еще важно понимать: аутентификация — пожалуй, самый важный из этих процессов с точки зрения безопасности вашего аккаунта. Если вы ленитесь и используете для аутентификации только слабенький пароль, то какой-нибудь енот может ваш аккаунт угнать
Поэтому:
- Придумывайте для всех аккаунтов надежные и уникальные пароли.
- Если испытываете трудности с их запоминанием — вам всегда придет на помощь менеджер паролей. Он же поможет их сгенерировать.
- Обязательно включайте двухфакторную аутентификацию — одноразовые коды в SMS или приложении — во всех сервисах, которые это позволяют. Иначе какой-нибудь неопознанный енот, так или иначе заполучивший ваш пароль, сможет прочитать вашу тайную переписку или сделать что-то еще более неприятное.
Связь между идентификацией, аутентификацией и авторизацией
«. скованные одной цепью связанные одной целью. »
Все три выше перечисленных процесса взаимодействуют между собой и не существуют друг без друга. В первую формируется идентификатор, затем происходит подтверждения подлинности и соответствия, а в последствие — Вы пользуетесь всеми возможностями и преимуществами системы, в рамках своих полномочий.
В Интернете на каком-либо сайте это будет выглядеть подобным образом:
- идентификация — проходите регистрацию;
- аутентификация — используете логин и пароль;
- авторизация — пользуетесь предоставленными ресурсами и возможностями.
К слову говоря, Вы сразу же перейти к практике — зарегистрироваться здесь на сайте, затем войти с помощью логина и пароля и воспользоваться возможностями, которые имеют только пользователи, например, написать комментарий.
Что такое ОAuth2.0?
черновикаRFC 6749
- Вместо привычных логина и пароля, которые имеют определенный набор прав и время жизни, мы получаем доступ к ресурсам с помощью случайно сгенерированных строк — токенов.
- Можно выдавать права максимально точечно, опираясь на собственные пожелания, а не на заранее определённый набор прав.
Роли
- Resource owner — сущность, которая имеет права доступа на защищённый ресурс. Сущность может быть конечным пользователем или какой-либо системой. Защищённый ресурс — это HTTP endpoint, которым может быть что угодно: API endpoint, файл на CDN, web-сервис.
- Resource server — сервер, на котором хранится защищённый ресурс, к которому имеет доступ resource owner.
- Client. Это приложение, которое запрашивает доступ к защищённому ресурсу от имени resource owner и с его разрешения — с авторизацией.
- Authorization server — сервер, который выдаёт клиенту токен для доступа к защищённому ресурсу, после успешной авторизации resource owner.
Регистрация клиента
фантазииRedirection URIClient type
- Confidential — клиент, который может безопасно хранить свои учётные данные. Например, к такому типу клиентов относят web-приложения, имеющие backend.
- Public — не может безопасно хранить свои учётные данные. Этот клиент работает на устройстве владельца ресурса, например, это браузерные или мобильные приложения.
Абстрактный OAuth 2.0. Flow c применением Access token
- Client отправляет запрос на доступ к требуемому ресурсу resource owner.
- Resource owner передаёт обратно клиенту authorization grant, который подтверждает личность resource owner и его права на ресурс, доступ к которому запрашивает client. В зависимости от flow это может быть токен или учётные данные.
- Client отправляет authorization grant, полученный в предыдущем шаге authorization server, ожидая от него Access token для доступа к защищённому ресурсу.
- authorization server убеждается в валидности authorization grant, после чего отсылает access token клиенту в ответ.
- Получив access token, клиент запрашивает защищённый ресурс у resource server.
- Resource server убеждается в корректности access token, после чего предоставляет доступ к защищённому ресурсу.
Абстрактный OAuth 2.0. Flow c применением Refresh token
- Client приходит c authorization grant к authorization server и просит предоставить ему access token и refresh token.
- Authorization server убеждается, что с authorization grant всё нормально и возвращает клиенту запрошенные access token и refresh token.
- Client с access token запрашивает защищённый ресурс, пока не получит первую ошибку доступа к ресурсу — invalid token error.
- После получения ошибки доступа, клиент идет к authorization server с refresh token и просит заменить просроченный access token на новый.
- В ответ клиент получает новый access token, а также новый refresh token, либо продлевается время жизни старого refresh token.
Элементы аутентификации
- Субъект — пользователь
- Характеристика субъекта — информация, предоставляемая пользователем для проверки подлинности.
- Владелец системы аутентификации — владелец ресурса.
- Механизм аутентификации — принцип проверки
- Механизм авторизации — управление доступом
Методы аутентификации
- Парольные
- Комбинированные
- Биометрические
- Информация о пользователе
- Пользовательские данные
Парольные
Самый распространенный метод. Аутентификация может проходить по одноразовым и многоразовым паролям. Многоразовый пароль задает пользователь, а система хранит его в базе данных. Он является одинаковым для каждой сессии. К ним относятся PIN-коды, слова, цифры, графические ключи. Одноразовые пароли — разные для каждой сессии. Это может быть SMS с кодом.
Комбинированные
Этот метод говорит сам за себя. Аутентификация происходит с использованием нескольких методов, например, парольных и криптографических сертификатов. Он требует специальное устройство для считывания информации.
Биометрические
Это самый дорогостоящий метод аутентификации. Он предотвращает утечку или кражу персональной информации. Проверка проходит по физиологическим характеристикам пользователя, например, по отпечатку пальца, сетчатке глаза, тембру голоса и даже ДНК.
Информация о пользователе
Она используется для восстановления логина или пароля и для двухэтапной аутентификации, чтобы обеспечить безопасность. К этому методу относится номер телефона, девичья фамилия матери, год рождения, дата регистрации, кличка питомца, место проживания.
Пользовательские данные
Этот метод основывается на геоданных о местоположении пользователя с использованием GPS, а также использует информацию о точках доступа беспроводной связи. Недостаток заключается в том, что с помощью прокси-серверов можно подменить данные.
Классификация видов аутентификации
В зависимости от политики безопасности систем и уровня доверия
- Односторонняя. Пользователь доказывает право доступа к ресурсу его владельцу.
- Взаимная. Проверяется подлинность прав доступа и пользователя и владельца сайта. Для этого используют криптографические способы.
Чтобы защитить владельца сайта от злоумышленников, используют криптографические протоколы аутентификации.
Типы протоколов обусловлены тем, где происходит аутентификация — на PC или в сети.
Аутентификация на PC
- Login
- PAP (Password Authentication Protocol) — логин и пароль
- Карта доступа — USB и сертификаты
- Биометрические данные
Аутентификация в сети
- Cookies. Используются для отслеживания сеанса, сохранения предпочтений и сбора статистики. Степень защиты невысокая, однако привязка к IP-адресу решает эту проблему.
- Kerberos. Протокол взаимной аутентификации с помощью криптографического ключа.
- SAML (Security Assertion Markup Language) Язык разметки, который позволяет сторонам обмениваться данными аутентификации.
- SNMP (Simple Network Management Protocol) Протокол, который контролирует подключенные к сети устройства.
- Сертификаты X.509 Сертификаты с открытым ключом.
- OpenID Connect. Используется для создания единой учетной записи для аутентификации на разных ресурсах.
Блог компании ArtisMedia
Аутентификация и авторизация – две ключевые функции сервисной инфраструктуры для защиты конфиденциальных данных и операций от несанкционированного доступа со стороны злоумышленников.
Хотя эти два термина используются в одном контексте, они представляют собой принципиально разные понятия, поскольку осуществляют защиту взаимодополняющими способами.
Аутентификация
Аутентификация используется для подтверждения личности зарегистрированного пользователя. Проверка подлинности – это процесс проверки учетных данных: идентификатора пользователя (имени, адреса электронной почты, номера телефона) и пароля.
Если идентификатор и пароль совпадают с записями, хранящимися в базе данных системы, пользователю предоставляется доступ. В случае неправильного ввода данных программа вызывает предупреждение безопасности и блокирует вход. Если неудачных попыток будет несколько, система заблокирует саму учетную запись.
Метод стандартной аутентификации не может обеспечить абсолютную безопасность при входе пользователя в систему. Для создания более надежной защиты используются дополнительные категории учетных данных (факторов).
Однофакторная аутентификация (SFA) – базовый, традиционный метод проверки подлинности с использованием только одной категории. Наиболее распространенным примером SFA являются учетные данные, связанные с введением имени пользователя и обычного пароля.
Двухфакторная аутентификация (2FA) – двухступенчатый процесс проверки, который учитывает два разных типа пользовательских данных. Помимо логина и пароля, для обеспечения дополнительного уровня защиты, система может запросить особый код, присланный в SMS сообщении или в письме электронной почты.
Многофакторная аутентификация (MFA) – самый современный метод проверки подлинности, который использует два, три (или больше) уровня безопасности. Категории всех уровней должны быть независимыми друг от друга, чтобы устранить любую уязвимость в системе. Финансовые организации, банки, правоохранительные органы пользуются многофакторной аутентификацией для защиты своих данных от потенциальных угроз.
Примером MFA является использование банковских карт. Наличие карты – первый фактор защиты, введение пин-кода – второй.
Авторизация
Происходит после того, как личность пользователя успешно аутентифицируется системой. Процесс авторизации определяет, имеет ли прошедший проверку человек доступ к определенным ресурсам: информации, файлам, базе данных. Факторы проверки подлинности, необходимые для авторизации, могут различаться в зависимости от уровня безопасности.
Например, процесс проверки и подтверждения идентификаторов сотрудников и паролей в организации называется аутентификацией, но определение того, какой сотрудник имеет доступ к определенным ресурсам, называется авторизацией. Предположим, что вы путешествуете и собираетесь сесть на самолет. Когда вы предъявляете свой билет и удостоверение личности перед регистрацией, то получаете посадочный талон, который подтверждает, что администрация аэропорта удостоверила вашу личность. Но это не все. Чтобы получить доступ к внутренней части самолета и его ресурсам, вам необходимо получить разрешение бортпроводника на посадку.
Заключение
Доступ к системе защищен как аутентификацией, так и авторизацией. Любая попытка доступа аутентифицируется путем ввода учетных данных, но она может быть принята только после успешной авторизации. И наоборот, если попытка аутентифицирована, но не авторизована, система запретит доступ к своим ресурсам. Хотя, оба термина часто используются в сочетании друг с другом, они имеют совершенно разные понятия и значения. Если аутентификация – это то, кем вы являетесь, авторизация –это то, к чему вы можете получить доступ.
Преимущества входа в домен по токену
PIN-код от токена проще запомнить, так как он может быть намного проще пароля. Каждый наверняка хоть раз в жизни видел, как «опытный» пользователь мучительно не может с нескольких попыток аутентифицироваться в системе, вспоминая и вводя свой «безопасный» пароль.
PIN-код не обязательно постоянно менять, так как токены более устойчивы к перебору PIN-кодов. После некоторого числа неудачных попыток ввода, токен блокируется.
При использовании токена для пользователя вход в систему выглядит следующим образом: после загрузки компьютера, он просто подключает токен к USB-порту компьютера, вводит 4-6 цифр и нажимает кнопку Enter. Скорость ввода цифр у обычных людей выше, чем скорость ввода букв. Поэтому PIN-код вводится быстрее.
Токены позволяют решить проблему «брошенного рабочего места» — когда пользователь уходит со своего рабочего места и забывает выйти из своей учетной записи.
Политика домена может быть настроена таким образом, чтобы компьютер автоматически блокировался при извлечении токена. Также токен может быть оснащен RFID-меткой для прохода между помещениями компании, поэтому не забрав токен со своего рабочего места, сотрудник просто не сможет перемещаться по территории.
Проблема входа в систему
То, что происходит после того, как OAuth 2.0 установил способ доступа к сторонним API, заключается в том, что приложение также требуется регистрировать пользователей у себя. Используя наш пример: HireMe123 нужно, чтобы пользователь MyCalApp мог залогиниться, используя свою учетную запись MyCalApp, даже несмотря на то, что он не был зарегистрирован в HireMe123.
Но, как мы упоминали выше, OAuth 2.0 предназначен только для делегированного доступа. Это не протокол аутентификации. Но это не помешало людям попытаться использовать его и для аутентификации, и это представляет проблему.
Проблемы с использованием токенов доступа для аутентификации
Если HireMe123 предполагает успешный вызов API MyCalApp с токеном доступа, достаточным что бы пользователь считался аутентифицированным, у нас возникают проблемы, поскольку у нас нет способа проверить, был ли выдан токен доступа правильному пользователю.
Например:
- Кто-то мог украсть токен доступа у другого пользователя
- Маркер доступа мог быть получен от другого клиента (не HireMe123) и введен в HireMe123
Это называется запутанной проблемой делегирования. HireMe123 не знает, откуда взялся этот токен и кому он был выдан. Если мы помним: аутентификация — это проверка того, что пользователь — это тот, кем он себя заявляет. HireMe123 не может знать это из-за того, что он может использовать этот токен доступа для доступа к API.
Как уже упоминалось, это не остановило людей от неправильного использования токенов доступа и OAuth 2.0 для аутентификации. Быстро стало очевидно, что формализация аутентификации поверх OAuth 2.0 была необходима, чтобы разрешить входы в приложения сторонних разработчиков, сохраняя безопасность приложений и их пользователей.
Однофакторная двухэтапная аутентификация
Аутентификация происходит следующим образом:
- Пользователь вводит логин и пароль, указанные при регистрации. Если данная пара корректна (логин есть в базе и соответствует паролю) система высылает одноразовый пароль, имеющий ограниченное время действия.
- Пользователь вводит одноразовый пароль и, если он совпадает с тем, что отправила система, то пользователь получает доступ к своей учетной записи, денежным средствам или подтверждает денежный перевод.
Даже если злоумышленник получит логин и пароль для учетной записи (с помощью вредоносной программы, кражи записной книжки с паролями или методами социальной инженерии и фишинга), то после ввода этих данных система отправит на привязанный мобильный телефон пользователя одноразовый код с ограниченным временем действия. Без одноразового кода мошенник не сможет похитить денежные средства.
Обзор Digest Аутентификации
- Клиент шлёт GET на сервер.
-
Сервер шлёт обратно HTTP 401 Unauthorized с набором (дайджестом) опций.
WWW-Authenticate: Digest realm=»AndreiR»,
qop=»auth,auth-int»,
nonce=»abcdefg…»,
opaque=»abcd…», - Пользователь вводит свои учётные данные
-
Генерируется Authorization Header:
HA1 = MD5 хэш из имени пользователя, пароля и строки realm.
HA2 = MD5 хэш из метода аутентификации и запрошенного URI
Response = MD5 хэш из HA1, HA2, nonce, nonce-count, cnonce и qop
Клиент отправляет новый запрос на основе сгенерированных данных
GET /
Authorization: Digest username=»andrei», realm=»AndreiR», uri=»/»
qop=auth, nc=00000001,response=»12345abc…»
nonce=»abcdefg…»,
opaque=»abcd…», - Сервер проверяет пришедшие данные. Если всё верно возвращает HTTP 200 OK, если неверно HTTP 403 Forbidden
Некоторые опции необязательны, поэтому гарантировать определённый уровень безопасности нельзя.
HTTP Digest Аутентификация уязвима для
так как сервер не может проверить идентичность клиента.
Невозможно использовать более сложные алгоритмы хэширования паролей, такие как
Идентификация, аутентификация и авторизация
Идентификация
Это установленная и поддерживаемая схема, посредством которой пользователи надлежащим образом, последовательно, эффективно и действенно идентифицируются до того, как будет осуществлен доступ к системам. Служба проверки личности часто используется, чтобы гарантировать, что пользователи или клиенты предоставляют информацию, которая связана с идентичностью реального человека.
Аутентификация
Аутентификация — это проверка личности объекта, запрашивающего доступ к системе. Это процесс определения того, действительно ли кто-то или что-то является тем, кем или чем оно объявлено. В частных и общедоступных компьютерных сетях (включая Интернет) аутентификация обычно выполняется с использованием паролей для входа в систему. Предполагается, что знание пароля гарантирует подлинность пользователя. Каждый пользователь сначала регистрируется (или регистрируется кем-то другим), используя назначенный или самопровозглашенный пароль. При каждом последующем использовании пользователь должен знать и использовать ранее объявленный пароль. Слабым местом этой системы для значительных транзакций (таких как обмен денег) является то, что пароли часто могут быть украдены, случайно раскрыты или забыты.
По этой причине Интернет-бизнес и многие другие транзакции требуют более строгого процесса аутентификации. Считается, что использование цифровых сертификатов, выпущенных и проверенных центром сертификации (CA) как часть инфраструктуры открытых ключей, станет стандартным способом аутентификации в Интернете. Логически аутентификация предшествует авторизации (хотя часто может показаться, что они объединены).
Авторизация
Авторизация — это процесс предоставления кому-либо разрешения делать или иметь что-то. В многопользовательских компьютерных системах системный администратор определяет для системы, каким пользователям разрешен доступ к системе и какие привилегии использования (например, доступ к каким файловым каталогам, часы доступа, объем выделенного дискового пространства и т. Д.) . Предполагая, что кто-то вошел в компьютерную операционную систему или приложение, система или приложение может захотеть определить, какие ресурсы пользователю могут быть предоставлены во время этого сеанса. Таким образом, авторизация иногда рассматривается как предварительная установка разрешений системным администратором и фактическая проверка значений разрешений, которые были установлены, когда пользователь получает доступ. Логически авторизации предшествует аутентификация. ).
Принцип работы
Процедура аутентификации начинается, когда пользователь конкретного ресурса, например, электронной почты, вводит в соответствующих полях свой логин, а также пароль и нажимает кнопку «Enter». Моментально система проверяет в базе данных конкретного юзера и сопоставляет указанный им пароль с тем, который используется по умолчанию.
Если данные совпадают, то система без препятствий пропускает этого пользователя. Практика показывает, что большинство ресурсов используют именно такое средство идентификации, хотя в некоторых случаях могут быть запрошены и другие данные, например, введение кода верификации, сканирование отпечатка пальца или же подтверждение IP адреса.
…
…
Процедура аутентификации гарантирует факт того, что человек действительно является тем, за кого себя выдаёт. Однако для того, чтобы предоставить ему возможность работать с информацией, которая присутствует в его учётной записи, одной проверки недостаточно.
Стоит отметить, что в процессе авторизации происходит проверка наличия прав у юзера на те или иные манипуляции с конкретной информацией, предотвращая тем самым её утечку и неправомерное использование. При этом, происходит данная процедура только после того, как человек прошёл аутентификацию, однако, повторяется за одну сессию неоднократно.
Процедура производится столько раз, сколько пользователь будет работать с теми или иными инструментами учётной записи либо же изменять информацию. Таким образом система будет каждый раз проверять возможность юзера совершать конкретные действия.
Образцы разделов авторизации
Ниже приведены несколько примеров разделов авторизации в документации API.
SendGrid
API ключ SendGrid
SendGrid предлагает подробное объяснение ключей API, начиная с основ, поясняя: «Что такое ключи API?». Контекстно раздел ключей API появляется вместе с другими разделами по управлению учетными записями.
авторизация Twitter
В Twitter подробный пример оправдан и предоставлен, поскольку требования к авторизации OAuth 2.0 немного сложнее.
Amazon Web Services
авторизация Amazon
Amazon использует HMAC. Процесс достаточно сложный, чтобы включить полноценную диаграмму, показать шаги, которые должны выполнить пользователи.
Dropbox
Авторизация в Dropbox
Как и Twitter, Dropbox также использует OAuth 2.0. Их документация включает в себя не одну, а две диаграммы и подробное объяснение процесса.