Skip to main content

Теория JWT-аутентификации

JWT (JSON Web Token) — это безопасный и удобный способ передачи данных между разными системами. JWT часто используется для аутентификации пользователей или передачи информации о правах доступа.

Это как пропуск на мероприятие. Когда вы заходите на концерт, вам дают билет с уникальным кодом, который подтверждает, что вы купили билет и имеете право зайти. JWT выполняет ту же роль, только для систем.

Создание токена

Когда вы или ваше приложение авторизуетесь, сервер создаёт токен (то есть «пропуск»), в котором хранится информация, например:

- Кто вы (имя пользователя или ID).
- Какие у вас права (например, "может записывать звонки").
- Когда истекает срок действия этого токена (чтобы нельзя было использовать его вечно).

Эта информация кодируется в виде строки (набора символов) и подписывается с помощью специального "секретного ключа". Подпись нужна, чтобы никто не мог подделать токен.

Использование токена

Когда вы хотите что-то сделать на сервере (например, войти в конференцию в Jitsi), ваше приложение отправляет этот токен серверу. Сервер проверяет токен:

- Не изменён ли он.
- Действителен ли он.
- Есть ли у вас право делать то, что вы хотите.

Почему JWT удобен?

Не нужно хранить сессии на сервере. Всё, что нужно, — это проверить подпись токена. Это облегчает работу сервера.
Токен — это всего лишь текстовая строка, которую можно легко передавать через Интернет.

Как выглядит JWT?

JWT состоит из трёх частей, разделённых точками (.):

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VybmFtZSI6ImpvaG4iLCJyb2xlIjoiYWRtaW4iLCJleHBpcmUiOjE2MzAxMzc2MDB9.N9RXgZG8ghJDU4Zfbl9h7syNDcKXoZVgCkKb-Pouhyo

 1. Заголовок (Header): Указывает тип токена и метод шифрования.

{
    "alg": "HS256",
    "typ": "JWT"
}

2. Полезная нагрузка (Payload): Содержит данные, например имя пользователя, роль и срок действия. 

{
    "username": "sidorov",
    "role": "admin",
    "expire": 1630137600
}

3. Подпись (Signature): Гарантирует, что токен не был изменён.

Как это используется в Jitsi?

Создание токена: Система управления, например Jitsi Admin, создаёт токен, когда пользователь пытается подключиться. В токене прописываются его права: например, кто он и может ли он создавать конференции.

Проверка токена: Jitsi Meet сервер проверяет токен, прежде чем впустить пользователя или разрешить ему выполнять действия.