

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.

# Tutorial untuk SSO menggunakan aplikasi AWS CLI dan .NET
<a name="sso-tutorial-cli-and-app"></a>

Tutorial ini menunjukkan cara mengaktifkan SSO untuk aplikasi .NET dasar dan pengguna SSO uji. Ini menggunakan AWS CLI untuk menghasilkan token SSO sementara alih-alih [menghasilkannya secara terprogram](sso-tutorial-app-only.md).

Tutorial ini menunjukkan kepada Anda sebagian kecil dari fungsionalitas SSO di. AWS SDK untuk .NET Untuk detail lengkap tentang menggunakan IAM Identity Center dengan AWS SDK untuk .NET, lihat topik dengan [informasi latar belakang](sso.md). Dalam topik itu, lihat terutama deskripsi tingkat tinggi untuk skenario ini di subbagian yang disebut. [AWS CLI dan aplikasi.NET](sso.md#sso-generate-use-token-cli-and-app-summary)

**catatan**  
Beberapa langkah dalam tutorial ini membantu Anda mengkonfigurasi layanan seperti AWS Organizations dan IAM Identity Center. Jika Anda telah melakukan konfigurasi tersebut, atau jika Anda hanya tertarik pada kode, Anda dapat melompat ke bagian dengan [kode contoh](#sso-tutorial-cli-and-app-code).

## Prasyarat
<a name="sso-tutorial-cli-and-app-prereq"></a>
+ Konfigurasikan lingkungan pengembangan Anda jika Anda belum melakukannya. Ini dijelaskan dalam bagian seperti [Menginstal dan mengonfigurasi toolchain Anda untuk AWS SDK untuk .NET](net-dg-dev-env.md) dan[Memulai](net-dg-config.md).
+ Identifikasi atau buat setidaknya satu Akun AWS yang dapat Anda gunakan untuk menguji SSO. Untuk keperluan tutorial ini, ini disebut *test Akun AWS* atau hanya *test account*.
+ Identifikasi *pengguna SSO* yang dapat menguji SSO untuk Anda. Ini adalah orang yang akan menggunakan SSO dan aplikasi dasar yang Anda buat. Untuk tutorial ini, orang itu mungkin Anda (pengembang), atau orang lain. Kami juga merekomendasikan pengaturan di mana pengguna SSO bekerja pada komputer yang tidak ada di lingkungan pengembangan Anda. Namun, ini tidak sepenuhnya diperlukan.
+ Komputer pengguna SSO harus memiliki framework .NET yang diinstal yang kompatibel dengan yang Anda gunakan untuk mengatur lingkungan pengembangan Anda.
+ Pastikan bahwa AWS CLI versi 2 [diinstal](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html) pada komputer pengguna SSO. Anda dapat memeriksa ini dengan menjalankan `aws --version` command prompt atau terminal.

## Mengatur AWS
<a name="sso-tutorial-cli-and-app-setup-aws"></a>

Bagian ini menunjukkan kepada Anda cara mengatur berbagai AWS layanan untuk tutorial ini.

Untuk melakukan pengaturan ini, pertama-tama masuk ke pengujian Akun AWS sebagai administrator. Kemudian, lakukan hal berikut:

### Amazon S3
<a name="w2aac15b7c41c15b3b5"></a>

Buka [konsol Amazon S3](https://console.aws.amazon.com/s3/home) dan tambahkan beberapa ember yang tidak berbahaya. Kemudian dalam tutorial ini, pengguna SSO akan mengambil daftar bucket ini.

### AWS IAM
<a name="w2aac15b7c41c15b3b7"></a>

Buka [konsol IAM](https://console.aws.amazon.com/iam/home#/users) dan tambahkan beberapa pengguna IAM. Jika Anda memberikan izin kepada pengguna IAM, batasi izin ke beberapa izin hanya-baca yang tidak berbahaya. Kemudian dalam tutorial ini, pengguna SSO akan mengambil daftar pengguna IAM ini.

### AWS Organizations
<a name="w2aac15b7c41c15b3b9"></a>

Buka [AWS Organizations konsol](https://console.aws.amazon.com/organizations/) dan aktifkan Organizations. Untuk informasi selengkapnya, lihat [Membuat organisasi](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_org_create.html) di [Panduan AWS Organizations Pengguna](https://docs.aws.amazon.com/organizations/latest/userguide/).

Tindakan ini menambahkan tes Akun AWS ke organisasi sebagai *akun manajemen*. Jika Anda memiliki akun pengujian tambahan, Anda dapat mengundang mereka untuk bergabung dengan organisasi, tetapi melakukannya tidak diperlukan untuk tutorial ini.

### Pusat Identitas IAM
<a name="w2aac15b7c41c15b3c11"></a>

Buka [konsol Pusat Identitas IAM](https://console.aws.amazon.com/singlesignon/) dan aktifkan SSO. Lakukan verifikasi email jika perlu. Untuk informasi selengkapnya, lihat [Mengaktifkan Pusat Identitas IAM di Panduan Pengguna Pusat](https://docs.aws.amazon.com/singlesignon/latest/userguide/step1.html) [Identitas IAM](https://docs.aws.amazon.com/singlesignon/latest/userguide/).

Kemudian, lakukan konfigurasi berikut.

#### Konfigurasikan Pusat Identitas IAM
<a name="w2aac15b7c41c15b3c11b7b1"></a>

1. Buka halaman **Pengaturan**. Cari **“URL portal akses”** dan catat nilai untuk digunakan nanti dalam `sso_start_url` pengaturan.

1. Di spanduk Konsol Manajemen AWS, cari Wilayah AWS yang disetel saat Anda mengaktifkan SSO. Ini adalah menu dropdown di sebelah kiri ID. Akun AWS Rekam kode Wilayah untuk digunakan nanti dalam `sso_region` pengaturan. Kode ini akan mirip dengan`us-east-1`.

1. Buat pengguna SSO sebagai berikut:

   1. Buka halaman **Pengguna**.

   1. Pilih **Tambahkan pengguna** dan masukkan **Nama Pengguna**, **Alamat email**, **Nama depan, dan Nama** **belakang** pengguna. Lalu, pilih **Selanjutnya**.

   1. Pilih **Berikutnya** pada halaman untuk grup, lalu tinjau informasinya dan pilih **Tambah pengguna**.

1. Buat grup sebagai berikut:

   1. Buka halaman **Grup**.

   1. Pilih **Buat grup** dan masukkan **nama Grup** dan **Deskripsi** grup.

   1. Di bagian **Tambahkan pengguna ke grup**, pilih pengguna SSO uji yang Anda buat sebelumnya. Kemudian, pilih **Buat grup.**

1. Buat set izin sebagai berikut:

   1. Buka halaman **Set izin** dan pilih **Buat set izin**.

   1. Di bawah **Jenis set izin**, pilih **Set izin khusus** dan pilih **Berikutnya**.

   1. Buka **kebijakan Inline** dan masukkan kebijakan berikut:

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

****  

      ```
      {
          "Version":"2012-10-17",		 	 	 
          "Statement": [
              {
                  "Sid": "VisualEditor0",
                  "Effect": "Allow",
                  "Action": [
                      "s3:ListAllMyBuckets",
                      "iam:ListUsers"
                  ],
                  "Resource": "*"
              }
          ]
      }
      ```

------

   1. Untuk tutorial ini, masukkan `SSOReadOnlyRole` sebagai **nama set Izin**. Tambahkan **Deskripsi** jika Anda mau dan kemudian pilih **Berikutnya**.

   1. Tinjau informasi dan kemudian pilih **Buat**.

   1. Catat nama set izin untuk digunakan nanti dalam `sso_role_name` pengaturan.

1. Buka halaman **AWS akun** dan pilih AWS akun yang Anda tambahkan ke organisasi sebelumnya.

1. Di bagian **Ikhtisar** halaman itu, temukan **ID Akun** dan rekam untuk digunakan nanti dalam `sso_account_id` pengaturan.

1. Pilih tab **Pengguna dan grup**, lalu pilih **Tetapkan pengguna atau grup**.

1. Pada halaman **Tetapkan pengguna dan grup**, pilih tab **Grup**, pilih grup yang Anda buat sebelumnya, dan pilih **Berikutnya**.

1. Pilih set izin yang Anda buat sebelumnya dan pilih **Berikutnya**, lalu pilih **Kirim**. Konfigurasi memakan waktu beberapa saat.

## Buat contoh aplikasi
<a name="sso-tutorial-cli-and-app-code"></a>

Buat aplikasi berikut. Mereka akan dijalankan di komputer pengguna SSO.

### Daftar ember Amazon S3
<a name="sso-tutorial-cli-and-app-code-s3"></a>

Sertakan NuGet paket `AWSSDK.SSO` dan `AWSSDK.SSOOIDC` selain `AWSSDK.S3` dan`AWSSDK.SecurityToken`.

```
using System;
using System.Threading.Tasks;

// NuGet packages: AWSSDK.S3, AWSSDK.SecurityToken, AWSSDK.SSO, AWSSDK.SSOOIDC
using Amazon.Runtime;
using Amazon.Runtime.CredentialManagement;
using Amazon.S3;
using Amazon.S3.Model;
using Amazon.SecurityToken;
using Amazon.SecurityToken.Model;

namespace SSOExample.S3.CLI_login
{
    class Program
    {
        // Requirements:
        // - An SSO profile in the SSO user's shared config file.
        // - An active SSO Token.
        //    If an active SSO token isn't available, the SSO user should do the following:
        //    In a terminal, the SSO user must call "aws sso login --profile my-sso-profile".

        // Class members.
        private static string profile = "my-sso-profile";
        static async Task Main(string[] args)
        {
            // Get SSO credentials from the information in the shared config file.
            var ssoCreds = LoadSsoCredentials(profile);

            // Display the caller's identity.
            var ssoProfileClient = new AmazonSecurityTokenServiceClient(ssoCreds);
            Console.WriteLine($"\nSSO Profile:\n {await ssoProfileClient.GetCallerIdentityArn()}");

            // Display a list of the account's S3 buckets.
            // The S3 client is created using the SSO credentials obtained earlier.
            var s3Client = new AmazonS3Client(ssoCreds);
            Console.WriteLine("\nGetting a list of your buckets...");
            var listResponse = await s3Client.ListBucketsAsync();
            Console.WriteLine($"Number of buckets: {listResponse.Buckets.Count}");
            foreach (S3Bucket b in listResponse.Buckets)
            {
                Console.WriteLine(b.BucketName);
            }
            Console.WriteLine();
        }

        // Method to get SSO credentials from the information in the shared config file.
        static AWSCredentials LoadSsoCredentials(string profile)
        {
            var chain = new CredentialProfileStoreChain();
            if (!chain.TryGetAWSCredentials(profile, out var credentials))
                throw new Exception($"Failed to find the {profile} profile");
            return credentials;
        }
    }

    // Class to read the caller's identity.
    public static class Extensions
    {
        public static async Task<string> GetCallerIdentityArn(this IAmazonSecurityTokenService stsClient)
        {
            var response = await stsClient.GetCallerIdentityAsync(new GetCallerIdentityRequest());
            return response.Arn;
        }
    }
}
```

### Daftar pengguna IAM
<a name="sso-tutorial-cli-and-app-code-iam"></a>

Sertakan NuGet paket `AWSSDK.SSO` dan `AWSSDK.SSOOIDC` selain `AWSSDK.IdentityManagement` dan`AWSSDK.SecurityToken`.

```
using System;
using System.Threading.Tasks;

// NuGet packages: AWSSDK.IdentityManagement, AWSSDK.SecurityToken, AWSSDK.SSO, AWSSDK.SSOOIDC
using Amazon.Runtime;
using Amazon.Runtime.CredentialManagement;
using Amazon.IdentityManagement;
using Amazon.IdentityManagement.Model;
using Amazon.SecurityToken;
using Amazon.SecurityToken.Model;

namespace SSOExample.IAM.CLI_login
{
    class Program
    {
        // Requirements:
        // - An SSO profile in the SSO user's shared config file.
        // - An active SSO Token.
        //    If an active SSO token isn't available, the SSO user should do the following:
        //    In a terminal, the SSO user must call "aws sso login --profile my-sso-profile".

        // Class members.
        private static string profile = "my-sso-profile";
        static async Task Main(string[] args)
        {
            // Get SSO credentials from the information in the shared config file.
            var ssoCreds = LoadSsoCredentials(profile);

            // Display the caller's identity.
            var ssoProfileClient = new AmazonSecurityTokenServiceClient(ssoCreds);
            Console.WriteLine($"\nSSO Profile:\n {await ssoProfileClient.GetCallerIdentityArn()}");

            // Display a list of the account's IAM users.
            // The IAM client is created using the SSO credentials obtained earlier.
            var iamClient = new AmazonIdentityManagementServiceClient(ssoCreds);
            Console.WriteLine("\nGetting a list of IAM users...");
            var listResponse = await iamClient.ListUsersAsync();
            Console.WriteLine($"Number of IAM users: {listResponse.Users.Count}");
            foreach (User u in listResponse.Users)
            {
                Console.WriteLine(u.UserName);
            }
            Console.WriteLine();
        }

        // Method to get SSO credentials from the information in the shared config file.
        static AWSCredentials LoadSsoCredentials(string profile)
        {
            var chain = new CredentialProfileStoreChain();
            if (!chain.TryGetAWSCredentials(profile, out var credentials))
                throw new Exception($"Failed to find the {profile} profile");
            return credentials;
        }
    }

    // Class to read the caller's identity.
    public static class Extensions
    {
        public static async Task<string> GetCallerIdentityArn(this IAmazonSecurityTokenService stsClient)
        {
            var response = await stsClient.GetCallerIdentityAsync(new GetCallerIdentityRequest());
            return response.Arn;
        }
    }
}
```

Selain menampilkan daftar bucket Amazon S3 dan pengguna IAM, aplikasi ini menampilkan identitas pengguna ARN untuk profil berkemampuan SSO, yang ada dalam tutorial ini. `my-sso-profile`

## Instruksikan pengguna SSO
<a name="sso-tutorial-cli-and-app-user"></a>

Mintalah pengguna SSO untuk memeriksa email mereka dan menerima undangan SSO. Mereka diminta untuk mengatur kata sandi. Pesan mungkin membutuhkan waktu beberapa menit untuk tiba di kotak masuk pengguna SSO.

Berikan pengguna SSO aplikasi yang Anda buat sebelumnya.

Kemudian, mintalah pengguna SSO melakukan hal berikut:

1. Jika folder yang berisi AWS `config` file bersama tidak ada, buatlah. Jika folder memang ada dan memiliki subfolder bernama`.sso`, hapus subfolder itu.

   Lokasi folder ini biasanya `%USERPROFILE%\.aws` di Windows dan `~/.aws` di Linux dan macOS.

1. Buat AWS `config` file bersama di folder itu, jika perlu, dan tambahkan profil ke dalamnya sebagai berikut:

   ```
   [default]
   region = <default Region>
   
   [profile my-sso-profile]
   sso_start_url = <user portal URL recorded earlier>
   sso_region = <Region code recorded earlier>
   sso_account_id = <account ID recorded earlier>
   sso_role_name = SSOReadOnlyRole
   ```

1. Jalankan aplikasi Amazon S3. Pengecualian runtime muncul.

1. Jalankan AWS CLI perintah berikut:

   ```
   aws sso login --profile my-sso-profile
   ```

1. Di halaman login web yang dihasilkan, masuk. Gunakan nama pengguna dari pesan undangan dan kata sandi yang dibuat sebagai respons terhadap pesan tersebut.

1. Jalankan aplikasi Amazon S3 lagi. Aplikasi sekarang menampilkan daftar ember S3.

1. Jalankan aplikasi IAM. Aplikasi ini menampilkan daftar pengguna IAM. Ini benar meskipun login kedua tidak dilakukan. Aplikasi IAM menggunakan token sementara yang dibuat sebelumnya.

## Pembersihan
<a name="sso-tutorial-cli-and-app-cleanup"></a>

Jika Anda tidak ingin menyimpan sumber daya yang Anda buat selama tutorial ini, bersihkan. Ini mungkin AWS sumber daya atau sumber daya di lingkungan pengembangan Anda seperti file dan folder.