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

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

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

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

Кроме того, система должна управлять правами доступа пользователей. Авторизация — это процесс проверки, имеет ли пользователь право выполнять определённые действия в системе. Например, редактирование объекта может быть доступно только его владельцу, а управление пользователями — только администраторам. Авторизация реализуется в рамках бизнес-логики приложения и может быть основана на различных моделях, таких как RBAC (управление доступом на основе ролей), ReBAC (управление доступом на основе отношений) или ABAC (управление доступом на основе атрибутов). Выбор подходящей модели зависит от конкретных требований системы.

Архитектурные аспекты:

Идентификация: используется для нужд бизнес-логики и логирования. Реализация может быть выполнена с помощью адаптеров.

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

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

🔗 Дополнительные источники:

Если вам понравилась статья - подписывайтесь на мой Telegram канал там быстрее выходят новые посты в сфере разработки.

Начать дискуссию