我正在尝试配置Jitsi Meet设置以使用JWT身份验证;我已按照以下详细说明进行了设置: https://github.com/jitsi/lib-jitsi-meet/blob/master/doc/tokens.md
使用prosody-trunk
内部版本747似乎可以正确安装和配置所有内容,并且jitsi-meet-tokens
的安装已完成,没有任何错误,但是prosody不接受我创建的令牌,并报告如下错误:
general warn Error verifying token err:not-allowed, reason:Invalid json
这表明我的令牌的JSON格式在某种程度上是错误的,或者编码不正确,但是如果我自己对其进行解码,那么一切似乎都是正确的,并且可以使用位于{{3的JWT调试器}}
我正在用PHP生成令牌,虽然我使用的类很简单,但JWT标准也很简单;这只是创建JSON(PHP中对象的json_encode
)然后将其编码为base64而没有任何填充的情况。
JWT令牌使用jwt.io上的调试器正确验证,这是示例URL,其中包含我生成的令牌:
https://chat.uprospr.com/MyCompanyCabeoBathgate?jwt="eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhdWQiOiIqIiwiaXNzIjoidXByb3NwciIsInN1YiI6InVwcm9zcHIuY29tIiwicm9vbSI6Ik15Q29tcGFueUNhYmVvQmF0aGdhdGUifQ.vPotxB4FRVpJZNF_i_UyS3M-HSJVBvUqWNve-PSh_yo"
这很简单,但是prosody仍然抱怨说它是无效的JSON;有谁知道为什么会这样?
如果有什么用,这是另一个使用秘密80385194037914f
(不是我的生产秘密)创建的示例令牌:
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhdWQiOiIqIiwiaXNzIjoidXByb3NwciIsInN1YiI6ImNoYXQudXByb3Nwci5jb20iLCJyb29tIjoiTXlDb21wYW55Q2FiZW9CYXRoZ2F0ZSJ9.-4u64dx4JThu-8iczuwA5q67FAOvUwasNUQ_MjvS7qg
错误是invalid json
而不是更具体的事实,表明错误发生在解码的某个位置,即对base64或JSON对象进行解码。
我尝试遍历部分韵律源代码,但找不到错误的真正出处;尽管我发现如果有效载荷中的实际数据存在问题(例如无效的受众,无效的主题等),则会发生一些更具体的错误。
到目前为止,关于为什么韵律拒绝接受我想使用的令牌,我一无所知。