Jitsi Meet: аутентификация JWT: неверный json - PullRequest
0 голосов
/ 30 октября 2018

Я пытаюсь настроить 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.

Я пытался покопаться в частях исходного кода просодии, но не могу найти, где на самом деле происходит ошибка; хотя я обнаружил некоторые более конкретные ошибки, которые могут возникнуть, если проблема связана с фактическими данными в моей полезной нагрузке (например, недопустимая аудитория, недопустимый объект и т. д.).

Пока что я в полном недоумении, почему просодия отказывается принимать токены, которые я хочу использовать.

...