Какой HTTP статус-код указывает на ошибку авторизации?

Ответ

Ошибка авторизации обычно возвращает HTTP статус-код 401 Unauthorized. Это означает, что запрос не был выполнен из-за отсутствия или недействительности учетных данных (аутентификации).

Пример обработки в Python (Flask):

from flask import Flask, jsonify, abort

app = Flask(__name__)

@app.route('/protected')
def protected():
    # Имитация проверки авторизации
    # Если пользователь не аутентифицирован, возвращаем 401
    abort(401, description="Требуется аутентификация")

if __name__ == '__main__':
    app.run()

В контексте REST API также часто используется 403 Forbidden. Этот код означает, что клиент аутентифицирован, но не имеет достаточных прав для доступа к запрошенному ресурсу (авторизация).

Пример ответа в FastAPI:

from fastapi import FastAPI, HTTPException

app = FastAPI()

@app.get("/admin")
async def admin_panel():
    # Имитация проверки прав доступа
    # Если пользователь аутентифицирован, но не имеет роли администратора
    raise HTTPException(status_code=403, detail="Доступ запрещен: недостаточно прав")

Ключевое различие:

  • 401 Unauthorized: Пользователь не аутентифицирован (кто вы?).
  • 403 Forbidden: Пользователь аутентифицирован, но не авторизован для данного действия (у вас нет разрешения на это?).