

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

# Konfigurasikan Otentikasi
<a name="configure-auth"></a>

 AWS SDK untuk 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
<a name="definitions"></a>

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

### AuthScheme
<a name="authscheme"></a>

 An [AuthScheme](https://pkg.go.dev/github.com/aws/smithy-go/transport/http#AuthScheme)adalah 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
<a name="authschemeresolver"></a>

 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](#auth-scheme-resolution-workflow). 

### Opsi
<a name="option"></a>

 Dikembalikan dari panggilan ke`ResolverAuthSchemes`, [Option mewakili opsi](https://pkg.go.dev/github.com/aws/smithy-go/auth#Option) 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
<a name="a-note-on-properties"></a>

 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. HTTPSigner](https://pkg.go.dev/github.com/aws/smithy-go/auth#Option)implementasi ketika SigV4 dipilih. 

### Identitas
<a name="identity"></a>

 [Identitas](https://pkg.go.dev/github.com/aws/smithy-go/auth#Identity) 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
<a name="identityresolver"></a>

 [IdentityResolver](https://pkg.go.dev/github.com/aws/smithy-go/auth#IdentityResolver)adalah antarmuka yang melaluinya sebuah `Identity` diambil. 

 [Versi konkret `IdentityResolver` ada di SDK dalam bentuk yang diketik dengan kuat (misalnya aws. CredentialsProvider](https://pkg.go.dev/github.com/aws/aws-sdk-go-v2/aws#CredentialsProvider)), SDK menangani pemetaan ini secara internal. 

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

### Signer
<a name="signer"></a>

 [Penandatangan](https://pkg.go.dev/github.com/aws/smithy-go/transport/http#Signer) 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](https://pkg.go.dev/github.com/aws/aws-sdk-go-v2/aws/signer/v4#HTTPSigner)), SDK menangani pemetaan ini secara internal. 

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

### AuthResolverParameters
<a name="authresolverparameters"></a>

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

 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
<a name="auth-scheme-resolution-workflow"></a>

 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](https://pkg.go.dev/github.com/aws/smithy-go/auth#Option) yang mungkin untuk operasi. 

1.  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) 

1.  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` 

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

1.  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). 

1.  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 (ID`smithy.api#noAuth`) dalam daftar, itu dipilih secara otomatis, karena tidak ada penyelesai identitas yang sesuai. 

## S yang didukung secara asli `AuthScheme`
<a name="natively-supported-authschemes"></a>

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


|  Nama  |  ID Skema  |  Penyelesai identitas  |  Signer  |  Catatan  | 
| --- | --- | --- | --- | --- | 
|  [SiGv4](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_aws-signing.html)  |  aws.auth\$1sigv4  |  [aws. CredentialsProvider](https://pkg.go.dev/github.com/aws/aws-sdk-go-v2/aws#Credentials)  |  [v4. HTTPSigner](https://pkg.go.dev/github.com/aws/aws-sdk-go-v2/aws/signer/v4#Signer)  |  Default saat ini untuk sebagian besar operasi AWS layanan.  | 
|  Sigv4a  |  aws.auth\$1sigv4a  |  aws. CredentialsProvider  |  T/A  |  Penggunaan Sigv4a terbatas saat ini, implementasi penandatangan bersifat internal. Lihat [pengumuman](https://github.com/aws/aws-sdk-go-v2/discussions/2812) ini untuk modul keikutsertaan baru aws-http-authyang memperlihatkan tujuan umum APIs untuk menandatangani permintaan HTTP.  | 
|  SIGV4Express  |  com.amazonaws.s3\$1sigv4express  |  [s3. ExpressCredentialsProvider](https://pkg.go.dev/github.com/aws/aws-sdk-go-v2/service/s3#ExpressCredentialsProvider)  |  v4. HTTPSigner  |  Digunakan untuk [Express One Zone](https://aws.amazon.com/s3/storage-classes/express-one-zone/).  | 
|  Pembawa HTTP  |  smithy.api\$1httpBearerAuth  |  [pembawa smithybearer. TokenProvider](https://pkg.go.dev/github.com/aws/smithy-go/auth/bearer#TokenProvider)  |  [Smithybearer.Signer](https://pkg.go.dev/github.com/aws/smithy-go/auth/bearer#Signer)  |  Digunakan oleh [codecatalyst](https://pkg.go.dev/github.com/aws/aws-sdk-go-v2/service/codecatalyst).  | 
|  Anonim  |  smithy.api\$1noAuth  |  tidak berlaku  |  T/A  |  Tidak ada otentikasi - tidak diperlukan identitas, dan permintaan tidak ditandatangani atau diautentikasi.  | 

### Konfigurasi identitas
<a name="identity-configuration"></a>

 Dalam AWS SDK untuk 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
<a name="signer-configuration"></a>

 Di AWS SDK untuk 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
<a name="custom-auth-scheme"></a>

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

1.  Mendefinisikan [AuthScheme](https://pkg.go.dev/github.com/aws/smithy-go/transport/http#AuthScheme)implementasi 

1.  Daftarkan skema pada daftar klien SDK `AuthSchemes` 

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