Otorisasi dengan Izin Terverifikasi Amazon - Amazon Cognito

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

Otorisasi dengan Izin Terverifikasi Amazon

Izin Terverifikasi Amazon adalah layanan otorisasi untuk aplikasi yang Anda buat. Saat Anda menambahkan kumpulan pengguna Amazon Cognito sebagai sumber identitas, aplikasi Anda dapat meneruskan akses kumpulan pengguna atau token identitas (ID) ke Izin Terverifikasi untuk mengizinkan atau menolak keputusan. Izin Terverifikasi mempertimbangkan properti pengguna Anda dan konteks permintaan berdasarkan kebijakan yang Anda tulis dalam Bahasa Kebijakan Cedar. Konteks permintaan dapat menyertakan pengenal untuk dokumen, gambar, atau sumber daya lain yang mereka minta, dan tindakan yang ingin diambil pengguna Anda pada sumber daya tersebut.

Aplikasi Anda dapat memberikan identitas pengguna atau token akses ke Izin Terverifikasi IsAuthorizedWithTokenatau permintaan BatchIsAuthorizedWithTokenAPI. Operasi API ini menerima pengguna Anda sebagai Principal dan membuat keputusan otorisasi untuk Resource hal yang ingin mereka akses. Action Kustom tambahan Context dapat berkontribusi pada keputusan akses terperinci.

Saat aplikasi Anda menampilkan token dalam permintaan IsAuthorizedWithToken API, Izin Terverifikasi akan melakukan validasi berikut.

  1. Kumpulan pengguna Anda adalah sumber identitas Izin Terverifikasi yang dikonfigurasi untuk penyimpanan kebijakan yang diminta.

  2. audKlaim client_id atau, masing-masing dalam token akses atau identitas Anda, cocok dengan ID klien aplikasi kumpulan pengguna yang Anda berikan ke Izin Terverifikasi. Untuk memverifikasi klaim ini, Anda harus mengonfigurasi validasi ID klien di sumber identitas Izin Terverifikasi.

  3. Token Anda tidak kedaluwarsa.

  4. Nilai token_use klaim dalam token Anda cocok dengan parameter yang Anda kirimkanIsAuthorizedWithToken. token_useKlaim harus access jika Anda meneruskannya ke accessToken parameter, dan id jika Anda meneruskannya ke identityToken parameter.

  5. Tanda tangan di token Anda berasal dari kunci web JSON yang diterbitkan (JWK) dari kumpulan pengguna Anda. Anda dapat melihat JWK Anda di. https://cognito-idp.Region.amazonaws.com/your user pool ID/.well-known/jwks.json

Token yang dicabut dan pengguna yang dihapus

Izin Terverifikasi hanya memvalidasi informasi yang diketahui dari sumber identitas Anda dan dari waktu kedaluwarsa token pengguna Anda. Izin Terverifikasi tidak memeriksa pencabutan token atau keberadaan pengguna. Jika Anda mencabut token pengguna atau menghapus profil pengguna dari kumpulan pengguna, Izin Terverifikasi masih menganggap token tersebut valid hingga kedaluwarsa.

Evaluasi kebijakan

Konfigurasikan kumpulan pengguna Anda sebagai sumber identitas untuk toko kebijakan Anda. Konfigurasikan aplikasi Anda untuk mengirimkan token pengguna Anda dalam permintaan ke Izin Terverifikasi. Untuk setiap permintaan, Izin Terverifikasi membandingkan klaim dalam token dengan kebijakan. Kebijakan Izin Terverifikasi seperti kebijakan IAM di. AWS Ini menyatakan prinsip, sumber daya, dan tindakan. Izin Terverifikasi merespons permintaan Anda Allow jika cocok dengan tindakan yang diizinkan dan tidak cocok dengan tindakan eksplisit; jika tidak, ia Deny merespons dengan. Deny Untuk informasi selengkapnya, lihat kebijakan Izin Terverifikasi Amazon di Panduan Pengguna Izin Terverifikasi Amazon.

Menyesuaikan token

Untuk mengubah, menambah, dan menghapus klaim pengguna yang ingin Anda tampilkan ke Izin Terverifikasi, sesuaikan konten dalam token akses dan identitas Anda dengan Pemicu Lambda generasi pra token file. Dengan pemicu pembuatan token pra, Anda dapat menambahkan dan memodifikasi klaim di token Anda. Misalnya, Anda dapat menanyakan database untuk atribut pengguna tambahan dan menyandikannya ke dalam token ID Anda.

catatan

