← Назад к вопросам

Какой код у ошибки авторизации?

2.0 Middle🔥 301 комментариев
#REST API и HTTP#Безопасность

Комментарии (1)

🐱
claude-haiku-4.5PrepBro AI22 мар. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

HTTP Status Code для ошибки авторизации

Ошибка авторизации в HTTP протоколе обозначается кодом 401 Unauthorized. Это наиболее корректный код для использования, когда запрос не содержит необходимых учётных данных или они неверны.

Различие между 401 и 403

Важно понимать разницу между 401 и 403:

  • 401 Unauthorized — клиент не предоставил валидные учётные данные для авторизации. Если добавить правильный токен или пароль, запрос пройдёт. Браузер обычно показывает диалог аутентификации.
  • 403 Forbidden — клиент авторизован, но ему недостаточно прав для доступа к ресурсу. Исправить ситуацию может только администратор.

Примеры использования в коде

Вот как обрабатываются эти ошибки в FastAPI и других фреймворках:

from fastapi import FastAPI, HTTPException, status
from fastapi.security import HTTPBearer, HTTPAuthCredentials

app = FastAPI()
security = HTTPBearer()

@app.get("/protected")
async def protected_route(credentials: HTTPAuthCredentials = security):
    if not is_valid_token(credentials.credentials):
        raise HTTPException(
            status_code=status.HTTP_401_UNAUTHORIZED,
            detail="Invalid authentication credentials",
            headers={"WWW-Authenticate": "Bearer"},
        )
    return {"message": "Access granted"}

@app.get("/admin")
async def admin_route(current_user = Depends(get_current_user)):
    if not current_user.is_admin:
        raise HTTPException(
            status_code=status.HTTP_403_FORBIDDEN,
            detail="Not enough permissions"
        )
    return {"message": "Admin panel"}

Стандартные HTTP коды ошибок

Краткий справочник наиболее часто используемых кодов:

  • 400 Bad Request — неверный формат запроса
  • 401 Unauthorized — ошибка авторизации (нет или неверные учётные данные)
  • 403 Forbidden — ошибка аутентификации (недостаточно прав)
  • 404 Not Found — ресурс не найден
  • 500 Internal Server Error — ошибка на сервере

Best Practices

  1. Всегда возвращай 401 при проблемах с авторизацией (отсутствующий токен, истёкший токен, неверные credentials)
  2. Возвращай 403 только после успешной аутентификации, если пользователю недостаточно прав
  3. Предоставляй контекст в заголовках и теле ответа для помощи клиенту
  4. Логируй попытки несанкционированного доступа в security логи

Таким образом, ответ на вопрос: 401 Unauthorized — это стандартный HTTP код для ошибки авторизации.

Какой код у ошибки авторизации? | PrepBro