我最近遇到了类似的问题(让 REST API 与 TURN 服务器一起工作),并了解到当我们在 TURN 配置中启用 REST API 支持时,TURN 服务器根本不支持 REST API 调用,并且只提供对具有共享密钥的身份验证格式的支持。该草案仅提供了我们在实现此类 REST API 时需要考虑的事项的信息,我们需要自己创建 API 或使用类似turnhttp的东西来生成临时用户名密码组合。
正如@mido 详细说明的那样,您可以在应用程序本身中实现用户名/密码生成部分。但是,如果您有理由将其与应用程序分开并希望将其实现为完全不同的 API 服务,而不是按照草稿实现完整的 API ,我遇到了另一篇文章,其中 OP 提供了一个 PHP 脚本来生成临时用户名和密码,一旦您将 hash_hmac() 函数修改为以下内容,这个就可以很好地工作,
$turn_password = hash_hmac('sha1', $turn_user, $secret_key, true);
我们需要对hash_hmac的 RAW 输出进行 base64 编码以使其正常工作,我相信这就是为什么它不适用于该链接中的 OP。
您应该能够使用turnutils_uclient命令测试身份验证,以验证临时用户名/密码组合是否按预期工作。
turnutils_uclient -y -u GENERATED_USERNAME -w GENERATED_PASSWORD yourturnserver.com
一旦您验证了身份验证并确认它正在工作,您可以为 PHP 脚本设置网络服务器以使其可用于您的应用程序并获取临时用户名/密码组合。此外,您还需要实施其他安全设置(身份验证)以保护 API 免受未经授权的访问。
我知道这是一篇旧帖子,只是在这里分享我的发现,希望有一天它对某人有用。