최종 사용자 클라이언트 애플리케이션 인증 - Amazon Chime SDK

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

최종 사용자 클라이언트 애플리케이션 인증

최종 사용자 클라이언트 애플리케이션에서 Amazon Chime SDK 메시징을 실행할 수도 있습니다. 백엔드 서비스에서 SDK 호출채널 생성, send-channel-message 및 와 같은 API 호출을 수행하는 방법에 대해 설명합니다. 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 자격 증명 및 액세스 관리 (IAM) 정책과 통합되어 수신 요청을 인증합니다. IAM 정책은 개별 사용자가 수행할 수 있는 작업을 정의합니다. IAM 정책은 사용 사례에 따라 범위가 축소된 제한된 자격 증명을 제공하도록 구성할 수 있습니다. Amazon Chime SDK 메시징 사용자를 위한 정책 생성에 대한 자세한 내용은 을 참조하십시오. IAM 역할 예시

기존 ID 공급자가 있는 경우 기존 ID를 Amazon Chime SDK 메시징과 통합하기 위한 다음과 같은 옵션이 있습니다.

자격 증명 공급자가 없는 경우 Amazon Cognito 사용자 풀을 시작할 수 있습니다. Amazon Chime SDK 메시징 기능과 함께 Amazon Cognito를 사용하는 방법의 예는 Amazon Chime SDK 메시징을 사용하여 애플리케이션에 채팅 기능 구축을 참조하십시오.

또는 를 사용하여 자체 자격 증명 벤딩 서비스를 만들거나 자체 ID 공급자를 구축할 수 있습니다. AWS STS

STS를 사용하여 자격 증명 판매하기

이미 ActiveDirectory LDAP와 같은 IDP가 있고 사용자 지정 자격 증명 벤딩 서비스를 구현하거나 인증되지 않은 회의 참석자에게 채팅 액세스 권한을 부여하려는 경우 STS API를 사용할 수 있습니다. AWS AssumeRole 이렇게 하려면 먼저 Chime 메시징 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/${my_applications_user_id}", "{chime_app_instance_arn}/channel/*" ] } ] }

이 예제에서는 이 역할을 the 라고 ChimeMessagingSampleAppUserRole합니다.

사용자 ARN ${my_application_user_id} 리소스의 ChimeMessagingSampleAppUserRole정책에 있는 세션 태그를 기록해 둡니다. 이 세션 태그는 AssumeRoleAPI 호출에서 매개변수화되어 반환되는 자격 증명을 단일 사용자의 권한으로 제한합니다.

AssumeRoleAPI 호출은 IAM 사용자와 같이 이미 자격 증명이 있는 IAM 엔티티를 사용하여 호출됩니다. AWS Lambda실행 역할과 같은 다른 IAM 역할로 호출할 수도 있습니다. 해당 IAM ID에는 를 AssumeRole 호출할 권한이 있어야 합니다. ChimeMessagingSampleAppUserRole

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

이 예제에서는 이 역할을 the 라고 ChimeSampleAppServerRole합니다.

STS AssumeRole API를 호출할 수 있도록 하는 신뢰 정책을 설정해야 합니다. ChimeMessagingSampleAppUserRoleChimeMessagingSampleAppServerRole IAM 역할에 신뢰 정책을 사용하는 방법에 대한 자세한 내용은 IAM 역할에 신뢰 정책을 사용하는 방법을 참조하십시오. AWSIAM 역할 콘솔을 사용하여 이 정책을 에 추가할 수 있습니다. 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. ChimeMessagingSampleAppUserRole 매개변수화하는 태그와 함께 AssumeRole STS를 호출합니다. ${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