Conseils, bonnes pratiques et fonctionnalités cachées
Ce chapitre rassemble des fonctionnalités API moins connues, des recommandations de sécurité et des bonnes pratiques éprouvées pour l’intégration avec l’API BigBlueButton. Beaucoup de ces détails ne sont que partiellement documentés dans les sources officielles et ont été vérifiés par analyse du code source et recherche communautaire.
Valeur masquée de la politique des invités
En plus des trois valeurs bien connues du paramètre guestPolicy, il existe une quatrième valeur rarement documentée mais très utile pour les scénarios à audience mixte.
| Valeur | Comportement |
|---|---|
ALWAYS_ACCEPT | Tous les utilisateurs rejoignent immédiatement sans approbation. |
ALWAYS_DENY | Seuls les modérateurs peuvent rejoindre la réunion. |
ASK_MODERATOR | Les invités attendent dans le lobby jusqu’à ce qu’un modérateur les approuve. |
ALWAYS_ACCEPT_AUTH | Les utilisateurs authentifiés rejoignent directement. Seuls les invités non authentifiés nécessitent l’approbation d’un modérateur. |
La politique ALWAYS_ACCEPT_AUTH est idéale lorsque des utilisateurs enregistrés provenant d’un LMS doivent rejoindre sans attendre, tandis que les invités externes doivent toujours être approuvés par un modérateur.
Callback côté serveur avec meetingEndedURL
Le paramètre meetingEndedURL fournit un rappel côté serveur qui diffère du meta_endCallbackUrl couramment utilisé sur des points importants :
- Il n’est pas exposé au client et n’est pas stocké dans les enregistrements.
- Il est utilisé en interne par des systèmes tels que
Scalelite. - Il convient parfaitement aux intégrations côté serveur où l’URL de rappel doit rester masquée.
create?meetingID=replace-with-meeting-id&meetingEndedURL=https://api-guide.bbbserver.com/callbacks/internal&checksum=replace-with-checksum Paramètres de capture des salles de sous-commission
Au-delà des paramètres standard des salles de répartition, BigBlueButton prend en charge des options supplémentaires pour réintégrer dans la réunion principale le contenu provenant des salles de répartition.
| Paramètre | Type | Description |
|---|---|---|
breakoutRoomsCaptureSlides | Boolean | Importer les diapositives des salles de sous-commission dans la réunion principale. |
breakoutRoomsCaptureNotes | Boolean | Importer les notes partagées des salles de sous-commission dans la réunion principale. |
breakoutRoomsCaptureNotesFilename | String | Nom de fichier personnalisé pour le fichier de notes capturées. |
Paramètres d’annotation et d’image de marque
Le paramètre lockSettingsHideViewersAnnotation masque les annotations du tableau blanc effectuées par les autres spectateurs, de sorte que chaque participant ne voit que ses propres annotations et celles du présentateur.
create?meetingID=replace-with-meeting-id&lockSettingsHideViewersAnnotation=true&checksum=replace-with-checksum Le paramètre copyright définit un texte de copyright personnalisé dans le client BBB, ce qui peut être utile pour les déploiements en marque blanche :
create?meetingID=replace-with-meeting-id©right=Example+Organization&checksum=replace-with-checksum Le paramètre logo ne fonctionne que si displayBrandingArea=true est défini dans le fichier de configuration du serveur /etc/bigbluebutton/bbb-web.properties.
Bonnes pratiques de sécurité
Toujours inclure createTime dans les URL de jonction
Incluez toujours la valeur createTime de la réponse create dans votre URL join. Cela empêche la réutilisation d'anciens liens de jointure lorsqu'une nouvelle réunion est créée avec le même identifiant de réunion.
join?meetingID=replace-with-meeting-id&fullName=Max&role=VIEWER&createTime=1715261728123&checksum=replace-with-checksum Calcul du checksum pour les requêtes POST
Une erreur fréquente : le checksum est toujours calculé uniquement à partir de la chaîne de requête de l’URL, même pour les requêtes POST. Le corps de la requête (XML, JSON) n’est jamais inclus dans le calcul du checksum.
Checksum = SHA256("create" + "meetingID=replace-with-meeting-id&name=Demo" + "replace-with-secret") Le corps POST (par ex. présentation XML) est envoyé séparément mais n’est pas haché.
Une vulnérabilité de sécurité passée (CVE GHSA-4m48-49h7-f3c4) permettait à des attaquants disposant d’une URL de jonction valide d’injecter des paramètres supplémentaires dans des liens de jonction signés. Validez et assainissez toujours tous les paramètres côté serveur avant de générer des URL API signées.
Changements incompatibles BBB 3.0
BigBlueButton 3.0 introduit plusieurs changements incompatibles qui affectent les intégrations API. Examinez attentivement le tableau suivant lors de la mise à niveau :
| Changement | Détails |
|---|---|
password → role | L'appel join utilise désormais role=MODERATOR ou role=VIEWER au lieu de mots de passe. |
| POST supprimé pour /join | Seules les requêtes GET sont acceptées pour les appels join. |
Content-Type requis | Doit être spécifié pour toutes les requêtes POST. |
| Content-Types accepté pour /create | application/x-www-form-urlencoded, multipart/form-data, application/xml, text/xml |
| Paramètres supprimés | breakoutRoomsEnabled, learningDashboardEnabled, virtualBackgroundsDisabled ont été remplacés par le paramètre disabledFeatures. |
Points de terminaison obsolètes
Les points de terminaison suivants sont obsolètes et ne doivent pas être utilisés dans les nouvelles intégrations :
| Point de terminaison | Statut | Remplacement |
|---|---|---|
getDefaultConfigXML | Obsolète depuis BBB 2.4, supprimé dans BBB 3.0. | clientSettingsOverride |
setConfigXML | Obsolète depuis BBB 2.4, supprimé dans BBB 3.0. | clientSettingsOverride |
Comportement de fusion du manifeste de plugin
Les manifestes de plugin provenant de trois sources sont fusionnés (et non écrasés) lorsqu'une réunion est créée :
- Configuration du serveur
- Paramètre
pluginManifestsdans l’appelcreate - Paramètre
pluginManifestsFetchUrl
Les doublons sont supprimés automatiquement. Cela permet une configuration flexible des plugins à plusieurs niveaux.
Options importantes de configuration du serveur
Les paramètres suivants de bigbluebutton.properties ne peuvent pas être contrôlés via l'API mais affectent directement le comportement de l'API :
| Propriété | Par défaut | Description |
|---|---|---|
supportedChecksumAlgorithms | sha1,sha256,sha384,sha512 | Algorithmes de somme de contrôle pris en charge pour l'authentification API. |
maxUserConcurrentAccesses | 3 | Nombre maximal de sessions simultanées par utilisateur (par identifiant externe). |
allowOverrideClientSettingsOnCreateCall | false | Active le paramètre clientSettingsOverride dans le corps de create. |
allowRevealOfBBBVersion | false | Affiche la version BBB dans la réponse racine de l’API. |
allowFetchAllRecordings | true | Autorise getRecordings sans filtre d'identifiant de réunion. |
maxFileSizeUpload | 30000000 | Taille maximale de fichier pour les téléversements de présentation (30 Mo). |
defaultHttpSessionTimeout | 14400 | Délai d'expiration de la session HTTP en secondes (4 heures). |
sessionsCleanupDelayInMinutes | 60 | Les sessions restent actives pendant ce nombre de minutes après la fin d'une réunion. |
fetchUrlSupportedProtocols | https | Protocoles autorisés pour la récupération d'URL (par ex. téléchargements de présentation). |
Configuration du pont média
BigBlueButton 3.0 introduit LiveKit comme pont média alternatif. Les paramètres create suivants contrôlent quel pont est utilisé :
| Paramètre | Valeurs possibles | Par défaut |
|---|---|---|
cameraBridge | bbb-webrtc-sfu, livekit | bbb-webrtc-sfu |
screenShareBridge | bbb-webrtc-sfu, livekit | bbb-webrtc-sfu |
audioBridge | bbb-webrtc-sfu, livekit, freeswitch | freeswitch |
Délai d'expiration de conversion des présentations
À partir de BBB 3.0, le paramètre serveur maxPageConversionTime (par défaut : 60 secondes) limite le temps de conversion par diapositive. Les présentations complexes avec de nombreuses pages ou des graphismes lourds peuvent atteindre ce délai d’expiration, provoquant l’échec de la conversion des diapositives.
Si vos présentations dépassent fréquemment le délai de conversion, envisagez de les diviser en fichiers plus petits ou de simplifier les diapositives complexes avant le téléversement.