针对 Amazon Chime SDK 使用 AppKey 和 TenantID
您可以使用 AppKey 和 TenantID 限制从网络访问特定应用程序的 Amazon Chime SDK WebRTC 媒体会话。
开发人员使用 Amazon Chime SDK 创建通过 UDP 发送和接收实时视频的应用程序。应用程序用户需要对 CHIME_MEETINGS
子网的 UDP 访问权限。组织(网络所有者)可以使用 AppKey 和 TenantID 限制其网络对特定应用程序的 WebRTC 媒体会话的访问。
示例 1:使用 AppKey
如果 App-A 和 App-B 使用 Amazon Chime SDK,则组织可以允许 App-A 从其网络访问 WebRTC 媒体会话,但阻止 App-B 及使用 Amazon Chime SDK 的任何其他应用程序。组织可以使用 App-A 的 AppKey 和 HTTPS 代理实现这一点。更多信息,请参阅该主题后面的 限制对特定应用程序的访问。
示例 2:使用 AppKey 和 TenantID
如果 App-A 公开可用并被许多客户使用,组织可能希望仅当其用户参与会话时才允许 App-A 从其网络访问 WebRTC 媒体会话,并阻止访问所有其他 App-A 会话。组织可以通过使用应用程序的 AppKey、组织的 TenantID 和 HTTPS 代理实现这一点。更多信息,请参阅该主题后面的 限制对特定租户的访问。
要使用 AppKey 和 TenantID,您必须拥有一台允许向请求添加 HTTPS 标头的 HTTPS 代理服务器。下图显示 AppKey 和 TenantID 的工作原理。
![显示 AppKey 和 TenantID 如何控制应用程序和租户访问 WebRTC 会话的图表。](images/app-key-diagram.png)
在图中,App-A 有租户 A-1 和 A-2,App-B 有租户 B-1 和 B-2。在这种情况下,AppKey 仅允许 App-A 连接到 WebRTC 媒体会话,而租户 ID 仅允许租户 A-1 加入该会话。
限制对特定应用程序的访问
AppKey 是 Amazon Chime 为每个 AWS 账户创建的一致且唯一的 256 位值。如果您没有 AppKey,可以向 Amazon Support 申请一个。如果您有多个 AWS 账户,可以为所有账户申请通用 AppKey。
注意
您可以安全地公开共享您的 AppKey,并允许其他组织限制从其网络访问。
Amazon Chime SDK 会根据用于创建会话的 AWS 账户 ID 自动将每个 WebRTC 媒体会话与 AppKey 关联起来。要限制从您的网络访问特定应用程序,请执行以下操作:
-
通过 HTTPS 代理服务器将所有出站请求路由到
CHIME_MEETINGS
子网。 -
配置代理服务器,向
CHIME_MEETINGS
子网的所有出站请求添加以下标头:X-Amzn-Chime-App-Keys:
逗号分隔的允许的 AppKey 列表。
例如,
X-Amzn-Chime-App-Keys:
允许与这些 AppKey 关联的应用程序访问子网。AppKey-A
,AppKey-B
,AppKey-C
Amazon Chime SDK 会检查入站 WebRTC 媒体会话连接的 X-Amzn-Chime-App-Keys
标头并应用以下逻辑:
-
如果
X-Amzn-Chime-App-Keys
标头存在并且包含该会话的 AppKey,则接受连接。 -
如果
X-Amzn-Chime-App-Keys
标头存在但不包含会话的 AppKey,则以 403 错误拒绝连接。 -
如果
X-Amzn-Chime-App-Keys
标头不存在,则接受连接。如果用户能够从组织网络外部访问应用程序,他们也可以访问该会话。
限制对特定租户的访问
TenantID 是由开发人员创建的不透明标识符。请记住以下关于 TenantID 的信息:
-
无法保证 TenantID 在应用程序之间是唯一的,因此您必须为每个 TenantID 列表指定一个 AppKey。
-
TenantID 区分大小写。根据开发人员的规定准确输入。
-
一个组织可以限制对多个应用程序的访问权限,但只能为部分应用程序指定 TenantID。没有 TenantID 的应用程序可以连接所有 WebRTC 媒体会话。
要将媒体会话与 TenantID 关联,开发人员必须先将 TenantIds
属性和 TenantID 列表添加到 CreateMeeting 或 CreateMeetingWithAttendees 请求。
例如:
CreateMeeting(..., TenantIds : [ tenantId1, tenantId2 ] )
要在特定应用程序中限制从组织网络访问其 WebRTC 媒体会话,执行以下操作:
-
按照 限制对特定应用程序的访问 中的步骤操作。
-
将 HTTPS 代理服务器配置为在出站连接上添加
X-Amzn-Chime-Tenants
标头。添加以此示例所示分隔的 AppKey 和 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 标头中使用 AppKey 和 TenantID 的一些方法。
- 一个应用程序只有一个租户
-
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 中可以访问任何会话。已阻止所有其他的应用程序。