

Versi 4 (V4) dari AWS SDK untuk .NET telah dirilis\$1

Untuk informasi tentang melanggar perubahan dan memigrasi aplikasi Anda, lihat [topik migrasi](https://docs.aws.amazon.com/sdk-for-net/v4/developer-guide/net-dg-v4.html).

 [https://docs.aws.amazon.com/sdk-for-net/v4/developer-guide/net-dg-v4.html](https://docs.aws.amazon.com/sdk-for-net/v4/developer-guide/net-dg-v4.html)

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

# Penyedia kredensi Amazon Cognito
<a name="cognito-creds-provider"></a>

**catatan**  
Informasi dalam topik ini khusus untuk proyek berdasarkan .NET Framework dan AWS SDK untuk .NET versi 3.3 dan sebelumnya.

 `Amazon.CognitoIdentity.CognitoAWSCredentials`, ditemukan di [AWSSDK. CognitoIdentity](https://www.nuget.org/packages/AWSSDK.CognitoIdentity/) NuGetpackage, adalah objek kredensial yang menggunakan Amazon Cognito dan AWS Security Token Service AWS STS() untuk mengambil kredensional untuk melakukan panggilan. AWS 

Langkah pertama dalam menyiapkan `CognitoAWSCredentials` adalah membuat “kumpulan identitas”. (Kumpulan identitas adalah penyimpan informasi identitas pengguna yang spesifik untuk akun Anda. Informasi tersebut dapat diambil kembali di seluruh platform klien, perangkat, dan sistem operasi, sehingga jika pengguna mulai menggunakan aplikasi di ponsel dan kemudian beralih ke tablet, informasi aplikasi yang bertahan masih tersedia untuk pengguna tersebut. Anda dapat membuat kumpulan identitas baru dari konsol Amazon Cognito. Jika Anda menggunakan konsol, itu juga akan memberi Anda informasi lain yang Anda butuhkan:
+ Nomor akun Anda - Nomor 12 digit, seperti 123456789012, yang unik untuk akun Anda.
+ Peran yang tidak diautentikasi ARN- Peran yang akan diasumsikan oleh pengguna yang tidak diautentikasi. Misalnya, peran ini dapat memberikan izin hanya-baca ke data Anda.
+ Peran yang diautentikasi ARN- Peran yang akan diasumsikan oleh pengguna yang diautentikasi. Peran ini dapat memberikan izin yang lebih luas untuk data Anda.

## Mengatur Cognito AWSCredentials
<a name="set-up-cognitoawscredentials"></a>

Contoh kode berikut menunjukkan cara mengatur`CognitoAWSCredentials`, yang kemudian dapat Anda gunakan untuk melakukan panggilan ke Amazon S3 sebagai pengguna yang tidak diautentikasi. Ini memungkinkan Anda melakukan panggilan hanya dengan jumlah minimum data yang diperlukan untuk mengautentikasi pengguna. Izin pengguna dikendalikan oleh peran, sehingga Anda dapat mengonfigurasi akses sesuai kebutuhan.

```
CognitoAWSCredentials credentials = new CognitoAWSCredentials(
    accountId,        // Account number
    identityPoolId,   // Identity pool ID
    unAuthRoleArn,    // Role for unauthenticated users
    null,             // Role for authenticated users, not set
    region);
using (var s3Client = new AmazonS3Client(credentials))
{
    s3Client.ListBuckets();
}
```

## Gunakan AWS sebagai pengguna yang tidak diautentikasi
<a name="use-aws-as-an-unauthenticated-user"></a>

Contoh kode berikut menunjukkan bagaimana Anda dapat mulai menggunakan AWS sebagai pengguna yang tidak diautentikasi, kemudian mengautentikasi melalui Facebook dan memperbarui kredensialnya untuk menggunakan kredensi Facebook. Dengan menggunakan pendekatan ini, Anda dapat memberikan kemampuan yang berbeda kepada pengguna yang diautentikasi melalui peran yang diautentikasi. Misalnya, Anda mungkin memiliki aplikasi telepon yang memungkinkan pengguna untuk melihat konten secara anonim, tetapi memungkinkan mereka untuk memposting jika mereka masuk dengan satu atau lebih penyedia yang dikonfigurasi.

```
CognitoAWSCredentials credentials = new CognitoAWSCredentials(
    accountId, identityPoolId,
    unAuthRoleArn,    // Role for unauthenticated users
    authRoleArn,      // Role for authenticated users
    region);
using (var s3Client = new AmazonS3Client(credentials))
{
    // Initial use will be unauthenticated
    s3Client.ListBuckets();

    // Authenticate user through Facebook
    string facebookToken = GetFacebookAuthToken();

    // Add Facebook login to credentials. This clears the current AWS credentials
    // and retrieves new AWS credentials using the authenticated role.
    credentials.AddLogin("graph.facebook.com", facebookAccessToken);

    // This call is performed with the authenticated role and credentials
    s3Client.ListBuckets();
}
```

`CognitoAWSCredentials`Objek menyediakan lebih banyak fungsionalitas jika Anda menggunakannya dengan `AmazonCognitoSyncClient` yang merupakan bagian dari AWS SDK untuk .NET. Jika Anda menggunakan keduanya `AmazonCognitoSyncClient` dan`CognitoAWSCredentials`, Anda tidak perlu menentukan `IdentityId` properti `IdentityPoolId` dan saat melakukan panggilan dengan`AmazonCognitoSyncClient`. Properti ini secara otomatis diisi dari`CognitoAWSCredentials`. Contoh kode berikutnya menggambarkan hal ini, serta peristiwa yang memberi tahu Anda setiap kali ada perubahan`IdentityId`. `CognitoAWSCredentials` `IdentityId`Dapat berubah dalam beberapa kasus, seperti ketika mengubah dari pengguna yang tidak diautentikasi ke yang diautentikasi.

```
CognitoAWSCredentials credentials = GetCognitoAWSCredentials();

// Log identity changes
credentials.IdentityChangedEvent += (sender, args) =>
{
    Console.WriteLine("Identity changed: [{0}] => [{1}]", args.OldIdentityId, args.NewIdentityId);
};

using (var syncClient = new AmazonCognitoSyncClient(credentials))
{
    var result = syncClient.ListRecords(new ListRecordsRequest
    {
        DatasetName = datasetName
        // No need to specify these properties
        //IdentityId = "...",
        //IdentityPoolId = "..."        
    });
}
```