Mengakses Layanan AWS menggunakan kumpulan identitas setelah masuk - Amazon Cognito

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

Mengakses Layanan AWS menggunakan kumpulan identitas setelah masuk

Setelah pengguna Anda masuk dengan kumpulan pengguna, mereka dapat mengakses Layanan AWS dengan kredensil API sementara yang dikeluarkan dari kumpulan identitas.

Aplikasi web atau seluler Anda menerima token dari kumpulan pengguna. Saat Anda mengonfigurasi kumpulan pengguna sebagai penyedia identitas ke kumpulan identitas Anda, kumpulan identitas akan menukar token untuk AWS kredensi sementara. Kredensi ini dapat dicakup ke peran IAM dan kebijakannya yang memberi pengguna akses ke serangkaian sumber daya terbatas. AWS Untuk informasi selengkapnya, lihat Aliran otentikasi kumpulan identitas (identitas federasi).

Diagram berikut menunjukkan cara aplikasi masuk dengan kumpulan pengguna, mengambil kredensial kumpulan identitas, dan meminta aset dari sebuah. Layanan AWS

Diagram alir aplikasi yang mengautentikasi dengan kumpulan pengguna Amazon Cognito dan mengotorisasi akses AWS ke sumber daya dengan kumpulan identitas.

Anda dapat menggunakan kredensil kumpulan identitas untuk:

  • Buat permintaan otorisasi berbutir halus ke Izin Terverifikasi Amazon dengan kredensil pengguna Anda sendiri.

  • Connect ke Amazon API Gateway REST API atau AWS AppSync GraphQL API yang mengotorisasi koneksi dengan IAM.

  • Connect ke backend database seperti Amazon DynamoDB atau Amazon RDS yang mengotorisasi koneksi dengan IAM.

  • Ambil aset aplikasi dari bucket Amazon S3.

  • Memulai sesi dengan desktop WorkSpaces virtual Amazon.

Kumpulan identitas tidak beroperasi secara eksklusif dalam sesi yang diautentikasi dengan kumpulan pengguna. Mereka juga menerima otentikasi langsung dari penyedia identitas pihak ketiga dan dapat menghasilkan kredensil untuk pengguna tamu yang tidak diautentikasi.

Untuk informasi selengkapnya tentang penggunaan kumpulan identitas bersama dengan grup kumpulan pengguna untuk mengontrol akses ke AWS sumber daya Anda, lihat Menambahkan grup ke kumpulan pengguna danMenggunakan kontrol akses berbasis peran. Juga, untuk informasi lebih lanjut tentang kumpulan identitas dan AWS Identity and Access Management, lihatKonsep kolam identitas.

Menyiapkan kolam pengguna dengan AWS Management Console

Buat kolam pengguna Amazon Cognito dan buat catatan ID Kolam Pengguna dan ID Klien Aplikasi untuk setiap aplikasi klien Anda. Untuk informasi selengkapnya tentang membuat kolam pengguna ini, lihat Memulai dengan kumpulan pengguna.

Menyiapkan kolam identitas dengan AWS Management Console

Prosedur berikut menjelaskan cara menggunakan kumpulan identitas AWS Management Console untuk mengintegrasikan kumpulan identitas dengan satu atau beberapa kumpulan pengguna dan aplikasi klien.

Untuk menambahkan penyedia identitas kumpulan pengguna Amazon Cognito (iDP)
  1. Pilih kumpulan Identitas dari konsol Amazon Cognito. Pilih kumpulan identitas.

  2. Pilih tab Akses pengguna.

  3. Pilih Tambahkan penyedia identitas.

  4. Pilih kumpulan pengguna Amazon Cognito.

  5. Masukkan ID kumpulan Pengguna dan ID klien Aplikasi.

  6. Untuk menyetel peran yang diminta Amazon Cognito saat mengeluarkan kredensil kepada pengguna yang telah mengautentikasi dengan penyedia ini, konfigurasikan setelan Peran.

    1. Anda dapat memberi pengguna dari IDP itu peran Default yang Anda atur saat mengonfigurasi peran Terautentikasi, atau Anda dapat Memilih peran dengan aturan. Dengan IdP kumpulan pengguna Amazon Cognito, Anda juga dapat Memilih peran dengan klaim preferred_role dalam token. Untuk informasi lebih lanjut tentang cognito:preferred_role klaim, lihatMenetapkan nilai prioritas ke grup.

      1. Jika Anda memilih Pilih peran dengan aturan, masukkan Klaim sumber dari autentikasi pengguna Anda, Operator yang ingin Anda gunakan untuk membandingkan klaim dengan aturan, Nilai yang akan menyebabkan kecocokan dengan pilihan peran ini, dan Peran yang ingin Anda tetapkan saat penetapan peran cocok. Pilih Tambahkan yang lain untuk membuat aturan tambahan berdasarkan kondisi yang berbeda.

      2. Jika Anda memilih peran Pilih dengan klaim preferred_role dalam token, Amazon Cognito akan mengeluarkan kredensi untuk peran tersebut dalam klaim pengguna Anda. cognito:preferred_role Jika tidak ada klaim peran pilihan, Amazon Cognito mengeluarkan kredensil berdasarkan resolusi Peran Anda.

    2. Pilih Resolusi Peran. Jika klaim pengguna tidak sesuai dengan aturan, Anda dapat menolak kredensional atau mengeluarkan kredensi untuk peran Terautentikasi Anda.

  7. Untuk mengubah tag utama yang ditetapkan Amazon Cognito saat mengeluarkan kredensil kepada pengguna yang telah diautentikasi dengan penyedia ini, konfigurasikan Atribut untuk kontrol akses.

    • Untuk tidak menerapkan tag utama, pilih Tidak aktif.

    • Untuk menerapkan tag utama berdasarkan sub dan aud klaim, pilih Gunakan pemetaan default.

    • Untuk membuat skema atribut kustom Anda sendiri ke tag utama, pilih Gunakan pemetaan khusus. Kemudian masukkan kunci Tag yang ingin Anda sumber dari setiap Klaim yang ingin Anda wakili dalam tag.

  8. Pilih Simpan perubahan.

