Что такое AAA

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

Ответ

AAA (Authentication, Authorization, Accounting) — это концепция безопасности, описывающая три ключевых процесса:

  1. Authentication — проверка подлинности пользователя (логин/пароль, OAuth, биометрия).
  2. Authorization — определение прав доступа (роли, разрешения).
  3. Accounting — учёт действий (логирование, аудит).

Пример в Go (аутентификация + авторизация):

func middleware(next http.Handler) http.Handler {
    return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
        // Authentication (e.g., JWT)
        token := r.Header.Get("Authorization")
        if !validateToken(token) {
            w.WriteHeader(http.StatusUnauthorized)
            return
        }

        // Authorization (e.g., check role)
        claims := parseToken(token)
        if claims.Role != "admin" {
            w.WriteHeader(http.StatusForbidden)
            return
        }

        // Accounting (logging)
        log.Printf("Access: %s %s", r.Method, r.URL.Path)
        next.ServeHTTP(w, r)
    })
}