Konfigurasikan Otentikasi - AWS SDK for Go v2

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

Konfigurasikan Otentikasi

AWS SDK for Go Ini menyediakan kemampuan untuk mengkonfigurasi layanan perilaku otentikasi. Dalam kebanyakan kasus, konfigurasi default sudah cukup, tetapi mengonfigurasi otentikasi kustom memungkinkan perilaku tambahan seperti bekerja dengan fitur layanan pra-rilis.

Definisi

Bagian ini memberikan deskripsi tingkat tinggi dari komponen otentikasi di. AWS SDK for Go

AuthScheme

An AuthSchemeadalah antarmuka yang mendefinisikan alur kerja di mana SDK mengambil identitas pemanggil dan melampirkannya ke permintaan operasi.

Skema autentikasi menggunakan komponen-komponen berikut, dijelaskan secara rinci lebih lanjut di bawah ini:

  • ID unik yang mengidentifikasi skema

  • Penyelesai identitas, yang mengembalikan identitas pemanggil yang digunakan dalam proses penandatanganan (misalnya kredensyal Anda) AWS

  • Penandatangan, yang melakukan injeksi identitas pemanggil yang sebenarnya ke dalam permintaan transport operasi (misalnya header Authorization HTTP)

Setiap opsi klien layanan menyertakan AuthSchemes bidang, yang secara default diisi dengan daftar skema autentikasi yang didukung oleh layanan tersebut.

AuthSchemeResolver

Setiap opsi klien layanan mencakup AuthSchemeResolver bidang. Antarmuka ini, didefinisikan per layanan, adalah API yang dipanggil oleh SDK untuk menentukan opsi otentikasi yang mungkin untuk setiap operasi.

penting

Penyelesai skema autentikasi TIDAK menentukan skema autentikasi apa yang digunakan. Ini mengembalikan daftar skema yang dapat digunakan (“opsi”), skema akhir dipilih melalui algoritma tetap yang dijelaskan di sini.

Opsi

Dikembalikan dari panggilan keResolverAuthSchemes, Option mewakili opsi otentikasi yang mungkin.

Opsi terdiri dari tiga set informasi:

  • ID yang mewakili skema yang mungkin

  • Satu set properti buram yang akan diberikan kepada penyelesai identitas skema

  • Satu set properti buram yang akan diberikan kepada penandatangan skema

Catatan tentang properti

Untuk 99% kasus penggunaan, penelepon tidak perlu peduli dengan properti buram untuk resolusi dan penandatanganan identitas. SDK akan mengeluarkan properti yang diperlukan untuk setiap skema dan meneruskannya ke antarmuka yang diketik dengan kuat yang diekspos di SDK. Misalnya, penyelesai autentikasi default untuk layanan menyandikan opsi SigV4 agar memiliki properti penandatangan untuk nama dan wilayah penandatanganan, yang nilainya diteruskan ke v4 yang dikonfigurasi klien. HTTPSignerimplementasi ketika SigV4 dipilih.

Identitas

Identitas adalah representasi abstrak dari siapa pemanggil SDK.

Jenis identitas yang paling umum digunakan dalam SDK adalah seperangkat. aws.Credentials Untuk sebagian besar kasus penggunaan, penelepon tidak perlu menyibukkan diri Identity sebagai abstraksi dan dapat bekerja dengan tipe konkret secara langsung.

catatan

Untuk mempertahankan kompatibilitas mundur dan mencegah kebingungan API, tipe identitas AWS khusus SDK aws.Credentials tidak secara langsung memenuhi antarmuka. Identity Pemetaan ini ditangani secara internal.

IdentityResolver

IdentityResolveradalah antarmuka yang melaluinya sebuah Identity diambil.

Versi konkret IdentityResolver ada di SDK dalam bentuk yang diketik dengan kuat (misalnya aws. CredentialsProvider), SDK menangani pemetaan ini secara internal.

Penelepon hanya perlu mengimplementasikan IdentityResolver antarmuka secara langsung saat mendefinisikan skema autentikasi eksternal.

Signer

Penandatangan adalah antarmuka di mana permintaan dilengkapi dengan pemanggil yang diambil. Identity

Versi konkret yang Signer ada di SDK dalam bentuk yang diketik dengan kuat (misalnya v4. HTTPSigner), SDK menangani pemetaan ini secara internal.

Penelepon hanya perlu mengimplementasikan Signer antarmuka secara langsung saat mendefinisikan skema autentikasi eksternal.

AuthResolverParameters

Setiap layanan mengambil satu set input tertentu yang diteruskan ke fungsi resolusinya, yang didefinisikan dalam setiap paket layanan sebagaiAuthResolverParameters.

Parameter resolver dasar adalah sebagai berikut:

name jenis deskripsi
Operation string Nama operasi yang dipanggil.
Region string AWS Wilayah klien. Hanya hadir untuk layanan yang menggunakan SiGv4 [A].

Jika Anda menerapkan resolver Anda sendiri, Anda seharusnya tidak perlu membuat instance Anda sendiri dari parameternya. SDK akan mencari nilai per permintaan ini dan meneruskannya ke implementasi Anda.

Alur kerja resolusi skema autentikasi

