

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

# Configurazione dell'autenticazione
<a name="configure-auth"></a>

 AWS SDK per Go Fornisce la possibilità di configurare il servizio di comportamento di autenticazione. Nella maggior parte dei casi, la configurazione predefinita è sufficiente, ma la configurazione dell'autenticazione personalizzata consente di adottare comportamenti aggiuntivi, ad esempio l'utilizzo di funzionalità di servizio precedenti al rilascio. 

## Definizioni
<a name="definitions"></a>

 Questa sezione fornisce una descrizione di alto livello dei componenti di autenticazione di. AWS SDK per Go

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

 An [AuthScheme](https://pkg.go.dev/github.com/aws/smithy-go/transport/http#AuthScheme)è l'interfaccia che definisce il flusso di lavoro attraverso il quale l'SDK recupera l'identità del chiamante e la allega a una richiesta di operazione. 

 Uno schema di autenticazione utilizza i seguenti componenti, descritti in dettaglio più avanti: 
+  Un ID univoco che identifica lo schema 
+  Un risolutore di identità, che restituisce l'identità del chiamante utilizzata nel processo di firma (ad esempio le credenziali) AWS 
+  Un firmatario, che esegue l'inserimento effettivo dell'identità del chiamante nella richiesta di trasporto dell'operazione (ad esempio l'intestazione HTTP) `Authorization` 

 Ogni opzione del client di servizio include un `AuthSchemes` campo, che per impostazione predefinita viene compilato con l'elenco degli schemi di autenticazione supportati da quel servizio. 

### AuthSchemeResolver
<a name="authschemeresolver"></a>

 Ogni opzione del client di servizio include un `AuthSchemeResolver` campo. Questa interfaccia, definita per servizio, è l'API chiamata dall'SDK per determinare le possibili opzioni di autenticazione per ogni operazione. 

