如何使用 Coturn 和 oAuth 配置 WebRTC
Posted
技术标签:
【中文标题】如何使用 Coturn 和 oAuth 配置 WebRTC【英文标题】:How to configure WebRTC with Coturn and oAuth 【发布时间】:2015-10-19 05:46:57 【问题描述】:我想使用coturn with oAuth。如果我理解正确,我需要做两件事:
在 coturn 正在使用的数据库中存储 oAuth 令牌 发送ACCESS-TOKEN
和USERNAME
STUN 属性
第一点很清楚,但我需要如何更改我的 WebRTC 客户端才能实现第二点?
如果没有 oAuth,我会像这样初始化我的 RTCPeerConnection
:
var configuration =
'iceServers': [
'url': 'turn:turn.example.org',
'username': 'user',
'credential': 'password'
]
;
var pc = new RTCPeerConnection(configuration)
WebRTC 1.0 draft 定义了一个 RTCIceCredentialType
枚举,所以我认为我需要像这样更改我的配置:
var configuration =
'iceServers': [
'url': 'turn:turn.example.org',
'username': 'kid',
'credential': 'oAuthToken',
'credentialType': 'token'
]
;
使用 Wireshark 我看不到 ACESS-TOKEN
属性。有什么想法或有人知道一个可行的例子吗?
【问题讨论】:
您使用什么命令来启动 TURN 服务器?turnserver -n -f -v -l stdout -a --oauth -r "myRealm" -J "myMongoConnection"
我猜你在 TURN 服务器日志中收到 401
错误
抱歉回复晚了。你是对的,错误是:26: session 005000000000000001: realm <myRealm> user <my<user>: incoming packet message processed, error 401: Unknown error 26: check_stun_auth: user turn credentials are incorrect
。我认为 coturn 在这里使用的是长期凭据,因为未发送 ACCESS-TOKEN
属性。
前两天我一直在尝试,遇到了类似的错误,但我没有设置 oauth,使用了 redis 服务器,并在其中手动添加了行
【参考方案1】:
自从提出原始问题以来,情况似乎发生了一些变化。 webrtc-pc#1033 拉取请求更改了规范并引入了以下 iceServers
配置语法:
var configuration =
'iceServers': [
"urls": "turns:turn.example.net",
"username": "username",
"credential":
"macKey": "...",
"accessToken": "..."
,
"credentialType": "oauth"
],
...
有关更多配置示例,请参阅RTCIceServer
文档页面。
【讨论】:
可悲的是,"credentialType": "oauth"
是 removed from the spec 和 turned into an extension,因为它“处于危险之中”。 :(以上是关于如何使用 Coturn 和 oAuth 配置 WebRTC的主要内容,如果未能解决你的问题,请参考以下文章
需要 WebRTC 的 coturn 证书和 pkey 吗?
华为云CentOS7 部署STUN/TURN服务 Coturn