Tutorial untuk SSO hanya menggunakan aplikasi.NET - AWS SDK for .NET

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

Tutorial untuk SSO hanya menggunakan aplikasi.NET

Tutorial ini menunjukkan cara mengaktifkan SSO untuk aplikasi dasar dan pengguna SSO uji. Ini mengkonfigurasi aplikasi untuk menghasilkan token SSO sementara secara terprogram alih-alih menggunakan. AWS CLI

Tutorial ini menunjukkan kepada Anda sebagian kecil dari fungsionalitas SSO di. AWS SDK for .NET Untuk detail lengkap tentang menggunakan IAM Identity Center denganAWS SDK for .NET, lihat topik dengan informasi latar belakang. Dalam topik itu, lihat terutama deskripsi tingkat tinggi untuk skenario ini di subbagian yang disebut. Hanya aplikasi.NET

catatan

Beberapa langkah dalam tutorial ini membantu Anda mengkonfigurasi layanan seperti AWS Organizations dan IAM Identity Center. Jika Anda sudah melakukan konfigurasi itu, atau jika Anda hanya tertarik pada kode, Anda dapat melompat ke bagian dengan kode contoh.

Prasyarat

  • Konfigurasikan lingkungan pengembangan Anda jika Anda belum melakukannya. Ini dijelaskan dalam bagian seperti Instal dan konfigurasikan toolchain Anda danMulai.

  • 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.

Mengatur AWS

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

Buka konsol Amazon S3 dan tambahkan beberapa ember yang tidak berbahaya. Kemudian dalam tutorial ini, pengguna SSO akan mengambil daftar bucket ini.

AWSIAM

Buka konsol IAM 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

Buka AWS Organizationskonsol dan aktifkan Organizations. Untuk informasi selengkapnya, lihat Membuat organisasi di Panduan AWS Organizations Pengguna.

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

Buka konsol Pusat Identitas IAM dan aktifkan SSO. Lakukan verifikasi email jika perlu. Untuk informasi selengkapnya, lihat Mengaktifkan Pusat Identitas IAM di Panduan Pengguna Pusat Identitas IAM.

Kemudian, lakukan konfigurasi berikut.

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

  2. Di spandukAWS Management Console, 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 denganus-east-1.

  3. Buat pengguna SSO sebagai berikut:

    1. Buka halaman Pengguna.

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

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

  4. Buat grup sebagai berikut:

    1. Buka halaman Grup.

    2. Pilih Buat grup dan masukkan nama Grup dan Deskripsi grup.

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

  5. Buat set izin sebagai berikut:

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

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

    3. Buka kebijakan Inline dan masukkan kebijakan berikut:

      { "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Allow", "Action": [ "s3:ListAllMyBuckets", "iam:ListUsers" ], "Resource": "*" } ] }
    4. Untuk tutorial ini, masukkan SSOReadOnlyRole sebagai nama set Izin. Tambahkan Deskripsi jika Anda mau dan kemudian pilih Berikutnya.

    5. Tinjau informasi dan kemudian pilih Buat.

    6. Catat nama set izin untuk digunakan nanti dalam sso_role_name pengaturan.

  6. Buka halaman AWSakun dan pilih AWS akun yang Anda tambahkan ke organisasi sebelumnya.

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

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

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

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

Buat contoh aplikasi

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

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

using System; using System.Threading.Tasks; using System.Diagnostics; // 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.Programmatic_login { class Program { // Requirements: // - An SSO profile in the SSO user's shared config file. // 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"); var ssoCredentials = credentials as SSOAWSCredentials; ssoCredentials.Options.ClientName = "Example-SSO-App"; ssoCredentials.Options.SsoVerificationCallback = args => { // Launch a browser window that prompts the SSO user to complete an SSO login. // This method is only invoked if the session doesn't already have a valid SSO token. // NOTE: Process.Start might not support launching a browser on macOS or Linux. If not, // use an appropriate mechanism on those systems instead. Process.Start(new ProcessStartInfo { FileName = args.VerificationUriComplete, UseShellExecute = true }); }; return ssoCredentials; } } // 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; } } }

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

using System; using System.Threading.Tasks; using System.Diagnostics; // 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.Programmatic_login { class Program { // Requirements: // - An SSO profile in the SSO user's shared config file. // 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"); var ssoCredentials = credentials as SSOAWSCredentials; ssoCredentials.Options.ClientName = "Example-SSO-App"; ssoCredentials.Options.SsoVerificationCallback = args => { // Launch a browser window that prompts the SSO user to complete an SSO login. // This method is only invoked if the session doesn't already have a valid SSO token. // NOTE: Process.Start might not support launching a browser on macOS or Linux. If not, // use an appropriate mechanism on those systems instead. Process.Start(new ProcessStartInfo { FileName = args.VerificationUriComplete, UseShellExecute = true }); }; return ssoCredentials; } } // 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

Aplikasi ini melakukan tugas masuk SSO dengan menyediakan metode callback di properti Options dari objek SSO. AWSCredentials

Instruksikan pengguna SSO

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 yang disebut.sso, hapus subfolder itu.

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

  2. 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
  3. Jalankan aplikasi Amazon S3.

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

  5. Saat login selesai, aplikasi menampilkan daftar bucket S3.

  6. 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

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.