Безопасность API в Go. Аутентификация и авторизация.

Ответ

Аутентификация: JWT в заголовке Authorization, или API key, или OAuth2. Проверка в middleware; контекст с user ID/ролями. Авторизация: проверка прав на ресурс (владелец или роль). HTTPS обязательно; rate limiting от злоупотреблений. Не логировать токены и пароли. В Go: извлечь токен, проверить подпись и exp, положить claims в context. Для каждого эндпоинта проверять право доступа.

func authMiddleware(next http.Handler) http.Handler {
    return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
        token := extractBearer(r)
        claims, err := validateToken(token)
        if err != nil { http.Error(w, "Unauthorized", 401); return }
        next.ServeHTTP(w, r.WithContext(context.WithValue(r.Context(), "user", claims)))
    })
}
🧠Квиз 🏆Лидеры 🎯Собесед. 📖Вопросы 📚База зн.