对最终用户客户端应用程序进行身份验证以便进行 Amazon Chime SDK 消息传递 - Amazon Chime SDK

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

对最终用户客户端应用程序进行身份验证以便进行 Amazon Chime SDK 消息传递

您还可以通过最终用户客户端应用程序运行 Amazon Chime 软件开发工具包消息。 如何从后端服务发出 SDK 调用以便进行 Amazon Chime SDK 消息传递解释了如何进行 API 调用,例如 create-channel send-channel-message、和。 list-channel-messages浏览器和移动应用程序等最终用户客户端应用程序会进行相同的 API 调用。客户端应用程序还可以通过连接 WebSocket ,以接收其所属频道的消息和事件的实时更新。本节介绍如何向限于特定应用程序实例用户的客户端应用程序提供 IAM 凭证。最终用户获得这些凭证后,可以进行 如何从后端服务发出 SDK 调用以便进行 Amazon Chime SDK 消息传递 中所示的 API 调用。要查看客户端应用程序的完整演示,请参阅 https://github.com/aws-samples/amazon-chime-sdk/tree/main/apps/chat。有关接收来自客户端应用程序所属频道的实时消息的更多信息,请参阅 WebSockets 用于在 Amazon Chime 软件开发工具包消息中接收消息

向最终用户提供 IAM 凭证

Amazon Chime SDK 消息传递与 AWS 身份和访问管理 (IAM) 策略进行原生集成,用于对传入的请求进行身份验证。IAM 策略定义了个人用户可以做什么。可以制定 IAM 策略来为用例提供范围有限的凭证。有关为 Amazon Chime SDK 消息传递用户创建策略的更多信息,请参阅 用于 Amazon Chime SDK 消息传递的 IAM 角色示例

如果您已有身份提供商,则可以使用以下选项将现有身份与 Amazon Chime SDK 消息传递集成。

  • 您可以使用现有的身份提供商对用户进行身份验证,然后将身份验证服务与 AWS 安全令牌服务 (STS) 集成,为客户创建自己的凭证自动售货服务。STS 允许 APIs 担任 IAM 角色。

  • 如果您已经有兼容 SAML 或 OpenID 的身份提供商,我们建议您使用 Amazon Cognito 身份池,以便提取对 AWS STS AssumeRoleWithSAMLAssumeRoleWithWebIdentity 的调用。Amazon Cognito 集成了 OpenID、SAML 和公共身份提供商,如 Facebook、Login with Amazon、Google 和 Sign in with Apple。

如果您没有身份提供商,则可以开始使用 Amazon Cognito 用户群体。有关如何将 Amazon Cognito 与 Amazon Chime SDK 消息传递功能配合使用的示例,请参阅使用 Amazon Chime SDK 消息传递在应用程序中构建聊天功能

或者,您可以使用 AWS STS 创建自己的凭证售卖服务或构建自己的身份提供商。

使用 STS 出售凭证

如果您已经拥有 IDP(例如 ActiveDirectory LDAP),并且想要实现自定义凭证自动售卖服务,或者向未经身份验证的会议与会者授予聊天权限,则可以使用 STS API。AWSAssumeRole为此,您需要首先创建一个 Amazon Chime SDK 消息传递 SDK 角色。有关创建该角色的更多信息,请参阅创建将权限委派给 IAM 用户的角色

该 IAM 角色将有权访问应用程序将使用的 Amazon Chime SDK 消息传递操作,如下所示:

JSON

在本示例中,将此角色称为ChimeMessagingSampleAppUserRole

请注意用户 ARN 资源中ChimeMessagingSampleAppUserRole策略${my_application_user_id}中的会话标签。此会话标签在 AssumeRole API 调用中进行了参数化,以将返回的凭证限制为只拥有单个用户的权限。

使用已获得认证TagSession APIs 的 IAM 实体(例如 IAM 用户)调用AssumeRole和。 APIs 也可以由不同的 IAM 角色调用,例如AWS Lambda 运行角色。该 IAM 身份必须具有调用AssumeRoleTagSession开启的权限ChimeMessagingSampleAppUserRole

JSON

在本示例中,将此角色称为ChimeSampleAppServerRole

您需要将 ChimeMessagingSampleAppUserRole 的信任策略设置为允许 ChimeMessagingSampleAppServerRole 调用其上的 STS AssumeRole API。有关将 IAM 角色与信任策略结合使用的更多信息,请参阅如何将 IAM 角色与信任策略结合使用。您可以使用 AWS IAM 角色控制台将此策略添加到ChimeMessagingSampleAppUserRole。以下示例介绍了一种典型的信任关系。

JSON

在示例部署中,A mazon EC2 实例 AWS Lambda 或使用启动ChimeMessagingSampleAppServerRole。然后,服务器:

  1. 对客户端接收凭证的请求执行任何特定于应用程序的授权。

  2. ChimeMessagingSampleAppUserRole 上调用 STS AssumeRole,并使用标签来参数化 ${aws:PrincipalTag/my_applications_user_id}

  3. AssumeRole 调用中返回的凭证转发给用户。

以下示例介绍了在步骤 2 中扮演角色的 CLI 命令:

aws sts assume-role --role-arn arn:aws:iam::my_aws_account_id:role/ChimeMessagingSampleAppUserRole --role-session-name demo --tags Key=my_applications_user_id,Value=123456789