Akses Layanan AWS dari aplikasi ASP.NET Core menggunakan kumpulan identitas Amazon Cognito - AWS Prescriptive Guidance

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

Akses Layanan AWS dari aplikasi ASP.NET Core menggunakan kumpulan identitas Amazon Cognito

Bibhuti Sahu dan Marcelo Barbosa, Amazon Web Services

Ringkasan

Pola ini membahas bagaimana Anda dapat mengonfigurasi kumpulan pengguna Amazon Cognito dan kumpulan identitas, lalu mengaktifkan aplikasi ASP.NET Core untuk AWS mengakses sumber daya setelah otentikasi berhasil.

Amazon Cognito menyediakan otentikasi, otorisasi, dan manajemen pengguna untuk web dan aplikasi seluler Anda. Dua komponen utama Amazon Cognito adalah kumpulan pengguna dan kumpulan identitas.

Kolam pengguna adalah direktori pengguna di Amazon Cognito. Dengan kolam pengguna, pengguna Anda dapat masuk ke web atau aplikasi seluler Anda melalui Amazon Cognito. Pengguna Anda juga dapat masuk melalui penyedia identitas sosial seperti Google, Facebook, Amazon, atau Apple, dan melalui penyedia identitas SALL.

Kolam Identitas Amazon Cognito (gabungan identitas) memungkinkan Anda untuk membuat identitas unik untuk pengguna Anda dan menggabungkan mereka dengan penyedia identitas. Dengan kumpulan identitas, Anda dapat memperoleh AWS kredensi hak istimewa terbatas sementara untuk mengakses lainnya. Layanan AWS Sebelum Anda dapat mulai menggunakan kumpulan identitas Amazon Cognito baru Anda, Anda harus menetapkan satu atau beberapa peran AWS Identity and Access Management (IAM) untuk menentukan tingkat akses yang Anda ingin pengguna aplikasi Anda miliki ke sumber daya Anda. AWS Kolam identites mendefinisikan dua jenis identitas: terautentikasi dan tidak terautentikasi. Setiap tipe identitas dapat diberikan perannya sendiri di IAM. Identitas yang diautentikasi adalah milik pengguna yang diautentikasi oleh penyedia login publik (kumpulan pengguna Amazon Cognito, Facebook, Google, SAM, atau penyedia OpenID Connect) atau penyedia pengembang (proses otentikasi backend Anda sendiri), sedangkan identitas yang tidak diautentikasi biasanya milik pengguna tamu. Saat Amazon Cognito menerima permintaan pengguna, layanan menentukan apakah permintaan tersebut diautentikasi atau tidak diautentikasi, menentukan peran mana yang terkait dengan jenis autentikasi tersebut, dan kemudian menggunakan kebijakan yang dilampirkan pada peran tersebut untuk menanggapi permintaan tersebut. 

Prasyarat dan batasan

Prasyarat

  • An Akun AWS dengan izin Amazon Cognito dan IAM

  • Akses ke AWS sumber daya yang ingin Anda gunakan

  • ASP.NET Core 2.0.0 atau yang lebih baru

Arsitektur

Tumpukan teknologi

  • Amazon Cognito

  • ASP.NET Inti

Arsitektur target

Cara mengakses layanan AWS dari aplikasi ASP.NET Core menggunakan kumpulan identitas Amazon Cognito.

Alat

Alat, SDKs, dan Layanan AWS

Kode

File.zip terlampir menyertakan file contoh yang menggambarkan hal berikut:

  • Cara mengambil token akses untuk pengguna yang masuk

  • Cara menukar token akses dengan AWS kredensil

  • Cara mengakses layanan Amazon Simple Storage Service (Amazon S3) dengan kredensil AWS

Peran IAM untuk identitas yang diautentikasi

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "mobileanalytics:PutEvents", "cognito-sync:*", "cognito-identity:*", "s3:ListAllMyBuckets*" ], "Resource": [ "*" ] } ] }

Epik

TugasDeskripsiKeterampilan yang dibutuhkan

Membuat pengguna.

  1. Masuk ke AWS Management Console dan buka konsol Amazon Cognito.

  2. Pilih Kelola Kolam Pengguna.

  3. Di sudut kanan atas halaman, pilih Buat kolam pengguna.

  4. Berikan nama untuk kumpulan pengguna Anda, pilih Tinjau default, lalu pilih Buat kumpulan.

  5. Perhatikan ID kolam.