Saat Anda memanggil operasi AWS layanan melalui SDK, urutan tindakan berikut akan terjadi setelah permintaan diserialisasi:

  1. SDK memanggil AuthSchemeResolver.ResolveAuthSchemes() API klien, mencari parameter input seperlunya, untuk mendapatkan daftar Opsi yang mungkin untuk operasi.

  2. SDK mengulangi daftar itu dan memilih skema pertama yang memenuhi kondisi berikut.

    • Skema dengan ID yang cocok hadir dalam AuthSchemes daftar klien sendiri

    • Penyelesai identitas skema ada (tidak-nil) pada Opsi klien (diperiksa melalui GetIdentityResolver metode skema, pemetaan ke jenis penyelesai identitas konkret yang dijelaskan di atas ditangani secara internal) (1)

  3. Dengan asumsi skema yang layak dipilih, SDK memanggil GetIdentityResolver() API-nya untuk mengambil identitas pemanggil. Misalnya, skema autentikasi SiGv4 bawaan akan dipetakan ke penyedia klien secara internal. Credentials

  4. SDK memanggil penyelesai identitas GetIdentity() (misalnya aws.CredentialProvider.Retrieve() untuk SigV4).

  5. SDK memanggil penyelesai titik akhir ResolveEndpoint() untuk menemukan titik akhir permintaan. Titik akhir dapat mencakup metadata tambahan yang memengaruhi proses penandatanganan (misalnya nama penandatanganan unik untuk Objek Lambda S3).

  6. SDK memanggil Signer() API skema autentikasi untuk mengambil penandatangannya, dan menggunakan SignRequest() API-nya untuk menandatangani permintaan dengan identitas pemanggil yang diambil sebelumnya.

(1) Jika SDK menemukan opsi anonim (IDsmithy.api#noAuth) dalam daftar, itu dipilih secara otomatis, karena tidak ada penyelesai identitas yang sesuai.

S yang didukung secara asli AuthScheme

Skema autentikasi berikut didukung secara native oleh. AWS SDK for Go

Nama ID Skema Penyelesai identitas Signer Catatan
SiGv4 aws.auth#sigv4 aws. CredentialsProvider v4. HTTPSigner Default saat ini untuk sebagian besar operasi AWS layanan.
Sigv4a aws.auth#sigv4a aws. CredentialsProvider T/A Penggunaan Sigv4a terbatas saat ini, implementasi penandatangan bersifat internal. Lihat pengumuman ini untuk modul keikutsertaan baru aws-http-authyang memperlihatkan tujuan umum APIs untuk menandatangani permintaan HTTP.
SIGV4Express com.amazonaws.s3#sigv4express s3. ExpressCredentialsProvider v4. HTTPSigner Digunakan untuk Express One Zone.
Pembawa HTTP smithy.api#httpBearerAuth pembawa smithybearer. TokenProvider Smithybearer.Signer Digunakan oleh codecatalyst.
Anonim smithy.api#noAuth tidak berlaku T/A Tidak ada otentikasi - tidak diperlukan identitas, dan permintaan tidak ditandatangani atau diautentikasi.

Konfigurasi identitas

Dalam AWS SDK for Go, komponen identitas skema autentikasi dikonfigurasi dalam klien SDK. Options SDK akan secara otomatis mengambil dan menggunakan nilai untuk komponen ini untuk skema yang dipilihnya saat operasi dipanggil.

catatan

Untuk alasan kompatibilitas mundur, SDK secara implisit mengizinkan penggunaan skema autentikasi anonim jika tidak ada penyelesai identitas yang dikonfigurasi. Ini dapat dicapai secara manual dengan menyetel semua penyelesai identitas pada klien Options ke nil (penyelesai identitas sigv4 juga dapat diatur ke). aws.AnonymousCredentials{}

Konfigurasi penandatangan

Di AWS SDK for Go, komponen penandatangan skema autentikasi dikonfigurasi di klien SDK. Options SDK akan secara otomatis mengambil dan menggunakan nilai untuk komponen ini untuk skema yang dipilihnya saat operasi dipanggil. Tidak diperlukan konfigurasi tambahan.

Skema autentikasi khusus

Untuk menentukan skema autentikasi khusus dan mengonfigurasinya untuk digunakan, pemanggil harus melakukan hal berikut:

  1. Mendefinisikan AuthSchemeimplementasi

  2. Daftarkan skema pada daftar klien SDK AuthSchemes

  3. Instrumen klien SDK AuthSchemeResolver untuk mengembalikan autentikasi Option dengan ID skema jika berlaku

Awas

Layanan berikut memiliki perilaku otentikasi yang unik atau disesuaikan. Kami menyarankan Anda mendelegasikan ke implementasi default dan membungkusnya jika Anda memerlukan perilaku otentikasi khusus:

Layanan Catatan
S3 Penggunaan bersyarat Sigv4a dan Sigv4Express tergantung pada input operasi.
EventBridge Penggunaan bersyarat Sigv4a tergantung pada input operasi.
Cognito Operasi tertentu hanya bersifat anonim.
SSO Operasi tertentu hanya bersifat anonim.
STS Operasi tertentu hanya bersifat anonim.