Перейти к основному содержимому

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

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

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

Основные понятия

Идентификация

Идентификация — это процесс установления личности пользователя, то есть получение его идентификатора, такого как логин, email, номер телефона и т.д. Идентификация является первым шагом аутентификации, так как без нее система не знает, с кем имеет дело.

Аутентификация

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

Авторизация

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

Пример: когда Вася хочет войти в конфлюэнс и вводит свою почту, система понимает, что аккаунт с таким email существует. Это идентификация. Затем система отправляет на Васин номер СМС с одноразовым паролем, а Вася вводит пароль и тем самым доказывает, что это именно он. Это аутентификация. Система понимает, что Вася настоящий и перенаправляет его на главную страницу – это авторизация, ведь Вася авторизован (то есть имеет право) на чтение главной страницы, как и любой другой сотрудник.

Способы аутентификации

OAuth 2.0

OAuth 2.0 — это протокол авторизации, предназначенный для организации доступа клиента к ресурсам или данным на другом сервисе. После выполнения процедуры входа клиент получает от сервера access_token, который позволяет клиентскому приложению получать доступ к ресурсу для выполнения определенных действий от имени пользователя и refresh_token – необходимый для обновления access_token. refresh_token обычно имеет длительный срок действия (исчисляется в месяцах) и обменивается на новый по истечению срока действия.

JWT (JSON Web Token)

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

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

API-ключи

API-ключи – это ключи шифрования для аутентификации пользователя в системе, по аналогии логина и пароля. Ключ обычно передается в заголовке или параметре запроса.

Существует два вида ключей API:

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

mTLS (mutual TLS)

mTLS (mutual TLS) — это расширение протокола TLS, которое позволяет обеим сторонам взаимодействия (клиенту и серверу) аутентифицировать друг друга с помощью цифровых сертификатов. Это повышает уровень безопасности и доверия между сторонами, так как исключает возможность подмены или перехвата данных. mTLS часто используется для аутентификации между микросервисами или API.

Есть две пары сертификатов и два закрытых ключа:

  1. Первый закрытый ключ находится на сервере и позволяет расшифровывать данные, которые шифруются открытым ключом, как при обычной работе TLS.
  2. Второй закрытый ключ устанавливается на клиенте, а сервер при ответах клиенту также шифрует данные его открытым ключом. Таким образом, к серверу могут обращаться только те клиенты, у которых есть закрытый ключ для расшифровки данных.

Подборка материалов про аутентификацию и авторизацию

Ссылки на официальные сайты

  1. RFC 7519 — JSON Web Token (JWT)
  2. OAuth 2.0
  3. OpenID Connect

Про аутентификацию и авторизацию

  1. Брайан Кукси. Про аутентификацию и OAuth 2.0
  2. Аутентификация в веб-API: пример и ликбез по Postman - Анна Вичугова
  3. Обзор способов аутентификации
  4. Keycloak: зачем нужен, кому подходит и какие преимущества даёт
  5. Требования аутентификации и авторизации API — из открытого курса по документированию API
  6. Обзор подходов к реализации аутентификации и авторизации в микросервисных системах
  7. Все еще работаете с access token на клиенте? Тогда мы идем к вам

Про OAuth

  1. OAuth 2.0 простым и понятным языком
  2. Как работает OAuth 2.0 и OpenID Connect
  3. Тонкости авторизации: обзор технологии OAuth 2.0
  4. Иллюстрированное руководство по OAuth и OpenID Connect
  5. OAuth в мобильных приложениях
  6. Эволюция облачной системы авторизации
  7. Как устроена аутентификация в Steam

Про OpenID Connect

  1. OpenID Connect простыми словами
  2. Вкратце об OpenID Connect
  3. Как получить токен в OpenID Connect

Про JWT

  1. Пять простых шагов для понимания JSON Web Tokens (JWT)
  2. Что такое JWT, какие есть преимущества и недостатки аутентификации с помощью JWT
  3. JWT-авторизация на сервере — с примерами на Go

Статьи практика

  1. Тернистый путь внедрения аутентификации через соцсети — МТС
  2. Почему работать с OAuth сложно даже сегодня?
  3. Аутентификация и авторизация в проекте с микросервисной архитектурой: стратегии, практический пример
  4. Когда контекст доступа важен: авторизация в микросервисной платформе на GraphQL
  5. Как мы делаем JWT-аутентификацию — Doubletapp
  6. Особенности самообслуживаемой аутентификации Apache Kafka на примере Booking.com
  7. Опыт 2Gis
  8. UX/UI при авторизации: 130 примеров

Видео

  1. Авторизация и аутентификация в микросервисной архитектуре
  2. Аутентификация OAuth2 и токены JWT
  3. Плейлист — OpenAPI и Swagger за 1 час
  4. Что такое OAuth 2.0 и OpenID Connect за 15 минут
  5. Аутентификация в Веб-Приложениях 👨‍💻JWT и Сессии
  6. Аутентификация и авторизация в проекте с микросервисной архитектурой: стратегии, практический пример
  7. Как работает OAuth 2.0 (понятным языком)
  8. OpenID Connect. Теория
  9. OAuth2 и OpenID Connect простым языком
  10. Александр Семёнов "Аутентификация OAuth / OpenID Connect в Enterprise
  11. Разбираем OAuth2 и OpenID Connect на пальцах

Интересное

Стандарт ЦБ РФ по авторизации и аутентификации — словарик, примеры диаграмм, json-объектов, процессов