跳转到内容
搜索文档

生成凭据

最后更新 查看 MarkdownAgent 设置

Cloudflare 会发放 TURN 密钥,但这些密钥不能直接用作 turn.cloudflare.com 的凭据。要使用 TURN,您需要创建具有过期 TTL 值的凭据。

创建 TURN 密钥

要创建 TURN 凭据,您首先需要使用仪表板API 创建一个 TURN 密钥。

您应该在服务器端保管您的 TURN 密钥(请勿将其共享给浏览器/应用程序)。TURN 密钥是一个长期密钥,它允许您为 TURN 客户端生成无限数量的、寿命较短的 TURN 凭据。

通过 TURN 密钥,您可以:

  • 生成会过期的 TURN 凭据
  • 撤销以前发放的 TURN 凭据

创建凭据

您应该为每个 TURN 用户生成短期凭据。为了创建凭据,您应该拥有一个后端服务,该服务使用您的 TURN 令牌 (Token) ID 和 API 令牌来生成凭据。它将发起如下所示的 API 调用:

curl https://rtc.live.cloudflare.com/v1/turn/keys/$TURN_KEY_ID/credentials/generate-ice-servers \
--header "Authorization: Bearer $TURN_KEY_API_TOKEN" \
--header "Content-Type: application/json" \
--data '{"ttl": 86400}'

然后可以将如下所示的 201 (Created) 响应传递给您的前端应用程序:

{
  "iceServers": [
		{
			"urls": [
				"stun:stun.cloudflare.com:3478",
				"stun:stun.cloudflare.com:53"
			]
		},
		{
			"urls": [
				"turn:turn.cloudflare.com:3478?transport=udp",
				"turn:turn.cloudflare.com:53?transport=udp",
				"turn:turn.cloudflare.com:3478?transport=tcp",
				"turn:turn.cloudflare.com:80?transport=tcp",
				"turns:turn.cloudflare.com:5349?transport=tcp",
				"turns:turn.cloudflare.com:443?transport=tcp"
			],
			"username": "bc91b63e2b5d759f8eb9f3b58062439e0a0e15893d76317d833265ad08d6631099ce7c7087caabb31ad3e1c386424e3e",
			"credential": "ebd71f1d3edbc2b0edae3cd5a6d82284aeb5c3b8fdaa9b8e3bf9cec683e0d45fe9f5b44e5145db3300f06c250a15b4a0"
		}
	]
}

在实例化 RTCPeerConnection 时按如下方式使用 iceServers

const myPeerConnection = new RTCPeerConnection({
  iceServers: [
    {
      urls: [
				"stun:stun.cloudflare.com:3478",
				"stun:stun.cloudflare.com:53"
			]
		},
		{
			urls: [
				"turn:turn.cloudflare.com:3478?transport=udp",
				"turn:turn.cloudflare.com:53?transport=udp",
				"turn:turn.cloudflare.com:3478?transport=tcp",
				"turn:turn.cloudflare.com:80?transport=tcp",
				"turns:turn.cloudflare.com:5349?transport=tcp",
				"turns:turn.cloudflare.com:443?transport=tcp"
      ],
			"username": "bc91b63e2b5d759f8eb9f3b58062439e0a0e15893d76317d833265ad08d6631099ce7c7087caabb31ad3e1c386424e3e",
			"credential": "ebd71f1d3edbc2b0edae3cd5a6d82284aeb5c3b8fdaa9b8e3bf9cec683e0d45fe9f5b44e5145db3300f06c250a15b4a0"
    },
  ],
});

ttl 值可以进行调整,以在特定时间后使短期密钥占用时间过期。此值应大于您预期用户使用 TURN 服务的时间。例如,如果您在视频会议应用中使用 TURN,则该值应设置为您预期该应用中可能发生的最长视频通话时间。

当在 WebRTC 中使用短期 TURN 凭据时,可以在 WebRTC 会话期间使用 RTCPeerConnectionsetConfiguration() API 来刷新凭据。

撤销凭据

在短期凭据的 TTL 到期之前,也可以通过如下 API 调用将其撤销:

curl --request POST \
https://rtc.live.cloudflare.com/v1/turn/keys/$TURN_KEY_ID/credentials/$USERNAME/revoke \
--header "Authorization: Bearer $TURN_KEY_API_TOKEN"

如果凭据被成功撤销,将返回 204 (No Content) 响应。

这篇文档对您有帮助吗?