Что такое аутентификация (Authentication) и какова её роль?

«Что такое аутентификация (Authentication) и какова её роль?» — вопрос из категории Тестирование безопасности, который задают на 10% собеседований QA Тестировщик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Аутентификация (Authentication) — это процесс проверки подлинности субъекта (пользователя, системы или устройства), подтверждающий, что он является тем, за кого себя выдаёт. Её роль — защитить систему, предоставив доступ только легитимным пользователям.

Основные методы:

  1. По знаниям: Пароль, PIN-код.
  2. По владению: Ключ-токен, SMS-код, сертификат.
  3. По свойству: Отпечаток пальца, распознавание лица (биометрия).

Пример простой аутентификации на Python/Flask:

from flask import Flask, request, jsonify

app = Flask(__name__)
users_db = {"alice": "hashed_password_123"}  # На практике пароли хэшируются

@app.route('/login', methods=['POST'])
def login():
    data = request.get_json()
    username = data.get('username')
    password_input = data.get('password')

    # Проверка подлинности
    stored_password = users_db.get(username)
    if stored_password and verify_password(stored_password, password_input):
        return jsonify({"status": "authenticated", "token": "<JWT>"}), 200
    return jsonify({"error": "Invalid credentials"}), 401  # 401 Unauthorized

Важно отличать от авторизации (Authorization):

  • Authentication: «Кто ты?» — проверка идентичности.
  • Authorization: «Что тебе разрешено?» — проверка прав доступа к ресурсам.

Современные практики: Использование стандартов (OAuth 2.0, OpenID Connect), многофакторная аутентификация (MFA) и бессерверные токены (JWT).