J’ai compris comment configurer une connexion WebRTC en javascript pour qu’elle fonctionne avec COTURN
Dans COTURN, on peut définir la configuration suivante:
use-auth-secret
static-auth-secret=arachnide
Mais si vous voulez tester sur https://icetest.info/ ou https://webrtc.github.io/samples/src/content/peerconnection/trickle-ice/ vous verrez qu’on vous demande un « username » ….
En fait ces sites attendent la configuration à mettre dans RTCPeerConnection et vous n’avez pas de nom d’utilisateur dans la config de COTURN…
La raison est que vous avez configuré COTURN pour utiliser la TURN REST API . L’idée est de pas partager dans la configuration du client le secret du serveur mais un secret de courte durée. C’est basé sur HMAC et je vous donne un code en python pour générer les bons identifiants :
import time, base64, hmac coturn_secret = "arachnide" # the 'static-auth-secret' the COTURN config file username = "titi" combo = str(int(time.time()+3600*24))+":"+username # 1 hour expiry. Of course this is just for testing. The use of HMAC is to not disclose long-lived credentials password = base64.b64encode(hmac.new(key=coturn_secret.encode(), msg=combo.encode(), digestmod="sha1").digest()).decode() RTCPeerConnection = """ iceServers: [, { urls: "turn:mondomaine.com:3478?transport=tcp", username: "%s", credential: "%s" } ] """ % (combo, password) print(RTCPeerConnection)
Ce qui donne pour la config Javascript :
iceServers: [, { urls: "turn:mondomaine.com:3478?transport=tcp", username: "1651016735:titi", credential: "P/MJS/Gq0+LK7Nx05jXheF9C9xo=" } ]
Vous pouvez rentrer cela dans les sites de tests cités plus haut et devriez voir des résultats « relay » qui prouvent que le transport par TURN a bien été négocié.