驗證最終使用者用戶端應用程式 - Amazon Chime SDK

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

驗證最終使用者用戶端應用程式

您也可以從最終使用者用戶端應用程式執行 Amazon Chime SDK 訊息傳送。 從後端服務SDK撥打電話 說明如何API呼叫 create-channel send-channel-message和 list-channel-messages。瀏覽器和行動應用程式等最終使用者用戶端應用程式會進行這些相同的API呼叫。用戶端應用程式也可以透過 連線 WebSocket ,將訊息和事件的即時更新接收到其所屬頻道。本節說明如何將IAM憑證提供給範圍為特定應用程式執行個體使用者的用戶端應用程式。一旦最終使用者擁有這些憑證,他們可以進行 中顯示的API呼叫從後端服務SDK撥打電話。若要查看用戶端應用程式的完整示範,請參閱 https://github.com/aws-samples/amazon-chime-sdk/tree/main/apps/chat 。如需從用戶端應用程式所屬頻道接收即時訊息的詳細資訊,請參閱 使用 WebSockets 接收訊息

提供IAM憑證給最終使用者

Amazon Chime SDK 訊息會以原生方式與 AWS Identity and Access Management (IAM) 政策整合,以驗證傳入的請求。此IAM政策會定義個別使用者可採取的動作。IAM 政策可以製作,為您的使用案例提供範圍減少的有限憑證。如需為 Amazon Chime SDK 訊息傳送使用者建立政策的詳細資訊,請參閱 範例IAM角色

如果您有現有的身分提供者,您有下列選項可將現有身分與 Amazon Chime SDK 訊息整合。

  • 您可以使用現有的身分提供者來驗證使用者,然後將身分驗證服務與 AWS Security Token Service (STS) 整合,為用戶端建立自己的憑證販賣服務。STS 提供 APIs來擔任IAM角色。

  • 如果您已有 SAML或 OpenID 相容身分提供者,建議您使用 Amazon Cognito Identity Pools ,其會抽象呼叫 AWS STS AssumeRoleWithSAMLAssumeRoleWithWebIdentity。 Amazon Cognito 與 OpenID 、 和公有身分提供者整合SAML,例如 Facebook、使用 Amazon 登入、Google 和使用 Apple 登入。

如果您沒有身分提供者,您可以開始使用 Amazon Cognito 使用者集區。如需如何搭配 Amazon Chime 訊息功能使用 Amazon Cognito 的範例,請參閱使用 Amazon Chime SDK 訊息在您的應用程式中建置聊天功能。 SDK

或者,您可以使用 AWS STS來建立自己的憑證販賣服務,或建置自己的身分提供者。

使用 STS來 vend 憑證

如果您已經擁有 IDP 等 ActiveDirectory LDAP,而且想要實作自訂憑證販賣服務,或授予未驗證會議出席者聊天的存取權,您可以使用 AWS STS AssumeRole API。若要執行此操作,請先建立 Amazon Chime SDK 訊息SDK角色。如需建立該角色的詳細資訊,請參閱建立角色以將許可委派給IAM使用者

此IAM角色將具有應用程式將使用之 Amazon Chime SDK 訊息動作的許可,如下所示:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "chime:GetMessagingSessionEndpoint" ], "Resource": [ "*" ] }, { "Effect": "Allow", "Action": [ "chime:SendChannelMessage", "chime:ListChannelMessages", "chime:CreateChannelMembership", "chime:ListChannelMemberships", "chime:DeleteChannelMembership", "chime:CreateChannelModerator", "chime:ListChannelModerators", "chime:DescribeChannelModerator", "chime:CreateChannel", "chime:DescribeChannel", "chime:ListChannels", "chime:DeleteChannel", "chime:RedactChannelMessage", "chime:UpdateChannelMessage", "chime:Connect", "chime:ListChannelBans", "chime:CreateChannelBan", "chime:DeleteChannelBan", "chime:ListChannelMembershipsForAppInstanceUser" "chime:AssociateChannelFlow", "chime:DisassociateChannelFlow", "chime:GetChannelMessageStatus" ], "Resource": [ "{chime_app_instance_arn}/user/${aws:PrincipalTag/my_applications_user_id}", "{chime_app_instance_arn}/channel/*" ] } ] }

在此範例中,將此角色稱為 ChimeMessagingSampleAppUserRole

請注意使用者ARN資源中ChimeMessagingSampleAppUserRole政策${my_application_user_id}中的工作階段標籤。此工作階段標籤會在 中參數化 AssumeRole API 呼叫 以限制傳回給單一使用者的憑證。

AssumeRoleTagSession APIs 會使用已取得憑證的IAM實體呼叫 ,例如IAM使用者。APIs 也可以由不同的IAM角色呼叫 ,例如AWS Lambda 執行角色 。該IAM身分必須具有在 TagSession 上呼叫 AssumeRole和 的許可ChimeMessagingSampleAppUserRole

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "sts:AssumeRole", "sts:TagSession" ], "Resource": "arn:aws:iam::my_aws_account_id:role/ChimeMessagingSampleAppUserRole" } ] }

在此範例中,將此角色稱為 ChimeSampleAppServerRole

您需要ChimeMessagingSampleAppUserRole使用允許 呼叫 的信任政策來設定 ChimeMessagingSampleAppServerRoleSTSAssumeRole API 在上面。如需將信任政策與IAM角色搭配使用的詳細資訊,請參閱如何將信任政策與IAM角色搭配使用。您可以使用 AWS IAM角色主控台將此政策新增至 ChimeMessagingSampleAppUserRole。下列範例顯示典型的信任關係。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS":"arn:aws:iam::my_aws_account_id:role/ChimeMessagingSampleAppServerRole" } "Action": "sts:AssumeRole" } ] }

在範例部署中,Amazon EC2 執行個體或 AWS Lambda 會與 一起啟動ChimeMessagingSampleAppServerRole。然後伺服器:

  1. 對用戶端接收憑證的請求執行任何應用程式特定授權。

  2. 在 STSAssumeRole上呼叫 ChimeMessagingSampleAppUserRole,並標記參數化 ${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