Skip to content

Meetings V2 JWT Configuration

Andres Gutierrez edited this page Aug 9, 2024 · 5 revisions

Using JWT for authentication in Prosody

Install jitsi-meet-tokens

Install the jitsi-meet-tokens package

sudo apt-get update
sudo apt install jitsi-meet-tokens

"jitsi-meet-tokens/stable,now 1.0.7658-1 all [installed]"

Update Prosody Config

Open the Prosody configuration file

sudo vim etc/prosody/conf.avail/{jitsi-domain}.cfg.lua	

* I personally like using vim however you can also ssh via vscode, but you need read/write permissions to save any changes.

Under VirtualHost that points to "{jitis-domain}"

  • Change app_id: user_id, => this will be the "iss" property in the jwt
  • Change app_secret: user_secret => encrypted/used to sign the jwt, will point to a private key file.

After updating any of the plugins restart the Jitsi services

sudo systemctl restart prosody.service jicofo.service jitsi-videobridge2.service

Token Example

HEADER: {
  "alg": "",                   // indicates type of encryption for jwt
  "typ": "JWT"
},
PAYLOAD: {
  "context": {
    "user": {
      "avatar": "",
      "name": "",
      "email": "",
      "affiliation": ""
    },
    "room": {
      "security_bypass": false,
      "lobby": false,
      "password": ""           // an empty string unsets password security
    },
    "features": {              // These features are optional. They can be set to "true" or "false"			
       "branding": "",
       "calendar": "",
       "flip": "",
       "inbound-call": "",
       "livestreaming": "",
       "moderation": "", 
       "outbound-call": "",
       "recording": "",
       "screen-sharing": "",
       "sip-inbound-call": "",
       "sip-outbound-call": "",
       "transcription": ""
     }
  },
  "aud": "jitsi",
  "iss": "",
  "sub": "{jitsi-domain}",
  "room": "",
  "iat": 0,                   // date token was created, in milliseconds
  "nbf": 0,                   // date after which the token is valid, in milliseconds
  "exp": 0                    // date the token expires, in milliseconds
}