Как происходит клиент серверное взаимодействие с JWT
Python
Senior
Без компании
Как происходит клиент серверное взаимодействие с JWT
Ответы
Клиент-серверное взаимодействие с JWT (JSON Web Token) происходит следующим образом:
- **Аутентификация**: Клиент отправляет логин/пароль на сервер. Сервер проверяет их и генерирует JWT, подписывая его секретным ключом.
- **Передача токена**: Сервер возвращает JWT клиенту (обычно в теле ответа или в заголовке).
- **Последующие запросы**: Клиент включает JWT в заголовок `Authorization: Bearer <token>` при каждом запросе.
- **Верификация**: Сервер проверяет подпись токена, его срок действия и другие claims перед обработкой запроса.
Пример кода (Flask):
```
from flask import Flask, request, jsonify
import jwt
import datetime
app = Flask(__name__)
SECRET_KEY = "your_secret_key"
@app.route('/login', methods=['POST'])
def login():
# Проверка учетных данных
token = jwt.encode({
'user': 'username',
'exp': datetime.datetime.utcnow() + datetime.timedelta(minutes=30)
}, SECRET_KEY)
return jsonify({'token': token})
@app.route('/protected', methods=['GET'])
def protected():
token = request.headers.get('Authorization').split()[1]
try:
data = jwt.decode(token, SECRET_KEY, algorithms=["HS256"])
return jsonify({'message': 'Доступ разрешен'})
except:
return jsonify({'message': 'Неверный токен'}), 401
```
JWT состоит из 3 частей (Header.Payload.Signature), закодированных в Base64. Основные преимущества: stateless, поддержка разных платформ, возможность передачи дополнительных данных в payload.