CoTURN:如何使用 TURN REST API?

2024-01-18

我已经构建了 coturn 并成功运行它。 ip:192.168.1.111。现在我面临的问题是通过REST API获取Turn凭证。https://datatracker.ietf.org/doc/html/draft-uberti-behave-turn-rest-00 https://datatracker.ietf.org/doc/html/draft-uberti-behave-turn-rest-00根据该段落,请求格式应该是

GET /?service=turn&username=mbzrxpgjys

和回应应该是JSON。现在我的问题是:

a) 如何配置和命令TURN SERVER使其运行在REST API mode?

b) 如何以正确的格式编写http请求TURN SERVER能正确回复吗?你能给我举个例子吗?


这里需要澄清的几点是:

  • GET /?service=turn&username=mbzrxpgjys它返回一个 JSON,只是一个建议用于检索的 uri有时间限制的来自服务器的 TURN 凭据,您不必遵循这一点,您的 uri 可以只是/?giveMeCredentials。事实上,我使用套接字连接来检索此数据,而不是使用 json 响应直接进行 http 调用。归根结底,只要这些凭证有效,您(使用所述 TURN 的客户端)如何获取这些凭证并不重要。

  • 您不直接向 TURN 服务器发出任何请求,没有休息 API对 TURN 服务器的调用由您控制。

  • 你在启动TURN服务器时分配一个密钥,这可以从数据库中获取(因此可以动态更改),但是我很懒,只是硬编码,并在turn配置文件中给出了它,还记得启用休息 API。作为转弯命令的一部分,turnserver ... --use-auth-secret --static-auth-secret=MySecretKey

  • 现在,在您的应用程序服务器中,您将使用相同的密钥来生成凭据,对于用户名,它是 UNIX 时间戳和一些字符串(可以是随机的或用户 ID 或其他内容),由:密码将是用户名的 HMAC 和您的密钥。

  • 关于 UNIX 时间戳,这是 TURN 服务器中的时间,在此之前您的凭据必须有效,因此计算此时间可确保您考虑到应用程序服务器和 Turn 服务器之间的时钟时间差。

现在一些示例代码取自我对另一个问题的回答question https://stackoverflow.com/q/30745153/3074768

用于声明 TURN 服务器的命令:

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

node.js在应用程序服务器中创建 TURN 凭证的代码:

var crypto = require('crypto');

function getTURNCredentials(name, secret){    

    var unixTimeStamp = parseInt(Date.now()/1000) + 24*3600,   // this credential would be valid for the next 24 hours
        username = [unixTimeStamp, name].join(':'),
        password,
        hmac = crypto.createHmac('sha1', secret);
    hmac.setEncoding('base64');
    hmac.write(username);
    hmac.end();
    password = hmac.read();
    return {
        username: username,
        password: password
    };
}

