Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Gunakan otorisasi API Gateway Lambda
Gunakan Lambda Authorizer (sebelumnya dikenal sebagai otorisasi kustom) untuk mengontrol akses ke API Anda. Saat klien membuat permintaan ke metode API Anda, API Gateway memanggil otorisasi Lambda Anda. Authorizer Lambda mengambil identitas pemanggil sebagai input dan mengembalikan kebijakan IAM sebagai output.
Gunakan Lambda Authorizer untuk menerapkan skema otorisasi kustom. Skema Anda dapat menggunakan parameter permintaan untuk menentukan identitas pemanggil atau menggunakan strategi otentikasi token pembawa seperti OAuth atau SAMP. Buat otorisasi Lambda di konsol API API Gateway REST API, menggunakan AWS CLI, atau SDK. AWS
Alur kerja otorisasi otorisasi Lambda
Diagram berikut menunjukkan alur kerja otorisasi untuk otorisasi Lambda.
Alur kerja otorisasi API Gateway Lambda
-
Klien memanggil metode pada API Gateway API, meneruskan token pembawa atau parameter permintaan.
-
API Gateway memeriksa apakah permintaan metode dikonfigurasi dengan otorisasi Lambda. Jika ya, API Gateway memanggil fungsi Lambda.
-
Fungsi Lambda mengautentikasi pemanggil. Fungsi ini dapat mengautentikasi dengan cara-cara berikut:
-
Dengan memanggil OAuth penyedia untuk mendapatkan token OAuth akses.
-
Dengan memanggil penyedia SAFL untuk mendapatkan pernyataan SAFL.
-
Dengan membuat kebijakan IAM berdasarkan nilai parameter permintaan.
-
Dengan mengambil kredensi dari database.
-
-
Fungsi Lambda mengembalikan kebijakan IAM dan pengidentifikasi utama. Jika fungsi Lambda tidak mengembalikan informasi itu, panggilan gagal.
-
API Gateway mengevaluasi kebijakan IAM.
-
Jika akses ditolak, API Gateway mengembalikan kode status HTTP yang sesuai, seperti
403 ACCESS_DENIED. -
Jika akses diizinkan, API Gateway akan memanggil metode.
Jika Anda mengaktifkan caching otorisasi, API Gateway menyimpan kebijakan agar fungsi otorisasi Lambda tidak dipanggil lagi. Pastikan kebijakan Anda berlaku untuk semua sumber daya dan metode di seluruh API Anda.
-
Anda dapat menyesuaikan 403
ACCESS_DENIED atau tanggapan 401 UNAUTHORIZED gateway. Untuk mempelajari selengkapnya, lihat Tanggapan gateway untuk REST APIs di API Gateway.
Memilih jenis otorisasi Lambda
Ada dua jenis otorisasi Lambda:
- Minta otorisasi Lambda berbasis parameter (otorisasi)
REQUEST -
REQUESTAuthorizer menerima identitas pemanggil dalam kombinasi header, parameter string kueri, dan variabel stageVariables. $context Anda dapat menggunakanREQUESTotorisasi untuk membuat kebijakan berbutir halus berdasarkan informasi dari beberapa sumber identitas, seperti variabel dan konteks.$context.path$context.httpMethodJika Anda mengaktifkan caching otorisasi untuk
REQUESTotorisasi, API Gateway memverifikasi bahwa semua sumber identitas yang ditentukan ada dalam permintaan. Jika sumber identifikasi tertentu hilang, null, atau kosong, API Gateway mengembalikan respons401 UnauthorizedHTTP tanpa memanggil fungsi otorisasi Lambda. Ketika beberapa sumber identitas didefinisikan, mereka semua digunakan untuk mendapatkan kunci cache otorisasi, dengan urutan dipertahankan. Anda dapat menentukan kunci cache berbutir halus dengan menggunakan beberapa sumber identitas.Jika Anda mengubah salah satu bagian kunci cache, dan menerapkan ulang API Anda, otorisasi akan membuang dokumen kebijakan yang di-cache dan membuat yang baru.
Jika Anda mematikan caching otorisasi untuk
REQUESTotorisasi, API Gateway langsung meneruskan permintaan ke fungsi Lambda. - Pengotorisasi Lambda berbasis token (otorisasi)
TOKEN -
TOKENAuthorizer menerima identitas penelepon dalam token pembawa, seperti JSON Web Token (JWT) atau token. OAuthJika Anda mengaktifkan caching otorisasi untuk
TOKENotorisasi, nama header yang ditentukan dalam sumber token menjadi kunci cache.Selain itu, Anda dapat menggunakan validasi token untuk memasukkan RegEx pernyataan. API Gateway melakukan validasi awal token input terhadap ekspresi ini dan memanggil fungsi otorisasi Lambda setelah validasi berhasil. Ini membantu mengurangi panggilan ke API Anda.
IdentityValidationExpressionProperti ini didukung hanya untukTOKENotorisasi. Untuk informasi selengkapnya, lihat x-amazon-apigateway-authorizer objek.
catatan
Kami menyarankan Anda menggunakan REQUEST otorisasi untuk mengontrol akses ke API Anda. Anda dapat mengontrol akses ke API berdasarkan beberapa sumber identitas saat menggunakan REQUEST otorisasi, dibandingkan dengan satu sumber identitas saat menggunakan TOKEN otorisasi. Selain itu, Anda dapat memisahkan kunci cache menggunakan beberapa sumber identitas untuk REQUEST otorisasi.
Contoh fungsi Lambda REQUEST authorizer
Kode contoh berikut membuat fungsi otorisasi Lambda yang memungkinkan permintaan jika HeaderAuth1 header yang disediakan klien, parameter QueryString1 kueri, dan variabel tahap StageVar1 semua cocok dengan nilai yang ditentukan,, danheaderValue1, queryValue1 masing-masing. stageValue1
Dalam contoh ini, fungsi Lambda Authorizer memeriksa parameter input dan bertindak sebagai berikut:
-
Jika semua nilai parameter yang diperlukan cocok dengan nilai yang diharapkan, fungsi authorizer mengembalikan respons
200 OKHTTP dan kebijakan IAM yang terlihat seperti berikut, dan permintaan metode berhasil: -
Jika tidak, fungsi authorizer mengembalikan respon
401 UnauthorizedHTTP, dan permintaan metode gagal.
Selain mengembalikan kebijakan IAM, fungsi otorisasi Lambda juga harus mengembalikan pengenal utama pemanggil. Secara opsional, ini dapat mengembalikan context objek yang berisi informasi tambahan yang dapat diteruskan ke backend integrasi. Untuk informasi selengkapnya, lihat Keluaran dari otorisasi API Gateway Lambda.
Dalam kode produksi, Anda mungkin perlu mengautentikasi pengguna sebelum memberikan otorisasi. Anda dapat menambahkan logika otentikasi dalam fungsi Lambda dengan memanggil penyedia otentikasi seperti yang diarahkan dalam dokumentasi untuk penyedia tersebut.
Contoh fungsi Lambda TOKEN authorizer
Kode contoh berikut membuat fungsi otorisasi TOKEN Lambda yang memungkinkan pemanggil untuk memanggil metode jika nilai token yang disediakan klien adalah. allow Penelepon tidak diizinkan untuk memanggil permintaan jika nilai tokennya. deny Jika nilai token adalah unauthorized atau string kosong, fungsi authorizer mengembalikan 401 UNAUTHORIZED respons.
Dalam contoh ini, ketika API menerima permintaan metode, API Gateway meneruskan token sumber ke fungsi otorisasi Lambda ini di atribut. event.authorizationToken Fungsi otorisasi Lambda membaca token dan bertindak sebagai berikut:
-
Jika nilai token
allow, fungsi authorizer mengembalikan respons200 OKHTTP dan kebijakan IAM yang terlihat seperti berikut, dan permintaan metode berhasil: -
Jika nilai token
deny, fungsi authorizer mengembalikan respons200 OKHTTP dan kebijakanDenyIAM yang terlihat seperti berikut, dan permintaan metode gagal:catatan
Di luar lingkungan pengujian, API Gateway mengembalikan respons
403 ForbiddenHTTP dan permintaan metode gagal. -
Jika nilai token
unauthorizedatau string kosong, fungsi authorizer mengembalikan respons401 UnauthorizedHTTP, dan panggilan metode gagal. -
Jika token adalah hal lain, klien menerima
500 Invalid tokenrespons, dan panggilan metode gagal.
Selain mengembalikan kebijakan IAM, fungsi otorisasi Lambda juga harus mengembalikan pengenal utama pemanggil. Secara opsional, ini dapat mengembalikan context objek yang berisi informasi tambahan yang dapat diteruskan ke backend integrasi. Untuk informasi selengkapnya, lihat Keluaran dari otorisasi API Gateway Lambda.
Dalam kode produksi, Anda mungkin perlu mengautentikasi pengguna sebelum memberikan otorisasi. Anda dapat menambahkan logika otentikasi dalam fungsi Lambda dengan memanggil penyedia otentikasi seperti yang diarahkan dalam dokumentasi untuk penyedia tersebut.
Contoh tambahan fungsi otorisasi Lambda
Daftar berikut menunjukkan contoh tambahan fungsi otorisasi Lambda. Anda dapat membuat fungsi Lambda di akun yang sama, atau akun lain, dari tempat Anda membuat API.
Untuk contoh fungsi Lambda sebelumnya, Anda dapat menggunakan built-in AWSLambdaBasicExecutionRole, karena fungsi ini tidak memanggil layanan lain AWS . Jika fungsi Lambda Anda memanggil AWS layanan lain, Anda harus menetapkan peran eksekusi IAM ke fungsi Lambda. Untuk membuat peran, ikuti instruksi dalam Peran AWS Lambda Eksekusi.
Contoh tambahan fungsi otorisasi Lambda
-
Untuk contoh aplikasi, lihat Buka Perbankan Brasil - Sampel GitHub Otorisasi pada
. -
Untuk contoh fungsi Lambda lainnya, lihat aws-apigateway-lambda-authorizer-blueprints
on. GitHub -
Anda dapat membuat otorisasi Lambda yang mengautentikasi pengguna menggunakan kumpulan pengguna Amazon Cognito dan mengotorisasi penelepon berdasarkan penyimpanan kebijakan menggunakan Izin Terverifikasi. Untuk informasi selengkapnya, lihat Kontrol akses berdasarkan atribut identitas dengan Izin Terverifikasi.
-
Konsol Lambda menyediakan cetak biru Python, yang dapat Anda gunakan dengan memilih Gunakan cetak biru dan memilih cetak biru. api-gateway-authorizer-python