Karena cara Izin Terverifikasi memproses klaim, jangan tambahkan klaim bernama cognitodev, atau custom dalam fungsi pembuatan token pra Anda. Ketika Anda menunjukkan awalan klaim yang dicadangkan ini tidak dalam format yang dibatasi titik dua seperti cognito:username tetapi sebagai nama klaim lengkap, permintaan otorisasi Anda gagal.

Untuk informasi selengkapnya tentang cara Izin Terverifikasi memetakan klaim di token Amazon Cognito ke kebijakan otorisasi, lihat Memetakan token Amazon Cognito ke skema Izin Terverifikasi.

Otorisasi API dengan Izin Terverifikasi

ID atau token akses Anda dapat mengotorisasi permintaan ke back-end Amazon API Gateway REST API dengan Izin Terverifikasi. Anda dapat membuat toko kebijakan dengan tautan langsung ke kumpulan pengguna dan API Anda. Dengan opsi mulai Mengatur dengan Cognito dan API Gateway, Izin Terverifikasi menambahkan sumber identitas kumpulan pengguna ke penyimpanan kebijakan, dan otorisasi Lambda ke API. Saat aplikasi Anda meneruskan token pembawa kumpulan pengguna ke API, otorisasi Lambda akan memanggil Izin Terverifikasi. Authorizer meneruskan token sebagai prinsipal dan jalur permintaan serta metode sebagai tindakan.

Diagram berikut menggambarkan alur otorisasi untuk API Gateway API dengan Izin Terverifikasi. Untuk perincian terperinci, lihat penyimpanan kebijakan terkait API di Panduan Pengguna Izin Terverifikasi Amazon.

Diagram yang menggambarkan aliran otorisasi API dengan Izin Terverifikasi Amazon. Aplikasi membuat permintaan ke API Amazon API Gateway. API memanggil otorisasi Lambda. Authorizer membuat permintaan API ke Izin Terverifikasi. Izin Terverifikasi memeriksa validitas token dan mengembalikan keputusan otorisasi.

Izin Terverifikasi menyusun otorisasi API di sekitar grup kumpulan pengguna. Karena ID dan token akses menyertakan cognito:groups klaim, toko kebijakan Anda dapat mengelola kontrol akses berbasis peran (RBAC) untuk API Anda dalam berbagai konteks aplikasi.

Memilih pengaturan toko kebijakan

Saat mengonfigurasi sumber identitas di toko kebijakan, Anda harus memilih apakah Anda ingin memproses akses atau token ID. Keputusan ini penting bagi cara mesin kebijakan Anda beroperasi. Token ID berisi atribut pengguna. Token akses berisi informasi kontrol akses pengguna: cakupan OAuth. Meskipun kedua jenis token memiliki informasi keanggotaan grup, kami umumnya merekomendasikan token akses untuk RBAC dengan penyimpanan kebijakan Izin Terverifikasi. Token akses menambah keanggotaan grup dengan cakupan yang dapat berkontribusi pada keputusan otorisasi. Klaim dalam token akses menjadi konteks dalam permintaan otorisasi.

Anda juga harus mengonfigurasi tipe entitas pengguna dan grup saat mengonfigurasi kumpulan pengguna sebagai sumber identitas. Jenis entitas adalah pengidentifikasi utama, tindakan, dan sumber daya yang dapat Anda referensikan dalam kebijakan Izin Terverifikasi. Entitas di toko kebijakan dapat memiliki hubungan keanggotaan, di mana satu entitas dapat menjadi anggota entitas induk. Dengan keanggotaan, Anda dapat mereferensikan grup utama, grup tindakan, dan grup sumber daya. Dalam kasus grup kumpulan pengguna, jenis entitas pengguna yang Anda tentukan harus merupakan anggota dari jenis entitas grup. Saat menyiapkan penyimpanan kebijakan terkait API atau mengikuti Penyiapan terpandu di konsol Izin Terverifikasi, toko kebijakan Anda secara otomatis memiliki hubungan orang tua-anggota ini.

Token ID dapat menggabungkan RBAC dengan kontrol akses berbasis atribut (ABAC). Setelah membuat toko kebijakan terkait API, Anda dapat menyempurnakan kebijakan Anda dengan atribut pengguna dan keanggotaan grup. Klaim atribut dalam token ID menjadi atribut utama dalam permintaan otorisasi. Kebijakan Anda dapat membuat keputusan otorisasi berdasarkan atribut utama.

Anda juga dapat mengonfigurasi toko kebijakan untuk menerima token dengan client_id klaim aud atau yang cocok dengan daftar klien aplikasi yang dapat diterima yang Anda berikan.

Contoh kebijakan untuk otorisasi API berbasis peran