Mengintegrasikan kumpulan pengguna dengan kolam identitas

Setelah pengguna aplikasi Anda diautentikasi, tambahkan token identitas pengguna tersebut ke peta masuk di penyedia kredensialnya. Nama penyedia akan tergantung pada ID kolam pengguna Amazon Cognito Anda. Ini akan memiliki struktur sebagai berikut:

cognito-idp.<region>.amazonaws.com/<YOUR_USER_POOL_ID>

Anda dapat memperoleh nilai untuk <region>dari User Pool ID. Misalnya, jika ID kumpulan pengguna adalahus-east-1_EXAMPLE1, maka <region>adalahus-east-1. Jika ID kumpulan pengguna adalahus-west-2_EXAMPLE2, maka <region>adalahus-west-2.

JavaScript
var cognitoUser = userPool.getCurrentUser(); if (cognitoUser != null) { cognitoUser.getSession(function(err, result) { if (result) { console.log('You are now logged in.'); // Add the User's Id Token to the Cognito credentials login map. AWS.config.credentials = new AWS.CognitoIdentityCredentials({ IdentityPoolId: 'YOUR_IDENTITY_POOL_ID', Logins: { 'cognito-idp.<region>.amazonaws.com/<YOUR_USER_POOL_ID>': result.getIdToken().getJwtToken() } }); } }); }
Android
cognitoUser.getSessionInBackground(new AuthenticationHandler() { @Override public void onSuccess(CognitoUserSession session) { String idToken = session.getIdToken().getJWTToken(); Map<String, String> logins = new HashMap<String, String>(); logins.put("cognito-idp.<region>.amazonaws.com/<YOUR_USER_POOL_ID>", session.getIdToken().getJWTToken()); credentialsProvider.setLogins(logins); } });
iOS - objective-C
AWSServiceConfiguration *serviceConfiguration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUSEast1 credentialsProvider:nil]; AWSCognitoIdentityUserPoolConfiguration *userPoolConfiguration = [[AWSCognitoIdentityUserPoolConfiguration alloc] initWithClientId:@"YOUR_CLIENT_ID" clientSecret:@"YOUR_CLIENT_SECRET" poolId:@"YOUR_USER_POOL_ID"]; [AWSCognitoIdentityUserPool registerCognitoIdentityUserPoolWithConfiguration:serviceConfiguration userPoolConfiguration:userPoolConfiguration forKey:@"UserPool"]; AWSCognitoIdentityUserPool *pool = [AWSCognitoIdentityUserPool CognitoIdentityUserPoolForKey:@"UserPool"]; AWSCognitoCredentialsProvider *credentialsProvider = [[AWSCognitoCredentialsProvider alloc] initWithRegionType:AWSRegionUSEast1 identityPoolId:@"YOUR_IDENTITY_POOL_ID" identityProviderManager:pool];
iOS - swift
let serviceConfiguration = AWSServiceConfiguration(region: .USEast1, credentialsProvider: nil) let userPoolConfiguration = AWSCognitoIdentityUserPoolConfiguration(clientId: "YOUR_CLIENT_ID", clientSecret: "YOUR_CLIENT_SECRET", poolId: "YOUR_USER_POOL_ID") AWSCognitoIdentityUserPool.registerCognitoIdentityUserPoolWithConfiguration(serviceConfiguration, userPoolConfiguration: userPoolConfiguration, forKey: "UserPool") let pool = AWSCognitoIdentityUserPool(forKey: "UserPool") let credentialsProvider = AWSCognitoCredentialsProvider(regionType: .USEast1, identityPoolId: "YOUR_IDENTITY_POOL_ID", identityProviderManager:pool)