Jitsi Meet: аутентификация JWT: неверный json
Я пытаюсь настроить установку Jitsi Meet для использования аутентификации JWT; Я следовал инструкциям по настройке, как описано здесь: https://github.com/jitsi/lib-jitsi-meet/blob/master/doc/tokens.md
Кажется, все установлено и настроено правильно, используя prosody-trunk
сборка 747 и установка jitsi-meet-tokens
завершено без каких-либо ошибок, однако просодия не принимает созданные мной токены, сообщая об ошибке примерно так:
general warn Error verifying token err:not-allowed, reason:Invalid json
Это может указывать на то, что JSON-форма моего токена каким-то образом искажена или неправильно закодирована, но если я сам ее декодирую, все кажется правильным, и я могу правильно его декодировать, используя отладчик JWT по адресу https://jwt.io/.
Я генерирую свои токены в PHP, и хотя класс, который я использую для этого, довольно прост, так же как и стандарт JWT; это просто случай создания JSON (json_encode
объекта в PHP) затем кодирование в виде base64 без каких-либо дополнений.
Токен JWT проверяется правильно с помощью отладчика в jwt.io, вот пример URL с сгенерированным токеном:
https://chat.uprospr.com/MyCompanyCabeoBathgate?jwt="eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhdWQiOiIqIiwiaXNzIjoidXByb3NwciIsInN1YiI6InVwcm9zcHIuY29tIiwicm9vbSI6Ik15Q29tcGFueUNhYmVvQmF0aGdhdGUifQ.vPotxB4FRVpJZNF_i_UyS3M-HSJVBvUqWNve-PSh_yo"
Это так просто, как я мог, но просодия все еще жалуется, что это недопустимый JSON; У кого-нибудь есть идеи, почему это может быть?
На случай, если он пригодится, вот еще один пример токена, созданный с использованием секрета. 80385194037914f
(не мой секрет производства):
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhdWQiOiIqIiwiaXNzIjoidXByb3NwciIsInN1YiI6ImNoYXQudXByb3Nwci5jb20iLCJyb29tIjoiTXlDb21wYW55Q2FiZW9CYXRoZ2F0ZSJ9.-4u64dx4JThu-8iczuwA5q67FAOvUwasNUQ_MjvS7qg
Дело в том, что ошибка invalid json
, а не что-то более конкретное, предполагает, что где-то в декодировании происходит ошибка, либо декодирование объекта base64, либо JSON.
Я попытался покопаться в частях исходного кода просодии, но не могу найти, где на самом деле происходит ошибка; хотя я обнаружил некоторые более конкретные ошибки, которые возникли бы, если бы проблема была связана с фактическими данными в моей полезной нагрузке (например, недопустимая аудитория, недопустимый объект и т. д.).
Пока что я в полном недоумении, почему просодия отказывается принимать токены, которые я хочу использовать.