Я пытаюсь настроить Jitsi Meet для использования аутентификации JWT; Я следовал инструкциям по настройке, как подробно здесь:
https://github.com/jitsi/lib-jitsi-meet/blob/master/doc/tokens.md
Похоже, что все установлено и настроено правильно с использованием prosody-trunk
build 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.
Я пытался покопаться в частях исходного кода просодии, но не могу найти, где на самом деле происходит ошибка; хотя я обнаружил некоторые более конкретные ошибки, которые могут возникнуть, если проблема связана с фактическими данными в моей полезной нагрузке (например, недопустимая аудитория, недопустимый объект и т. д.).
Пока что я в полном недоумении, почему просодия отказывается принимать токены, которые я хочу использовать.