JSON Web Token (JWT) – це відкритий стандарт для безпечної передачі інформації між сторонами у вигляді об'єкта JSON. Він часто використовується для автентифікації користувачів та безпечної передачі інформації між клієнтом та сервером.
Коли користувач входить в систему, сервер створює JWT, який складається з трьох частин: заголовка, корисного навантаження та підпису.
Заголовок зазвичай складається з типу токена та криптографічного алгоритму, що використовується для його захисту. Заголовок кодується у формат Base64Url.
Корисне навантаження містить заяви, які є твердженнями про користувача та додатковою інформацією. Заяви можуть включати інформацію, таку як ідентифікатор користувача, ім'я користувача, роль та будь-які інші відповідні дані. Корисне навантаження також кодується у формат Base64Url.
Підпис створюється шляхом кодування заголовка, корисного навантаження та секретного ключа за допомогою алгоритму, зазначеного в заголовку. Це забезпечує цілісність токена та дозволяє серверу перевіряти його справжність. Підпис додається до закодованих заголовка та корисного навантаження, утворюючи повний JWT.
Після створення JWT він відправляється клієнту, який зберігає його і надсилає разом із наступними запитами. Клієнт зазвичай включає JWT у заголовок Authorization
запиту HTTP як Bearer токен.
Після отримання JWT сервер перевіряє його підпис за допомогою секретного ключа. Якщо підпис є дійсним, сервер може декодувати інформацію в заголовку та корисному навантаженні для здійснення автентифікації користувача. Сервер може довіряти інформації в JWT без необхідності запитувати базу даних або виконувати додаткові перевірки аутентифікації. Це робить JWT ефективним і масштабованим механізмом аутентифікації.
Аутентифікація на основі токенів – це метод аутентифікації, при якому для доступу до ресурсів використовується токен доступу замість імені користувача та пароля. Токен зазвичай видається сервером аутентифікації та передається разом із кожним запитом як доказ автентифікації. Аутентифікація на основі токенів пропонує кілька переваг перед традиційною аутентифікацією за допомогою імені користувача та пароля:
OAuth 2.0 – це відкритий стандарт і рамковий протокол авторизації, що дозволяє сторонньому додатку отримати обмежений доступ до ресурсів користувача. Його часто використовують для дозволу користувачам надавати стороннім додаткам дозвіл на доступ до своїх даних на інших платформах. OAuth 2.0 використовує JSON Web Tokens (JWT) для автентифікації та авторизації.
OAuth 2.0 включає кілька сторін, таких як власник ресурсу (користувач, який володіє ресурсами), клієнт (сторонній додаток), сервер авторизації (відповідальний за видачу токенів доступу) та сервер ресурсів (зберігає захищені ресурси).
Під час потоку OAuth 2.0 клієнт отримує дозвільний грант від власника ресурсу. Потім клієнт обмінює цей грант на сервері авторизації на токен доступу. Токен доступу – це JWT, який містить необхідну інформацію для доступу до захищених ресурсів на сервері ресурсів. Цей токен потім використовується клієнтом для доступу до ресурсів користувача.
Завдяки використанню OAuth 2.0 та JWT додатки можуть забезпечити безпечний і контрольований доступ до даних користувача на широкому діапазоні платформ.