Может ли быть авторизация без аутентификации

«Может ли быть авторизация без аутентификации» — вопрос из категории Безопасность, который задают на 23% собеседований Golang Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Нет, авторизация без аутентификации невозможна.

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

Сначала система должна убедиться, кто пользователь (аутентификация), а затем определить, что ему разрешено (авторизация).

Пример в Go:

func someHandler(w http.ResponseWriter, r *http.Request) {
    user := authenticateUser(r) // сначала аутентификация
    if user == nil {
        w.WriteHeader(http.StatusUnauthorized)
        return
    }

    if !user.IsAdmin { // потом авторизация
        w.WriteHeader(http.StatusForbidden)
        return
    }
    // доступ разрешен
}