Developer

Tambahkan klien aplikasi.

Anda dapat membuat aplikasi untuk menggunakan halaman web bawaan untuk mendaftar dan masuk ke pengguna Anda.

  1. Pada bilah navigasi di sisi kiri halaman kumpulan pengguna, pilih Klien aplikasi di bawah Pengaturan umum, lalu pilih Tambahkan klien aplikasi.

  2. Beri nama aplikasi Anda, lalu pilih Buat klien aplikasi.

  3. Perhatikan ID klien aplikasi dan rahasia klien (pilih Tampilkan Detail untuk melihat rahasia klien).

Developer
TugasDeskripsiKeterampilan yang dibutuhkan

Buat kolam identitas.

  1. Di konsol Amazon Cognito, pilih Kelola Kolam Identitas, lalu pilih Buat kumpulan identitas baru.

  2. Ketik nama untuk kumpulan identitas.

  3. Jika Anda ingin mengaktifkan identitas yang tidak diautentikasi, pilih opsi itu dari bagian Identitas tidak diautentikasi.

  4. Di bagian Penyedia otentikasi, konfigurasikan kumpulan identitas Amazon Cognito dengan menyetel ID kumpulan pengguna dan ID klien aplikasi, lalu pilih Buat Pool.

Developer

Tetapkan peran IAM untuk kumpulan identitas.

Anda dapat mengedit peran IAM untuk pengguna yang diautentikasi dan tidak diautentikasi, atau mempertahankan default, lalu memilih Izinkan. Untuk pola ini, kami akan mengedit peran IAM yang diautentikasi dan menyediakan akses untuk. s3:ListAllMyBuckets Untuk kode contoh, lihat peran IAM yang disediakan sebelumnya di bagian Alat.

Developer

Salin ID kumpulan identitas.

Saat Anda memilih Izinkan di langkah sebelumnya, halaman Memulai dengan Amazon Cognito ditampilkan. Di halaman ini, Anda dapat menyalin ID kumpulan identitas dari bagian Dapatkan Kredensial AWS atau memilih Edit kumpulan identitas di kanan atas dan menyalin ID kumpulan identitas dari layar yang ditampilkan.

Developer
TugasDeskripsiKeterampilan yang dibutuhkan

Kloning contoh aplikasi web ASP.NET Core.

  1. Kloning contoh aplikasi web inti.NET dari https://github.com/aws/aws-aspnet-cognito-identity-provider.git.

  2. Arahkan ke samples folder dan buka solusinya. Dalam proyek ini, Anda akan mengonfigurasi appsettings.json file dan menambahkan halaman baru yang akan merender semua bucket S3 setelah berhasil masuk.

Developer

Tambahkan dependensi.

Tambahkan NuGet dependensi Amazon.AspNetCore.Identity.Cognito untuk aplikasi ASP.NET Core Anda.

Developer

Tambahkan tombol konfigurasi dan nilai keappsettings.json.

Sertakan kode dari appsettings.json file terlampir di appsettings.json file Anda, lalu ganti placeholder dengan nilai dari langkah sebelumnya.

Developer

Buat pengguna baru dan masuk.

Buat pengguna baru di kumpulan pengguna Amazon Cognito, dan verifikasi bahwa pengguna tersebut ada di bawah Pengguna dan Grup di kumpulan pengguna.

Developer

Buat Razor Page baru yang disebutMyS3Buckets.

Tambahkan ASP.NET Core Razor Page baru ke aplikasi sampel Anda, dan ganti konten untuk MyS3Bucket.cshtml dan MyS3Bucket.cshtml.cs dari sampel terlampir. Tambahkan halaman MyS3Bucket baru di bawah navigasi di halaman. _Layout.cshtml

Developer

Pemecahan Masalah

IsuSolusi

Setelah Anda membuka aplikasi sampel dari GitHub repositori, Anda mendapatkan kesalahan ketika Anda mencoba menambahkan NuGet paket ke proyek Sampel.

Di src folder, pastikan untuk menghapus dari referensi ke Amazon.AspNetCore.Identity.Cognito proyek dari Samples.sln file. Anda kemudian dapat menambahkan NuGet paket ke proyek Sampel tanpa masalah apa pun.

Sumber daya terkait

Lampiran

Untuk mengakses konten tambahan yang terkait dengan dokumen ini, unzip file berikut: attachment.zip