Ответ
Идентификация — это первый шаг в процессе контроля доступа, когда субъект (пользователь, система, процесс) заявляет о себе, предъявляя уникальный идентификатор.
- Цель: Ответить на вопрос "Кто вы?".
- Идентификатор (Login): Уникальное имя, присвоенное субъекту в системе. Например:
- Логин (
john_doe) - Email (
user@company.com) - Уникальный номер (ID карты,
UID-12345) - Имя сервисного аккаунта (
svc-api-prod)
- Логин (
Важно: Сама по себе идентификация не подтверждает личность. Она лишь заявляет её. Подтверждение происходит на следующем этапе — аутентификации (проверка пароля, токена, отпечатка).
Пример в тестировании:
def test_identification_requires_unique_login():
"""
Тест: система должна корректно обрабатывать уникальный идентификатор.
"""
# Пользователь идентифицируется с логином "alice123"
claimed_identity = "alice123"
# Система ищет этот идентификатор в своём хранилище
stored_identities = ["alice123", "bob456"]
# Проверка: идентификатор должен существовать для последующей аутентификации
assert claimed_identity in stored_identities,
f"Идентификатор '{claimed_identity}' не найден в системе."
# Следующий шаг (за рамками идентификации) — аутентификация по паролю/токену.
Связь с другими понятиями (AAA-модель):
- Identification (Идентификация): "Я —
alice123". - Authentication (Аутентификация): "Докажи это" (пароль, OTP).
- Authorization (Авторизация): "Что тебе разрешено делать?" (роли, права).
Тестирование идентификации включает проверку уникальности идентификаторов, обработку несуществующих идентификаторов и устойчивость к инъекциям (SQL, NoSQL) на этапе ввода логина.
Ответ 18+ 🔞
Давай разжую эту сухую теорию про идентификацию, чтобы было понятно даже тому, кто путает логин с паролем.
Представь, что ты врываешься в отдел кадров и орешь: «Я — Пётр Иванович Сидоров!». Вот это, блядь, и есть идентификация. Ты просто заявил, кто ты есть, назвал своё уникальное имя в этой конторе. Никто тебе пока не верит, но имя ты своё озвучил.
- Суть вопроса: Ответ на «Кто ты, тварь?».
- Твой пропуск (Идентификатор): Это просто твоё клеймо в системе. Например:
- Логин (
vasya_pupkin_228) - Мыло (
pupkin@hren.dog) - Номер пропуска (
ID-666) - Имя какого-нибудь служебного бота (
bot-pochitalka)
- Логин (
Важный момент, ёпта: Назваться Петром Ивановичем — это одно. А вот доказать, что ты действительно он, а не какой-нибудь полупидор, который украл его голос — это уже следующий шаг, который называется аутентификация. Сначала назвался, потом доказывай.
Как это выглядит в коде, если бы его писал нормальный человек:
def test_kak_ya_zayavlyayu_o_sebe():
"""
Тест: Я пришёл и сказал, кто я есть. А система меня услышала.
"""
# Врываюсь в систему и заявляю: "Я — alice123, ёпта!"
my_declared_name = "alice123"
# Система лезет в свою толстую папку и смотрит: "А есть у нас такой мудак в списках?"
list_of_all_known_mudaks = ["alice123", "bob456"]
# Проверяем: если меня нет в списке, то я вообще левый человек, и дальше диалог бессмысленный.
assert my_declared_name in list_of_all_known_mudaks,
f"Чувак с именем '{my_declared_name}' нам не известен. Иди нахуй."
# Если я в списке есть — ок, первый шаг пройден. Дальше система скажет:
# "Ладно, alice123, а теперь докажи, что это ты — скажи пароль или сунь палец в сканер, пидорас".
Как это всё в голове уложить (простая схема AAA):
- Identification (Идентификация): «Я — Вася!». (Просто заявление).
- Authentication (Аутентификация): «На, проверь мой паспорт/отпечаток/секретное слово про мамину девичью фамилию». (Доказательство).
- Authorization (Авторизация): «О, Вася. Ну раз ты Вася, то тебе можно в серверную, а в бухгалтерию — низя». (Разрешения).
Когда тестируешь эту хуйню, смотри, чтобы система не принимала пустые имена, не ломалась, если в логин впихнуть кавычку или точку с запятой, и чтобы два Васи одновременно не могли существовать — иначе начнётся ебанатория, кому из них верить.