Menyiapkan penyedia OIDC sebagai idP kumpulan identitas - Amazon Cognito

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

Menyiapkan penyedia OIDC sebagai idP kumpulan identitas

OpenID Connect adalah standar terbuka untuk otentikasi yang didukung oleh sejumlah penyedia login. Amazon Cognito mendukung Anda untuk menautkan identitas dengan penyedia OpenID Connect yang Anda konfigurasikan. AWS Identity and Access Management

Menambahkan penyedia OpenID Connect

Untuk informasi tentang cara membuat penyedia OpenID Connect, lihat Membuat penyedia identitas OpenID Connect (OIDC) di Panduan Pengguna.AWS Identity and Access Management

Mengaitkan penyedia dengan Amazon Cognito

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

  2. Pilih tab Akses pengguna.

  3. Pilih Tambahkan penyedia identitas.

  4. Pilih OpenID Connect (OIDC).

  5. Pilih penyedia identitas OIDC dari IAM IdPs di Anda. Akun AWS Jika Anda ingin menambahkan penyedia SAMP baru, pilih Buat penyedia baru untuk menavigasi ke konsol IAM.

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

    1. Anda dapat menetapkan pengguna dari IDP tersebut peran Default yang Anda atur saat mengonfigurasi peran Terautentikasi, atau Anda dapat Memilih peran dengan aturan.

      1. Jika Anda memilih Pilih peran dengan aturan, masukkan Klaim sumber dari autentikasi pengguna Anda, Operator yang ingin Anda bandingkan dengan klaim, 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. Pilih Resolusi Peran. Jika klaim pengguna tidak sesuai dengan aturan, Anda dapat menolak kredensyal atau mengeluarkan kredensyal untuk peran yang Diautentikasi.

  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.

    1. Untuk tidak menerapkan tag utama, pilih Tidak aktif.

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

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

Anda dapat mengaitkan beberapa penyedia OpenID Connect dengan kolam identitas tunggal.

Menggunakan OpenID Connect

Lihat dokumentasi penyedia Anda untuk cara login dan menerima token ID.

Setelah Anda memiliki token, tambahkan token ke peta login. Gunakan URI penyedia Anda sebagai kuncinya.

Memvalidasi token OpenID Connect

Saat pertama kali berintegrasi dengan Amazon Cognito, Anda mungkin menerima pengecualianInvalidToken. Penting untuk memahami bagaimana Amazon Cognito memvalidasi token OpenID Connect (OIDC).

catatan

Seperti yang ditentukan di sini (https://tools.ietf.org/html/rfc7523), Amazon Cognito memberikan masa tenggang 5 menit untuk menangani kemiringan jam antar sistem.

  1. issParameter harus cocok dengan kunci yang digunakan peta login (seperti login.provider.com).

  2. Tanda tangan harus valid. Tanda tangan harus dapat diverifikasi melalui kunci publik RSA.

  3. Sidik jari kunci publik sertifikat cocok dengan sidik jari yang Anda tetapkan di IAM saat Anda membuat penyedia OIDC Anda.

  4. Jika azp parameter ada, periksa nilai ini terhadap ID klien yang terdaftar di penyedia OIDC Anda.

  5. Jika azp parameter tidak ada, periksa aud parameter terhadap ID klien yang terdaftar di penyedia OIDC Anda.

Situs web jwt.io adalah sumber daya berharga yang dapat Anda gunakan untuk memecahkan kode token dan memverifikasi nilai-nilai ini.

Android

Map<String, String> logins = new HashMap<String, String>(); logins.put("login.provider.com", token); credentialsProvider.setLogins(logins);

iOS - Objective-C

credentialsProvider.logins = @{ "login.provider.com": token }

iOS - Swift

Untuk menyediakan token ID OIDC ke Amazon Cognito, terapkan protokol AWSIdentityProviderManager.

Saat Anda menerapkan logins metode ini, kembalikan kamus yang berisi nama penyedia OIDC yang Anda konfigurasikan. Kamus ini bertindak sebagai kunci, dan token ID saat ini dari pengguna yang diautentikasi bertindak sebagai nilai, seperti yang ditunjukkan pada contoh kode berikut.

class OIDCProvider: NSObject, AWSIdentityProviderManager { func logins() -> AWSTask<NSDictionary> { let completion = AWSTaskCompletionSource<NSString>() getToken(tokenCompletion: completion) return completion.task.continueOnSuccessWith { (task) -> AWSTask<NSDictionary>? in //login.provider.name is the name of the OIDC provider as setup in the Amazon Cognito console return AWSTask(result:["login.provider.name":task.result!]) } as! AWSTask<NSDictionary> } func getToken(tokenCompletion: AWSTaskCompletionSource<NSString>) -> Void { //get a valid oidc token from your server, or if you have one that hasn't expired cached, return it //TODO code to get token from your server //... //if error getting token, set error appropriately tokenCompletion.set(error:NSError(domain: "OIDC Login", code: -1 , userInfo: ["Unable to get OIDC token" : "Details about your error"])) //else tokenCompletion.set(result:"result from server id token") } }

Saat Anda membuat instanceAWSCognitoCredentialsProvider, lewati kelas yang mengimplementasikan AWSIdentityProviderManager sebagai nilai identityProviderManager dalam konstruktor. Untuk informasi lebih lanjut, buka halaman AWSCognitoCredentialsProviderreferensi dan pilih initWithRegionJenis:identityPoolId: identityProviderManager.

JavaScript

AWS.config.credentials = new AWS.CognitoIdentityCredentials({ IdentityPoolId: 'IDENTITY_POOL_ID', Logins: { 'login.provider.com': token } });

Unity

credentials.AddLogin("login.provider.com", token);

Xamarin

credentials.AddLogin("login.provider.com", token);