

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

# Mengautentikasi aplikasi klien pengguna akhir untuk perpesanan Amazon Chime SDK
<a name="auth-client-apps"></a>

Anda juga dapat menjalankan pesan Amazon Chime SDK dari aplikasi klien pengguna akhir. [Melakukan panggilan SDK dari layanan back-end untuk perpesanan Amazon Chime SDK](call-from-backend.md)menjelaskan cara melakukan panggilan API seperti create-channel, send-channel-message, dan list-channel-messages. Aplikasi klien pengguna akhir seperti browser dan aplikasi seluler melakukan panggilan API yang sama ini. Aplikasi klien juga dapat terhubung melalui WebSocket untuk menerima pembaruan waktu nyata pada pesan dan acara ke saluran yang menjadi anggotanya. Bagian ini mencakup cara memberikan kredensil IAM ke aplikasi klien yang dicakup oleh pengguna instance aplikasi tertentu. Setelah pengguna akhir memiliki kredensil ini, mereka dapat melakukan panggilan API yang ditampilkan di. [Melakukan panggilan SDK dari layanan back-end untuk perpesanan Amazon Chime SDK](call-from-backend.md) Untuk melihat demo lengkap aplikasi klien, lihat [https://github.com/aws-samples/amazon-chime-sdk/tree/main/apps/chat](https://github.com/aws-samples/amazon-chime-sdk/tree/main/apps/chat). Untuk informasi selengkapnya tentang menerima pesan real-time dari saluran yang dimiliki aplikasi klien, lihat[Menggunakan WebSockets untuk menerima pesan di perpesanan Amazon Chime SDK](websockets.md).

## Memberikan kredensyal IAM kepada pengguna akhir
<a name="connect-id-provider"></a>

Pesan Amazon Chime SDK terintegrasi secara native dengan kebijakan AWS Identity and Access Management (IAM) untuk mengautentikasi permintaan yang masuk. Kebijakan IAM mendefinisikan apa yang dapat dilakukan pengguna individu. Kebijakan IAM dapat dibuat untuk memberikan kredensil terbatas cakupan untuk kasus penggunaan Anda. Untuk informasi selengkapnya tentang cara membuat kebijakan untuk pengguna perpesanan Amazon Chime SDK, lihat. [Contoh peran IAM untuk perpesanan Amazon Chime SDK](iam-roles.md)

Jika Anda memiliki penyedia identitas yang sudah ada, Anda memiliki opsi berikut untuk mengintegrasikan identitas yang ada dengan pesan Amazon Chime SDK.
+ Anda dapat menggunakan penyedia identitas yang ada untuk mengautentikasi pengguna dan kemudian mengintegrasikan layanan otentikasi dengan AWS Security Token Service (STS) untuk membuat layanan penjual kredenal Anda sendiri untuk klien. STS menyediakan API untuk mengasumsikan Peran IAM.
+ Jika Anda sudah memiliki penyedia identitas yang kompatibel dengan SAMP atau OpenID, sebaiknya gunakan Amazon [Cognito Identity Pools, yang mengabstraksikan](https://docs.aws.amazon.com/cognito/latest/developerguide/identity-pools.html) panggilan ke STS dan. AWS [https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRoleWithSAML.html](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRoleWithSAML.html) Amazon Cognito terintegrasi dengan OpenID, SAMP, dan penyedia identitas publik seperti Facebook, Login with Amazon, Google, dan Masuk dengan Apple.

Jika Anda tidak memiliki penyedia identitas, Anda dapat memulai dengan Amazon Cognito User Pools. Untuk contoh cara menggunakan Amazon Cognito dengan fitur perpesanan Amazon Chime SDK, [lihat Membangun fitur obrolan ke dalam aplikasi Anda dengan pesan Amazon Chime](https://aws.amazon.com/blogs/business-productivity/build-chat-features-into-your-application-with-amazon-chime-sdk-messaging/) SDK. 

Sebagai alternatif, Anda dapat menggunakan [AWS STS](https://docs.aws.amazon.com/STS/latest/APIReference/welcome.html)untuk membuat layanan penjual kredenal Anda sendiri atau membangun penyedia identitas Anda sendiri.

**Menggunakan STS untuk menjual kredensi**  
[Jika Anda sudah memiliki IDP seperti ActiveDirectory LDAP, dan Anda ingin menerapkan layanan penjual kredenal kustom, atau memberikan akses ke obrolan untuk peserta rapat yang tidak diautentikasi, Anda dapat menggunakan STS API.AWSAssumeRole](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html) Untuk melakukannya, pertama-tama Anda membuat Peran SDK perpesanan Amazon Chime SDK. Untuk informasi selengkapnya tentang membuat peran tersebut, lihat [Membuat peran untuk mendelegasikan izin ke pengguna IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-user.html).

Peran IAM akan memiliki izin untuk tindakan perpesanan Amazon Chime SDK yang akan digunakan aplikasi Anda, mirip dengan yang berikut:

------
#### [ JSON ]

****  

```
{
    "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": [
            "arn:aws:chime:{{us-east-1}}:{{123456789012}}:app-instance/{{app_instance_id}}/user/my_applications_user_id",
            "arn:aws:chime:{{us-east-1}}:{{123456789012}}:app-instance/{{app_instance_id}}/channel/*"
    ]
        }
    ]
}
```

------

Untuk contoh ini, sebut peran ini sebagai *ChimeMessagingSampleAppUserRole*.

Perhatikan tag sesi dalam *ChimeMessagingSampleAppUserRole*kebijakan `${my_application_user_id}` di sumber ARN pengguna. Tag sesi ini diparameterisasi dalam panggilan [https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html)API untuk membatasi kredensil yang dikembalikan ke izin untuk satu pengguna.

[https://docs.aws.amazon.com/STS/latest/APIReference/API_TagSesstion.html](https://docs.aws.amazon.com/STS/latest/APIReference/API_TagSesstion.html)API [https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html)dan dipanggil menggunakan entitas IAM yang sudah kredensialisasi, seperti pengguna IAM. API juga dapat dipanggil oleh peran IAM yang berbeda seperti [peran AWS Lambda run](https://docs.aws.amazon.com/lambda/latest/dg/lambda-intro-execution-role.html). Identitas IAM itu harus memiliki izin untuk memanggil `AssumeRole` dan `TagSession` mengaktifkan. *ChimeMessagingSampleAppUserRole* 

------
#### [ JSON ]

****  

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

------

 Untuk contoh ini, sebut peran ini sebagai *ChimeSampleAppServerRole*.

Anda perlu mengatur `ChimeMessagingSampleAppUserRole` dengan kebijakan kepercayaan yang memungkinkan `ChimeMessagingSampleAppServerRole` untuk memanggil [STS AssumeRole API](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html) di atasnya. Untuk informasi selengkapnya tentang penggunaan kebijakan kepercayaan dengan peran IAM, lihat [Cara menggunakan kebijakan kepercayaan dengan peran IAM](https://aws.amazon.com/blogs/security/how-to-use-trust-policies-with-iam-roles/). Anda dapat menggunakan Konsol Peran AWS IAM untuk menambahkan kebijakan ini ke. `ChimeMessagingSampleAppUserRole` Contoh berikut menunjukkan hubungan kepercayaan yang khas.

------
#### [ JSON ]

****  

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

------

 Dalam penerapan sampel, instans [Amazon](https://aws.amazon.com/ec2/) EC2, atau instans diluncurkan AWS Lambda dengan. `ChimeMessagingSampleAppServerRole` Server kemudian:

1. Melakukan otorisasi khusus aplikasi apa pun pada permintaan klien untuk menerima kredensil.

1. Memanggil `AssumeRole` STS `ChimeMessagingSampleAppUserRole` aktif, dengan tag yang membuat parameter. `${aws:PrincipalTag/my_applications_user_id}`

1. Meneruskan kredensil yang dikembalikan dalam `AssumeRole` panggilan ke pengguna.

Contoh berikut menunjukkan perintah CLI untuk mengasumsikan peran untuk langkah 2:

`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}} ` 