img

Аутентификация VS авторизация – в чем разница?

21 ноября
20:00
Бесплатный вебинар
Введение в Docker
Ведущий — Филипп Игнатенко.
Руководитель центра разработки
Записаться
img
img

В начале пути веб-разработки вы, скорее всего, часто будете слышать такие понятия, как аутентификация (authentication) и авторизация (authorization). И здесь не сильно помогает тот факт, что они оба обычно сокращаются до «auth», и их легко перепутать. 

Из этой статьи вы узнаете:

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

Итак, давайте начнем!

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

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

Методы аутентификации

Однофакторная аутентификация

Такой метод аутентификация обычно используется в системах с низким уровнем риска. Для этого метода требуется всего один фактор; чаще всего это пароль. Именно поэтому системы с однофакторной аутентификацией наиболее уязвимы для фишинговых атак и клавиатурных шпионов. 

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

Двухфакторная аутентификация

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

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

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

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

Многофакторная аутентификация

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

  • то, что вы знаете (имя пользователя + пароль или имя пользователя + пароль + контрольный вопрос и ответ)
  • то, что у вас есть (SMS, отправленное на ваш телефон, приложение-аутентификатор, USB-ключ)
  • то, чем вы являетесь (отпечаток пальца, распознавание лица)

Именно поэтому многофакторная аутентификация обеспечивает наибольшую защиту, поскольку для получения доступа необходимо предоставить несколько факторов, а их не так просто «взломать» или воспроизвести. 

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

Итак, а сколько информации необходимо для аутентификации?

Этот вопрос часто поднимается на многих совещаниях по архитектуре безопасности. И ответ на него следующий: «это зависит от…». 

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

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

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

Auth_Process-1

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

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

Как работает аутентификация в реальной жизни?

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

Иллюстрация процесса аутентификации

После чего эти данные отправляются на сервер, и начинается процесс аутентификации. Данные, которые вы предоставили, проверяются в базе данных сервера, и в случае, если они совпадают с данными в записи, вы проходите процесс аутентификации. Затем вам предоставляется форма данных, подтверждающих личность, например, cookie-файл или веб-токен JSON (JWT – JSON Web Token). 

Отлично! Вы получили доступ к сайту и вошли в учетную запись. 

Теперь рассмотрим процесс авторизации.

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

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

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

Давайте рассмотрим на примере:

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

Если мы попробуем получить доступ к чьему-либо профилю, с которым мы не «дружим» (владелец профиля не принял запрос на «дружбу»), то мы не сможем просмотреть его – у нас не будет на это права. Это значит, что нам отказано в доступе к публикациям, которые сделал владельц этого профиля. 

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

Как реализовать авторизацию

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

Например, на платформе .NET вы можете использовать ролевое управление доступом или управление доступом на основе утверждений. 

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

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

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

Например, если пользователю предоставили роль администратора (Admin), то это значит, что у него есть право доступа пользователя на комплексное создание (Advanced Create), редактирование (Edit), удаление (Delete) и просмотр (View). В то время как вы можете предоставить им право только на просмотр (View) и первичное создание (Basic Create). 

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

Например, пользователю может быть передано утверждение CreateUser; оно проверяется при создании пользователя. Или вы можете присвоить тому же утверждению значение Advanced, а затем получить доступ к различным действиям и пользовательскому интерфейсу в зависимости от того, присвоили вы значение Advanced или Basic.

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

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

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

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

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

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

Почему следует реализовать как аутентификацию, так и авторизацию?

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

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

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

Заключение

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

И запомните:

  • Аутентификация = проверяет личность пользователя или процесса
  • Авторизация = определяет, есть ли у пользователя/системы права доступа на использование какого-либо ресурса или выполнения какого-либо действия. 
Ссылка
скопирована
Получите бесплатные уроки на наших курсах
Все курсы
Программирование
Скидка 25%
Python-программист с нуля
Стань разработчиком на одном из самых популярных языков программирования.
Получи бесплатный
вводный урок!
Пожалуйста, укажите корректный e-mail
отправили вводный урок на твой e-mail!
Получи все материалы в telegram и ускорь обучение!
img
Еще по теме:
img
Гипервизор - это программное обеспечение для виртуализации, используемое для создания и запуска виртуальных машин (ВМ). Гипервиз
img
Виртуализация серверов позволяет запускать несколько виртуальных машин на одном физическом сервере. Запуск виртуальных машин (ВМ
img
Сегодня мы рассмотрим, как настроить и использовать PHP в проекте. Но прежде чем начать, нужно понять, что такое PHP. Что такое
img
Как разработчик, вы знаете, что HTML расшифровывается как HyperText Markup Language (язык разметки гипертекста). HTML — это язык
img
Бесконечные споры вокруг искусственного интеллекта приводят к путанице. Существует много терминов, которые кажутся похожими, но
img
SVG расшифровывается как масштабируемая векторная графика. Это веб-дружелюбный векторный формат файлов, используемый для отображ
21 ноября
20:00
Бесплатный вебинар
Введение в Docker