Ответ
Авторизация определяет, какие права есть у уже аутентифицированного пользователя или системы. Чаще всего она реализуется через заголовок Authorization в HTTP-запросе.
Пример с использованием JWT (JSON Web Token) в Python:
import requests
# 1. Получение токена (аутентификация)
auth_url = "https://api.example.com/login"
credentials = {"username": "user", "password": "pass"}
auth_response = requests.post(auth_url, json=credentials)
access_token = auth_response.json().get("access_token") # JWT токен
# 2. Использование токена для авторизации доступа к защищенному ресурсу
protected_url = "https://api.example.com/api/orders"
headers = {
"Authorization": f"Bearer {access_token}" # Ключевой заголовок
}
response = requests.get(protected_url, headers=headers)
print(response.json())
Распространённые схемы заголовка Authorization:
- Bearer Token (OAuth 2.0, JWT):
Authorization: Bearer <token> - Basic Auth:
Authorization: Basic <base64(username:password)> - API Key:
Authorization: ApiKey <key>илиX-API-Key: <key> - Digest Auth:
Authorization: Digest <credentials>
Важно: Авторизация (Authorization) следует после аутентификации (Authentication), которая подтверждает личность.
Ответ 18+ 🔞
А, ну вот, классика жанра, блядь! Сейчас объясню, как эта магия работает, чтобы ты не путался, как мартышка в апельсинах.
Представь себе, ты уже пролез в клуб, типа аутентифицировался — паспорт показал, лицо твоё ебаное опознали. Всё, ты внутри. Так вот, авторизация — это когда охранник смотрит, на какой этаж тебе можно пройти. На общий танцпол? Пожалуйста. А в VIP-зону, где шампанское рекой? А вот тут, дружок, посмотрим на твою бейджик-браслетик. Нету? Иди нахуй отсюда.
В цифровом мире эта проверка браслетика чаще всего лепится в заголовок Authorization HTTP-запроса. Сервер его читает и решает: «Ага, этому челу можно смотреть заказы, а вот удалять базу данных — не, не, не, иди нахуй».
Смотри, как это выглядит на практике, например, с этим модным JWT-токеном, который все как сумасшедшие используют:
import requests
# 1. Сначала добываем пропуск (аутентификация). Лезем в систему.
auth_url = "https://api.example.com/login"
credentials = {"username": "user", "password": "pass"}
auth_response = requests.post(auth_url, json=credentials)
# Вытягиваем из ответа тот самый волшебный жетон.
access_token = auth_response.json().get("access_token") # JWT токен
# 2. А теперь используем жетон, чтобы пройти дальше (авторизация).
protected_url = "https://api.example.com/api/orders"
headers = {
# ВОТ ОН, КЛЮЧЕВОЙ МОМЕНТ! Суём токен в заголовок, как отмычку.
"Authorization": f"Bearer {access_token}"
}
# Шлём запрос уже с нашей «корочкой».
response = requests.get(protected_url, headers=headers)
print(response.json())
Видишь? Сначала получил access_token (аутентификация), а потом каждый раз, когда хочешь что-то сделать, тыкаешь его в заголовок Authorization: Bearer <token> (авторизация). Сервер смотрит на этот токен и думает: «О, это Вася Пупкин, ему можно в /api/orders, пусть проходит».
А схем, как этот заголовок формировать, — овердохуища. Вот самые распиздяйские:
- Bearer Token (OAuth 2.0, JWT):
Authorization: Bearer <ваш_длинный_токен_тут>. Самый популярный нынче. - Basic Auth:
Authorization: Basic <base64(username:password)>. Древний, как говно мамонта, но иногда всплывает. По сути, логин-парль в закодированном виде тупо в каждом запросе таскаешь. - API Key: Часто делают как
Authorization: ApiKey <key>или вообще отдельным заголовкомX-API-Key: <key>. Просто по ключу тебя опознают. - Digest Auth:
Authorization: Digest <credentials>. Более мозговой вариант, чем Basic, но тоже уже староват.
И запомни раз и нахуй, чтобы не позориться: аутентификация — это «ты кто?» (логин-пароль, лицо, отпечаток), а авторизация — это «а что тебе можно?» (права, роли, доступ к апишкам). Сначала доказываешь, что ты — это ты, а потом получаешь бумажку, где написано, куда тебе можно. Всё просто, ёпта!