Часто используемые методы аутентификации

Часто используемые методы аутентификации

Часто используемые методы аутентификации

В наше время прикладные интерфейсы программ везде — их используют как сайты, так и приложения. Оно и понятно — хорошо написанное и протестированное API может использоваться как сайтом, одностраничным приложением так и приложениями для телефона и компьютера. Однако при управлении и обработке данных с помощью API возникает необходимость обеспечить следующие условия:
1) данные должны быть хорошо защищены;
2) должны быть неизменными;
3) с данными можно безопасно работать.

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

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

Давайте для начала разберем, что такое аутентификация и что к ней не относится, так как ее часто путают с другим термином — авторизацией.

Эти два термина часто бывают интегрированы в одно решение – поэтому их довольно легко перепутать друг с другом.

Так как же разграничить эти два термина? На самом деле все достаточно просто аутентификация — это подтверждение того, что вы тот, за кого себя выдаете. Это сродни паспорту, например.

Авторизация — это подтверждение прав на доступ к определенной ссылке или файлу, например.

Но часто встречаются такие системы, в которых совмещены и аутентификация и авторизация – и многие API представляют из себя именно такие системы, которые как аутентифицируют пользователя, так и подтверждает его права доступа (авторизуют).

Методы аутентификации прикладных интерфейсов

Базовая аутентификация

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

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

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

API-ключи

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

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

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

OAuth

ОAuth — это, пожалуй, самое мощное решение из представленных выше. В нем совмещены как возможности аутентификации так и возможности авторизации, т.е. это гибридное решение.

Согласно Википедии: OAuth — это открытый протокол (схема) авторизации, который позволяет предоставить третьей стороне ограниченный доступ к защищённым ресурсам пользователя без необходимости передавать ей (третьей стороне) логин и пароль.

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

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

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

Так что же выбрать?

Так какой же из этих методов является лучшим? На этот вопрос, на само деле, трудно ответить, так как ответ во многом зависит от конкретной ситуаций. Но вообще, если программа будет работать в рамках строго ограниченного контура, то базовой аутентификации будет достаточно. Если же Вам необходимо будет, например, поддерживать много пользовательских аккаунтов — то лучше использовать аутентификацию с использованием API-ключей. OAuth же пойдет в случае особых требований к функционалу аутентификации и авторизации.

Источник

НЕТ КОММЕНТАРИЕВ

Оставить комментарий