Configurer un client WebRTC pour utiliser un relais COTURN

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é.

Laisser un commentaire

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.