Я щойно прочитав цю статтю, якій вже кілька років, але описує розумний спосіб забезпечення ваших REST API. По суті:
- У кожного клієнта є унікальна пара відкритих та приватних ключів
- Тільки клієнт і сервер знають приватний ключ; він ніколи не надсилається по дроту
- З кожним запитом клієнт приймає кілька входів (сам запит, поточна мітка часу та приватний ключ) і запускає їх через функцію HMAC для створення хешу запиту
- Потім клієнт відправляє звичайний запит (який містить відкритий ключ) та хеш на сервер
- Сервер шукає приватний ключ клієнта (на основі наданого відкритого ключа) і перевіряє часові позначки (що, правда, я не розумію), що підтверджує, що запит не є жертвою повторної атаки
- Якщо все добре, сервер використовує приватний ключ і ту саму функцію HMAC, щоб генерувати власний хеш запиту
- Потім сервер порівнює обидва хеші (той, який надіслав клієнт, а також той, який він створив); якщо вони відповідають, запит перевіряється автентичністю та дозволяється продовжувати
Потім я натрапив на JWT , який звучить дуже схоже. Однак перша стаття взагалі не згадує JWT, і тому мені цікаво, чи JWT відрізняється від вищезазначеного рішення про авторство, і якщо так, то як.