我正在尝试从此处为 webRTC 设置 rfc5766-turn-server TURN 服务器。turnuserdb.conf
我能够使用包含我的用户名和密码 (my_user_name:my_password)的文件通过此 TURN 服务器成功转发我的视频。在网络客户端我使用:
"iceServers":{[
"url": "turn:my_user_name,@turn_server_ip",
"credential":"my_password"
}]
我正在尝试使用 TURN 服务器附带的 REST API 功能来避免通过网络发送密码或将其存储在客户端。我在 Rest API 下遵循了这个规范 和这个解释
但是不幸的是,我得到了401,我无法进行身份验证。
这就是我所做的:
我创建了一个秘密“my_secret”,然后像这样运行转向服务器:
turnserver -v --syslog -a -L xx.xxx.xx.xx -X yy.yyy.yyy.yy -E zz.zzz.zz.zzz --max-bps=3000000 -f -m 3 --min-port=32355 --max-port=65535 --use-auth-secret --static-auth-secret=my_secret --realm=north.gov --cert=turn_server_cert.pem --pkey=turn_server_pkey.pem --log-file=stdout -q 100 -Q 300 --cipher-list=ALL
(我只是用 替换了 IP 地址
xx.xxx.xx.xx
yy.yyy.yyy.yy
zz.zzz.zz.zzz
)后来我生成了一个现在 + 1 小时的时间戳,所以我在 nodejs 上运行:
Date.now()+1000*60*60; // output 1433895918506.
我在这个网站上生成了临时密码,使用我的秘密,得到了结果
0ca57806bdc696b3129d4cad83746945b00af77b
我将密码编码为base64。
现在我尝试使用临时用户名:
1433895918506:my_user_name
和密码:从 Web 客户端登录与转服务器的通信,MGNhNTc4MDZiZGM2OTZiMzEyOWQ0Y2FkODM3NDY5NDViMDBhZjc3Yg==
现在我在 Web 客户端上使用"iceServers":"url":"turn:1433895918506:my_user_name@turn_server_ip","credential":"MGNhNTc4MDZiZGM2OTZiMzEyOWQ0Y2FkODM3NDY5NDViMDBhZjc3Yg=="}]
但它不起作用,我得到:
401 user <1433895918506:my_user_name> incoming packet message processed, error 401: Unauthorised.
你能帮我找出问题所在吗?