Ответ
AAA (Authentication, Authorization, Accounting) — это концепция безопасности, описывающая три ключевых процесса:
- Authentication — проверка подлинности пользователя (логин/пароль, OAuth, биометрия).
- Authorization — определение прав доступа (роли, разрешения).
- 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)
})
}