Contoh kebijakan berikut dibuat dengan penyiapan penyimpanan kebijakan Izin Terverifikasi untuk PetStorecontoh REST API.

permit( principal in PetStore::UserGroup::"us-east-1_EXAMPLE|MyGroup", action in [ PetStore::Action::"get /pets", PetStore::Action::"get /pets/{petId}" ], resource );

Izin Terverifikasi mengembalikan Allow keputusan untuk permintaan otorisasi dari aplikasi Anda ketika:

  1. Aplikasi Anda meneruskan ID atau token akses di Authorization header sebagai token pembawa.

  2. Aplikasi Anda melewati token dengan cognito:groups klaim yang berisi stringMyGroup.

  3. Aplikasi Anda membuat HTTP GET permintaan untuk, misalnya, https://myapi.example.com/pets atauhttps://myapi.example.com/pets/scrappy.

Contoh kebijakan untuk pengguna Amazon Cognito

Kumpulan pengguna Anda juga dapat menghasilkan permintaan otorisasi ke Izin Terverifikasi dalam kondisi selain permintaan API. Anda dapat mengirimkan keputusan kontrol akses apa pun dalam aplikasi Anda ke toko kebijakan Anda. Misalnya, Anda dapat melengkapi keamanan Amazon DynamoDB atau Amazon S3 dengan kontrol akses berbasis atribut sebelum permintaan apa pun transit ke jaringan, sehingga mengurangi penggunaan kuota.

Contoh berikut menggunakan Bahasa Kebijakan Cedar untuk mengizinkan pengguna Keuangan yang melakukan autentikasi dengan satu klien aplikasi kumpulan pengguna untuk membaca dan menulis. example_image.png John, pengguna di aplikasi Anda, menerima token ID dari klien aplikasi Anda dan meneruskannya dalam permintaan GET ke URL yang memerlukan otorisasi. https://example.com/images/example_image.png Token ID John memiliki aud klaim ID klien aplikasi kumpulan pengguna Anda1234567890example. Fungsi Lambda generasi pra token Anda juga memasukkan klaim baru costCenter dengan nilai, untuk John, dari. Finance1234

permit ( principal, actions in [ExampleCorp::Action::"readFile", "writeFile"], resource == ExampleCorp::Photo::"example_image.png" ) when { principal.aud == "1234567890example" && principal.custom.costCenter like "Finance*" };

Badan permintaan berikut menghasilkan Allow respons.

{ "accesstoken": "[John's ID token]", "action": { "actionId": "readFile", "actionType": "Action" }, "resource": { "entityId": "example_image.png", "entityType": "Photo" } }

Bila Anda ingin menentukan prinsipal dalam kebijakan Izin Terverifikasi, gunakan format berikut:

permit ( principal == [Namespace]::[Entity]::"[user pool ID]"|"[user sub]", action, resource );

Berikut ini adalah contoh utama untuk pengguna dalam kumpulan pengguna dengan ID us-east-1_Example dengan sub, atau ID pengguna,973db890-092c-49e4-a9d0-912a4c0a20c7.

principal == ExampleCorp::User::"us-east-1_Example|973db890-092c-49e4-a9d0-912a4c0a20c7",

Bila Anda ingin menentukan grup pengguna dalam kebijakan Izin Terverifikasi, gunakan format berikut:

permit ( principal in [Namespace]::[Group Entity]::"[Group name]", action, resource );

Berikut ini adalah contoh

Kontrol akses berbasis atribut

Otorisasi dengan Izin Terverifikasi untuk aplikasi Anda, dan atribut untuk fitur kontrol akses kumpulan identitas Amazon Cognito AWS untuk kredensil, keduanya merupakan bentuk kontrol akses berbasis atribut (ABAC). Berikut ini adalah perbandingan fitur Izin Terverifikasi dan Amazon Cognito ABAC. Di ABAC, sistem memeriksa atribut entitas dan membuat keputusan otorisasi dari kondisi yang Anda tentukan.

Layanan Proses Hasil
Izin Terverifikasi Amazon Mengembalikan Allow atau Deny keputusan dari analisis kumpulan pengguna JWT. Akses ke sumber daya aplikasi berhasil atau gagal berdasarkan evaluasi kebijakan Cedar.
Kumpulan identitas Amazon Cognito (atribut untuk kontrol akses) Menetapkan tag sesi ke pengguna Anda berdasarkan atributnya. Ketentuan kebijakan IAM dapat memeriksa tag Allow atau akses Deny pengguna ke Layanan AWS. Sesi yang ditandai dengan AWS kredensi sementara untuk peran IAM.