Menyiapkan OIDC penyedia 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 OIDC penyedia sebagai idP kumpulan identitas

OpenID Connect adalah standar terbuka untuk otentikasi yang didukung oleh sejumlah penyedia login. Dengan Amazon Cognito, Anda dapat 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 OIDC identitas (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 OIDC identitas dari IAM IdPs dalam Anda Akun AWS. Jika Anda ingin menambahkan SAML penyedia baru, pilih Buat penyedia baru untuk menavigasi ke IAM konsol.

  6. Untuk menyetel peran yang diminta Amazon Cognito saat mengeluarkan kredensional 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 kredensi atau mengeluarkan kredensi untuk peran yang Diautentikasi.

  7. Untuk mengubah tag utama yang ditetapkan Amazon Cognito saat mengeluarkan kredensi 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 penyedia Anda sebagai kuncinya. URI

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 RSA publik.

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

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

  5. Jika azp parameter tidak ada, periksa aud parameter terhadap klien yang terdaftar IDs di OIDC penyedia 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 memberikan token OIDC ID ke Amazon Cognito, terapkan protokol. AWSIdentityProviderManager

Saat Anda menerapkan logins metode ini, kembalikan kamus yang berisi nama OIDC penyedia 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, kunjungi AWSCognitoCredentialsProviderhalaman referensi 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);