使用此功能的浏览器代码:

  ...
  iceServers:[
    {
      urls: "turn:turn_server_ip",
      username: username,
      credential:password
    }
  ...
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

CoTURN:如何使用 TURN REST API? 的相关文章

  • 如何在S3中存储数据并允许用户使用rails API / iOS客户端以安全的方式访问?

    我是编写 Rails 和 API 的新手 我需要一些有关 S3 存储解决方案的帮助 这是我的问题 我正在为 iOS 应用程序编写一个 API 用户在 iOS 上使用 Facebook API 登录 服务器根据 Facebook 向 iOS
  • Kafka REST 代理 API 有哪些好处?

    我不知道Kafka REST Proxy API的优点 它是一个 REST API 所以我知道它对于管理来说很方便 人们为什么使用 Kafka REST 代理 API 添加对生产者或消费者的 Maven 依赖是否很麻烦 另外 我知道kafk
  • firefox 不支持 mediastreamtrack.getsources,如何执行等效操作

    有没有等效的方法来获取连接到 PC 的视频设备列表 除了内置网络摄像头连接之外 我还有一个外部网络摄像头连接 mediastreamtrack getsources 在 Chrome 中工作 但 Firefox 报告 TypeError M
  • PayPal Rest API for Payments 在沙箱中返回 NULL

    我有一个 PayPal 沙盒帐户 我可以在 PHP 上使用curl 通过 api 检索令牌 但是处理测试卡只会返回 null 有人看到代码有问题吗 这是 PayPal 沙盒的已知问题吗 下面代码片段中的客户端是伪造的 但是 如前所述 使用我
  • Swift:转义闭包捕获非转义参数“onCompletion”

    我的 swift 有问题 我正在尝试发送 API 请求 然后检索数据 但收到以下错误消息 Swift 转义闭包捕获非转义参数 onCompletion 有谁知道我该如何解决这个问题 提前致谢 Code class RestApiManage
  • 删除 Google Maps API Premier 使用条款/徽标/等。链接?

    删除我的集成谷歌地图 谷歌地图总理 上显示的徽标 使用条款链接是否合法 问题是 当我放大地图时 链接往往会变得更长并记录并覆盖整个网站 这非常难看 当然可以给div容器一个 overflow hidden 标志有一点帮助 但仍不令人满意 T
  • 如何使用 SyncAdapter 处理远程服务器的 RESTful 更新

    我观看了 Google I O REST 演讲并阅读了幻灯片 http www google com events io 2010 sessions developing RESTful android apps html http www
  • 简单的跨平台 TCP IP API?

    我不打算使用像 QT 或 wxWidgets 的 API 这样的大东西 我只想要可以在 Android iOS Windows Mac Linux 上运行的简单套接字 我正在制作一个事件驱动的纸牌游戏 所以 TCP 是最好的 本质上 我只想
  • 如何在 Google Maps API 中指示语言?

    就像你访问一样maps google com tw or maps google co kr or maps google co jp 您可以看到每个国家 地区都显示自己的语言 我可以在 Google 地图 API 中使用任何属性来动态设置
  • 使用 https 的 Java Jersey RESTful Web 服务

    我是 Java EE 的新手 正在开发一个 RESTful API 其中每个 API 调用用户都会发送编码的凭据 我的问题是如何通过默认的 http 实现 https 协议并确保我的连接安全 我正在使用 Jersey Restful Web
  • Codeception API 测试响应返回“N/A”

    我正在使用 Laravel 和 Codeception 作为测试框架编写 API 我无法让 Codeception 返回响应代码 我可以从 Codeception 获取响应代码 以及 JSON 响应 我编写了一个简单的测试来从 GET 请求
  • 在哪里放置资源特定逻辑

    您能帮我考虑在 AngularJS 中将资源 服务 特定的业务逻辑放置在哪里吗 我觉得在我的资源上创建一些类似模型的抽象应该很棒 但我不确定如何做 API调用 gt GET customers 1 lt first name John la
  • 如何在 REST WCF 服务中接受任意 JSON 对象?

    我想实现这样的服务方法 OperationContract WebInvoke RequestFormat WebMessageFormat Json ResponseFormat WebMessageFormat Json public
  • Twilio webRTC 通话在 10 分钟后中断

    使用 Twilio js 使用 webRTC 录制通话 工作正常 但在 10 分钟时 完全正确 电话挂断 TwiML 上的最大记录时间设置为 7200 秒 浏览器的控制台显示 Twilio PeerConnection signalingS
  • Delphi XE5 REST/Android 客户端“会话已过期”

    我有一个REST Server与Android Client 都在Deplhi Xe5 Android客户端成功连接Rest服务器 在我的服务器中我有一个TDSHttpWebDispatcher with SessionTimeout 12
  • 如何将 Live API for Contacts 的响应中的哈希值转换为文本

    我集成了 Live JS api 来获取用户的实时联系人 它以哈希格式 email hash 返回电子邮件 我如何使用 javascript 或 c net 转换为可读文本 非常感谢 我遇到了同样的问题 并且找到了解决方案 您所需要做的就是
  • Trello API - 未经授权的权限请求

    我正在尝试编写一个小脚本来更新卡的当前列表中的时间量 以便我们可以优化吞吐量 我在 jsfiddle 上写了一个小脚本 几乎可以工作 但我得到了一个 请求未经授权的卡许可 当尝试使用时 Trello post cards card id a
  • 使用 PRAW 帮助获取 Reddit 帖子链接到的 URL

    我正在尝试使用 Praw 获取 Reddit 提交标题中链接的帖子 例如提交 http www reddit com r AdviceAnimals comments 1adu71 apparently people still need
  • 对不存在的资源进行 GET 的 REST 标准

    资源 user 12345 不存在 假设消费者随机尝试不同的 id 没有授权 任何用户都可以查看任何用户 从更广泛的意义上来说 我的问题是 如果对不存在的资源执行 GET 操作 您应该返回什么 我应该为不存在的 id 返回空用户 还是应该返
  • Google Sheets API v4 和 valueInputOption

    我的电子表格中有三列 第一个是日期 第二个和第三个是简单字符串 当我批量上传数据时valueInputOption RAW 我的日期列得到错误的结果 所有日期前面都有一个看不见的撇号 字符串列没问题 当我使用valueInputOption

随机推荐

  • javascript过滤数组多个条件

    我想简化对象数组 假设我有以下数组 var users name John email email protected cdn cgi l email protection age 25 address USA name Tom email
  • 访问查询错误(“from 子句中的语法错误”)

    consulta3 SELECT FROM Dept INNER JOIN Userinfo INNER JOIN Checkinout on Dept DeptName departamento where Dept Deptid Use
  • 修复 Google Chrome 上的蓝线

    我有以下 HTML div div aga ad gdas ga gs ds da dgs sd ds dg gdgsdgwa div div And CSS a b position absolute height 10px font s
  • 当进程尚未完成时 GetExitCodeProcess() 返回 1

    如果我创建一个进程和两个管道集 并且该进程在某个时间需要一些用户输入 则GetExitCodeProcess 从 Windows C API 总是返回1 作为示例 您可以使用 Windowstime命令 这将返回 The current t
  • 填充数据框中缺失的组合

    我的示例数据集 df lt data frame REGION c REGION A REGION A REGION B CATEGORY c A B B VALUE1 c 2 3 4 VALUE2 c 1 2 3 Result REGIO
  • Magento URL重写管理保留GET参数[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我经常使用 Magneto 的 URL 重写管理来重定向一堆页面 然而 URL 带有附属信息 即www mysite com aff 12
  • 移动网站 - 根本不滚动

    我到处搜索 我的网站没有固定的高度 没有固定的展示位置 它显示了我想要的视口 但仅此而已 它不会滚动或显示任何其他内容 我缺少什么 我已经尝试了各种溢出选项 但似乎没有任何效果 我会做以下 我首先会暂时禁用 删除样式表 以确保一切都像纯 h
  • Azure AD 身份验证中的访问令牌验证

    我能够在 Azure AD 身份验证中请求令牌 但问题是每当我更改 access token 中的最后一个字符时 它仍然在我的 API 中成功请求 我只是按照这个https mehmetkut com 2017 05 protect asp
  • 多个复选框值将显示在文本框中

    这是我的代码 div align center b A b div
  • 核心数据如何更新一条记录?

    我有一些对象是与对象用户一对一相关的图像 例如 Image User 现在我想做 当用户登录时 我向每个图像显示一个按钮以添加到收藏夹 当我单击此按钮时运行此代码 User user UserController sharedInstanc
  • ServiceStack:动态添加路由

    我还没有尝试过这个 但我希望每个模块 Silverlight 注册自己的路由 而不是将其添加到应用程序启动中 可以在应用程序启动后将路由添加到 AppHost 还是必须在配置步骤中立即注册它们 我正在考虑在启动时扫描所有程序集 并向AppH
  • 如何告诉 Grunt 在构建任务中不要缩小或连接 js 文件?

    我刚刚使用 Yeoman 搭建了一个 Angular 应用程序 我注意到build默认情况下 task 会执行几件事 包括缩小和连接 js 文件 我想要一个更简单的构建任务 不执行任何缩小或串联 而是只执行以下两件事 将我的 scss 编译
  • 尝试在 AWS Elastic Beanstalk Web 服务器(单实例)PHP 上配置 SSL 时出现问题

    我正在将客户的网站迁移到 AWS 我已配置所有内容并正常工作 但客户希望能够在该网站上接受付款 我遵循了几个关于如何使用 elastic beanstalk 让 SSL 工作的指南 目前 我已将其设置为使用源包 并在 ebextension
  • API网关上的数据聚合

    我正在研究微服务架构 我想聚合来自两个微服务的数据 例如 Frontend 调用 API Gateway API Gateway 调用两个微服务 Customer 和 Order 微服务 客户微服务返回客户详细信息 订单微服务返回客户订购的
  • perl排序问题

    我有一些巨大的日志文件需要排序 所有条目都有一个 32 位十六进制数字 这是我想要使用的排序键 有些条目是单行的 例如 bla bla bla 0x97860afa bla bla 其他的有点复杂 从上面相同类型的行开始 扩展到用大括号标记
  • Cesium:矩形实体上的自定义材质

    我正在尝试添加一个具有多种不同属性的实体 例如材质 主要是 alpha 和旋转 矩形图形已覆盖旋转 并且在我设置材质来表示纹理时起作用 viewer entities add name Site Layer rectangle coordi
  • 使用 OneToMany 的 Spring Data Projection 返回太多结果

    我有一个具有一对多关系 ContactInfo 的 JPA 实体 Person Entity public class Person Id GeneratedValue private Integer id private String n
  • Android 在 NativeScript 中不显示字体图标

    我正在尝试将 Ionicons 与 Android 和 NativeScript 一起使用 我已经包括了ionicon ttf文件和我的集合font family Ionicons 它可以在 iOS 上运行 但不能在 Android 上运行
  • GCHandle.FromIntPointer 未按预期工作

    这是一个非常简单 完整 的程序 用于练习 GCHandle FromIntPointer 的使用 using System using System Runtime InteropServices namespace GCHandleBug
  • CoTURN:如何使用 TURN REST API?

    我已经构建了 coturn 并成功运行它 ip 192 168 1 111 现在我面临的问题是通过REST API获取Turn凭证 https datatracker ietf org doc html draft uberti behav