Аутентификация: 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)))
})
}