使用 AppKeys 和租户 ID - Amazon Chime SDK

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

使用 AppKeys 和租户 ID

你可以使用 AppKeys 和 TenantID 来限制从网络访问特定应用程序的 Amazon Chime SDK WebRTC 媒体会话。

开发人员使用 Amazon Chime SDK 创建通过 UDP 发送和接收实时视频的应用程序。应用程序用户需要对 CHIME_MEETINGS 子网的 UDP 访问权限。组织(网络所有者)可以使用 AppKeys 和 TenanTids 来限制从其网络上访问特定应用程序的 WebRTC 媒体会话。

示例 1:使用 AppKeys

如果应用程序 A 和 App-B 使用 Amazon Chime SDK,则组织可以允许应用程序 A 从其网络访问 WebRTC 媒体会话,但可以屏蔽应用程序 B 和使用 Amazon Chime SDK 的任何其他应用程序。Organizations 可以使用 App-A AppKey 和 HTTPS 代理来做到这一点。更多信息,请参阅该主题后面的 限制对特定应用程序的访问

示例 2:使用 AppKeys 和租户标识

如果 App-A 公开可用并被许多客户使用,组织可能希望仅当其用户参与会话时才允许 App-A 从其网络访问 WebRTC 媒体会话,并阻止访问所有其他 App-A 会话。组织可以通过使用应用程序 AppKey、组织的 TenanTid 和 HTTPS 代理来做到这一点。更多信息,请参阅该主题后面的 限制对特定租户的访问

要使用 AppKeys 和 TenantIds,你必须有一个允许向请求添加 HTTPS 标头的 HTTPS 代理服务器。下图显示了 TenanTID 的工作 AppKeys 原理。

该图显示了 TenantIDS 如何 AppKeys 控制应用程序和租户对 WebRTC 会话的访问权限。

在图中,App-A 有租户 A-1 和 A-2,App-B 有租户 B-1 和 B-2。在这种情况下, AppKey 仅允许App-A连接到WebRTC媒体会话,而租户ID仅允许租户A-1加入该会话。

限制对特定应用程序的访问

A AppKey是 Amazon Chime 为每个账户创建的一致且唯一的 256 位值。 AWS 如果您没有 AppKey,可以向 Amazon Support 申请一个。如果您有多个 AWS 账户,则可以 AppKey 申请所有账户的通用账户。

注意

您可以安全地 AppKeys 公开共享您的信息,并允许其他组织限制来自其网络的访问。

Amazon Chime SDK 会 AppKey 根据用于创建会话的 AWS 账户 ID 自动将每个 WebRTC 媒体会话与关联起来。要限制从您的网络访问特定应用程序,请执行以下操作:

  1. 通过 HTTPS 代理服务器将所有出站请求路由到 CHIME_MEETINGS 子网。

  2. 配置代理服务器,向 CHIME_MEETINGS 子网的所有出站请求添加以下标头:

    X-Amzn-Chime-App-Keys:以逗号分隔的允许列表。 AppKeys

    例如,X-Amzn-Chime-App-Keys:AppKey-A,AppKey-B,AppKey-C允许与这些应用程序关联的应用程序 AppKeys 访问子网。

Amazon Chime SDK 会检查入站 WebRTC 媒体会话连接的 X-Amzn-Chime-App-Keys 标头并应用以下逻辑:

  1. 如果标X-Amzn-Chime-App-Keys头存在并且包含会话的标头 AppKey,请接受连接。

  2. 如果标X-Amzn-Chime-App-Keys头存在但不包括会话的标头 AppKey,则以 403 错误拒绝连接。

  3. 如果 X-Amzn-Chime-App-Keys 标头不存在,则接受连接。如果用户能够从组织网络外部访问应用程序,他们也可以访问该会话。

限制对特定租户的访问

TenantID 是由开发人员创建的不透明标识符。请记住以下关于 TenantID 的信息:

  • 不能保证 TenantID 在应用程序之间是唯一的,因此您必须 AppKey为每个 TenantID 列表指定一个。

  • TenantID 区分大小写。根据开发人员的规定准确输入。

  • 一个组织可以限制对多个应用程序的访问权限,但只能为部分应用程序指定 TenantID。没有 TenantID 的应用程序可以连接所有 WebRTC 媒体会话。

要将媒体会话与 TenantIDS 关联,开发者必须先将该TenantIds属性和 TenantID 列表添加到或请求中。CreateMeetingCreateMeetingWithAttendees

例如:

CreateMeeting(..., TenantIds : [ tenantId1, tenantId2 ] )

要在特定应用程序中限制从组织网络访问其 WebRTC 媒体会话,执行以下操作:

  1. 按照 限制对特定应用程序的访问 中的步骤操作。

  2. 将 HTTPS 代理服务器配置为在出站连接上添加 X-Amzn-Chime-Tenants 标头。包括 AppKeys 和 TenanTid 的列表,分隔如以下示例所示:X-Amzn-Chime-Tenants: AppKey-A:tenantId-A-1,tenantId-A-2;AppKey-B:tenantId-B-1,tenantId-B-2

Amazon Chime SDK 会检查入站 WebRTC 媒体会话连接的 X-Amzn-Chime-Tenants 标头并应用以下逻辑:

  • 如果标头包含该会话的 AppKey:tenantId,则接受连接。

  • 如果标头包含会话的 AppKey,但与 tenantId 不匹配,则以 403 错误拒绝连接。

  • 如果标头包含会话的 AppKey,则接受连接。

  • 如果标头包含会话 AppKey,但会话并无至少一个受允许的 tenantId,则以 403 错误拒绝连接。这可能是开发人员的错误。

  • 如果标头不存在,则接受连接。如果用户能够从组织网络外部访问应用程序,他们也可以访问所有会话。

HTTPS 标头示例

以下示例显示了在 HTTPS 标头中使用 AppKeys 和 TenanTids 的一些方法。

一个应用程序只有一个租户

X-Amzn-Chime-App-Keys: AppKey

X-Amzn-Chime-Tenants: AppKey:orgId

用户只能在指定应用程序中访问组织的 WebRTC 媒体会话。已阻止所有其他的应用程序。

一个应用程序有两个租户

X-Amzn-Chime-App-Keys: AppKey

X-Amzn-Chime-Tenants: AppKey:engineeringId,salesId

用户只能在指定应用程序中访问工程和销售的媒体会话。已阻止所有其他的应用程序。

两个应用程序,一个仅限租户使用

X-Amzn-Chime-App-Keys: AppKey1,AppKey2

X-Amzn-Chime-Tenants: AppKey1:orgId

用户只能在应用程序 1 中访问组织的媒体会话,而在应用程序 2 中可以访问任何会话。已阻止所有其他的应用程序。