**Importante**  
 Il resolver dello schema di autenticazione NON impone quale schema di autenticazione viene utilizzato. [Restituisce un elenco di schemi che *possono* essere utilizzati («opzioni»), lo schema finale viene selezionato tramite un algoritmo fisso descritto qui.](#auth-scheme-resolution-workflow) 

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

 Restituita da una chiamata a`ResolverAuthSchemes`, un'[opzione](https://pkg.go.dev/github.com/aws/smithy-go/auth#Option) rappresenta una possibile opzione di autenticazione. 

 Un'opzione è composta da tre set di informazioni: 
+  Un ID che rappresenta lo schema possibile 
+  Un insieme opaco di proprietà da fornire al risolutore di identità dello schema 
+  Un insieme opaco di proprietà da fornire al firmatario dello schema 

#### Una nota sulle proprietà
<a name="a-note-on-properties"></a>

 Nel 99% dei casi d'uso, i chiamanti non devono preoccuparsi delle proprietà opache per la risoluzione e la firma delle identità. L'SDK estrarrà le proprietà necessarie per ogni schema e le passerà alle interfacce fortemente tipizzate esposte nell'SDK. [Ad esempio, il resolver di autenticazione predefinito per i servizi codifica l'opzione sigV4 in modo da avere proprietà del firmatario per il nome e l'area della firma, i cui valori vengono passati alla v4 configurata dal client. HTTPSigner](https://pkg.go.dev/github.com/aws/smithy-go/auth#Option)implementazione quando è selezionato SigV4. 

### Identità
<a name="identity"></a>

 Un'[identità](https://pkg.go.dev/github.com/aws/smithy-go/auth#Identity) è una rappresentazione astratta di chi è il chiamante dell'SDK. 

 Il tipo di identità più comune utilizzato nell'SDK è un insieme di. `aws.Credentials` Nella maggior parte dei casi d'uso, il chiamante non deve preoccuparsi di qualcosa `Identity` di astratto e può lavorare direttamente con i tipi concreti. 

**Nota**  
 Per preservare la compatibilità con le versioni precedenti ed evitare confusione tra le API, il tipo di identità AWS specifico dell'SDK `aws.Credentials` non soddisfa direttamente l'interfaccia. `Identity` Questa mappatura viene gestita internamente. 

### IdentityResolver
<a name="identityresolver"></a>

 [IdentityResolver](https://pkg.go.dev/github.com/aws/smithy-go/auth#IdentityResolver)è l'interfaccia attraverso la quale viene recuperato un `Identity` file. 

 [Nell'SDK `IdentityResolver` esistono versioni concrete in forma fortemente tipizzata (ad esempio aws. CredentialsProvider](https://pkg.go.dev/github.com/aws/aws-sdk-go-v2/aws#CredentialsProvider)), l'SDK gestisce questa mappatura internamente. 

 Un chiamante dovrà solo implementare direttamente l'`IdentityResolver`interfaccia quando definisce uno schema di autenticazione esterno. 

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

 [Signer](https://pkg.go.dev/github.com/aws/smithy-go/transport/http#Signer) è l'interfaccia attraverso la quale una richiesta viene integrata con il chiamante recuperato. `Identity` 

 [Nell'SDK `Signer` esistono versioni concrete in forma fortemente tipizzata (ad esempio v4). HTTPSigner](https://pkg.go.dev/github.com/aws/aws-sdk-go-v2/aws/signer/v4#HTTPSigner)), l'SDK gestisce questa mappatura internamente. 

 Un chiamante dovrà solo implementare direttamente l'`Signer`interfaccia quando definisce uno schema di autenticazione esterno. 

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

 Ogni servizio accetta un set specifico di input che vengono passati alla sua funzione di risoluzione, definita in ogni pacchetto di servizi come. `AuthResolverParameters` 

 I parametri del resolver di base sono i seguenti: 


|  nome  |  tipo  |  description  | 
| --- | --- | --- | 
|  Operation  |  string  |  Il nome dell'operazione che viene richiamata.  | 
|  Region  |  string  |  La AWS regione del cliente. Presente solo per i servizi che utilizzano SigV4 [A].  | 

 Se state implementando il vostro resolver, non dovreste mai aver bisogno di costruire una vostra istanza dei suoi parametri. L'SDK genererà questi valori per ogni richiesta e li passerà all'implementazione. 

## Flusso di lavoro per la risoluzione dello schema di autenticazione
<a name="auth-scheme-resolution-workflow"></a>

 Quando si chiama un'operazione AWS di servizio tramite l'SDK, dopo la serializzazione della richiesta si verifica la seguente sequenza di azioni: 

1.  L'SDK richiama l'`AuthSchemeResolver.ResolveAuthSchemes()`API del client, fornendo i parametri di input necessari, per ottenere un elenco di possibili [opzioni](https://pkg.go.dev/github.com/aws/smithy-go/auth#Option) per l'operazione. 

1.  L'SDK esegue un'iterazione su tale elenco e seleziona il primo schema che soddisfa le seguenti condizioni. 
   +  Uno schema con ID corrispondente è presente nell'elenco del client `AuthSchemes` 
   +  Il risolutore di identità dello schema esiste (non è presente`nil`) nelle Opzioni del client (verificato tramite il `GetIdentityResolver` metodo dello schema, la mappatura ai tipi di risolutori di identità concreti descritti sopra viene gestita internamente) (1) 

1.  Supponendo che sia stato selezionato uno schema valido, l'SDK richiama la sua API per recuperare l'identità del chiamante. `GetIdentityResolver()` Ad esempio, lo schema di autenticazione SigV4 integrato verrà mappato internamente al provider del client. `Credentials` 

1.  L'SDK chiama i risolutori di identità (ad esempio per SigV4). `GetIdentity()` `aws.CredentialProvider.Retrieve()` 

1.  L'SDK chiama i resolver degli endpoint per trovare l'endpoint per la richiesta. `ResolveEndpoint()` L'endpoint può includere metadati aggiuntivi che influenzano il processo di firma (ad esempio un nome di firma univoco per S3 Object Lambda). 

1.  L'SDK chiama l'API dello schema di autenticazione per recuperare il firmatario e utilizza l'`Signer()`API per firmare la richiesta con l'identità del chiamante recuperata in precedenza. `SignRequest()` 

 (1) Se l'SDK rileva l'opzione anonima (ID`smithy.api#noAuth`) nell'elenco, viene selezionata automaticamente, poiché non esiste un risolutore di identità corrispondente. 

## Supportato nativamente s `AuthScheme`
<a name="natively-supported-authschemes"></a>

 I seguenti schemi di autenticazione sono supportati nativamente da. AWS SDK per Go


|  Nome  |  ID dello schema  |  Risolutore di identità  |  Signer  |  Note  | 
| --- | --- | --- | --- | --- | 
|  [SIG V4](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_aws-signing.html)  |  aws.auth\$1sigv4  |  [leggi. 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)  |  L'impostazione predefinita corrente per la maggior parte delle operazioni AWS di servizio.  | 
|  SigV4a  |  aws.auth\$1sigv4a  |  leggi. CredentialsProvider  |  N/A  |  L'utilizzo di SigV4a è limitato al momento, l'implementazione del firmatario è interna. Leggete questo [annuncio](https://github.com/aws/aws-sdk-go-v2/discussions/2812) per scoprire un nuovo modulo opt-in aws-http-authche illustra lo scopo generale della firma delle richieste HTTP. APIs  | 
|  SIGV4Express  |  com.amazonaws.s3\$1sigv4express  |  [s3. ExpressCredentialsProvider](https://pkg.go.dev/github.com/aws/aws-sdk-go-v2/service/s3#ExpressCredentialsProvider)  |  v4. HTTPSigner  |  Usato per [Express One Zone](https://aws.amazon.com/s3/storage-classes/express-one-zone/).  | 
|  Portatore HTTP  |  smithy.api\$1httpBearerAuth  |  [portatore di fucina. TokenProvider](https://pkg.go.dev/github.com/aws/smithy-go/auth/bearer#TokenProvider)  |  [Smithy Bearer. Firmatario](https://pkg.go.dev/github.com/aws/smithy-go/auth/bearer#Signer)  |  [Usato da codecatalyst.](https://pkg.go.dev/github.com/aws/aws-sdk-go-v2/service/codecatalyst)  | 
|  Anonimo  |  smithy.api\$1noAuth  |  N/A  |  n/a  |  Nessuna autenticazione: non è richiesta alcuna identità e la richiesta non è firmata o autenticata.  | 

### Configurazione dell'identità
<a name="identity-configuration"></a>

 In AWS SDK per Go, i componenti di identità di uno schema di autenticazione sono configurati nel client SDK. `Options` L'SDK raccoglierà e utilizzerà automaticamente i valori di questi componenti per lo schema selezionato quando viene chiamata un'operazione. 

**Nota**  
 Per motivi di compatibilità con le versioni precedenti, l'SDK consente implicitamente l'uso dello schema di autenticazione anonimo se non sono configurati risolutori di identità. Ciò può essere ottenuto manualmente impostando tutti i resolver di identità su un client (il resolver di identità sigv4 può anche `Options` essere impostato su`nil`). `aws.AnonymousCredentials{}` 

### Configurazione del firmatario
<a name="signer-configuration"></a>

 In AWS SDK per Go, i componenti firmatari di uno schema di autenticazione sono configurati nel client SDK. `Options` L'SDK raccoglierà e utilizzerà automaticamente i valori di questi componenti per lo schema selezionato quando viene chiamata un'operazione. Non è necessaria alcuna configurazione aggiuntiva. 

#### Schema di autenticazione personalizzato
<a name="custom-auth-scheme"></a>

 Per definire uno schema di autenticazione personalizzato e configurarlo per l'uso, il chiamante deve eseguire le seguenti operazioni: 

1.  Definire un'implementazione [AuthScheme](https://pkg.go.dev/github.com/aws/smithy-go/transport/http#AuthScheme) 

1.  Registra lo schema nell'elenco dei client SDK `AuthSchemes` 

1.  Strumenta il client SDK `AuthSchemeResolver` a restituire un'autenticazione `Option` con l'ID dello schema, ove applicabile 

**avvertimento**  
 I seguenti servizi hanno un comportamento di autenticazione unico o personalizzato. Ti consigliamo di delegare all'implementazione predefinita e di eseguire il wrap di conseguenza se hai bisogno di un comportamento di autenticazione personalizzato:   


|  Servizio  |  Note  | 
| --- | --- | 
|  S3  |  Uso condizionale di SigV4a e SigV4Express a seconda dell'input dell'operazione.  | 
|  EventBridge  |  Uso condizionale di SigV4A in base all'input dell'operazione.  | 
|  Cognito  |  Alcune operazioni sono solo anonime.  | 
|  SSO  |  Alcune operazioni sono esclusivamente anonime.  | 
|  STS  |  Alcune operazioni sono esclusivamente anonime.  | 