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
AWS SDK for 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
Questa sezione fornisce una descrizione di alto livello dei componenti di autenticazione di. AWS SDK for Go
AuthScheme
An AuthScheme
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
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.
Opzione
Restituita da una chiamata aResolverAuthSchemes, un'opzione
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à
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
Identità
Un'identità
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
IdentityResolverIdentity file.
Nell'SDK IdentityResolver esistono versioni concrete in forma fortemente tipizzata (ad esempio aws. CredentialsProvider
Un chiamante dovrà solo implementare direttamente l'IdentityResolverinterfaccia quando definisce uno schema di autenticazione esterno.
Signer
SignerIdentity
Nell'SDK Signer esistono versioni concrete in forma fortemente tipizzata (ad esempio v4). HTTPSigner
Un chiamante dovrà solo implementare direttamente l'Signerinterfaccia quando definisce uno schema di autenticazione esterno.
AuthResolverParameters
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
Quando si chiama un'operazione AWS di servizio tramite l'SDK, dopo la serializzazione della richiesta si verifica la seguente sequenza di azioni:
-
L'SDK richiama l'
AuthSchemeResolver.ResolveAuthSchemes()API del client, fornendo i parametri di input necessari, per ottenere un elenco di possibili opzioniper l'operazione. -
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 ilGetIdentityResolvermetodo dello schema, la mappatura ai tipi di risolutori di identità concreti descritti sopra viene gestita internamente) (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 -
L'SDK chiama i risolutori di identità (ad esempio per SigV4).
GetIdentity()aws.CredentialProvider.Retrieve() -
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). -
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 (IDsmithy.api#noAuth) nell'elenco, viene selezionata automaticamente, poiché non esiste un risolutore di identità corrispondente.
Supportato nativamente s AuthScheme
I seguenti schemi di autenticazione sono supportati nativamente da. AWS SDK for Go
| Nome | ID dello schema | Risolutore di identità | Signer | Note |
|---|---|---|---|---|
| SIG V4 |
aws.auth#sigv4
|
leggi. CredentialsProvider |
v4. HTTPSigner |
L'impostazione predefinita corrente per la maggior parte delle operazioni AWS di servizio. |
| SigV4a |
aws.auth#sigv4a
|
leggi. CredentialsProvider | N/A | L'utilizzo di SigV4a è limitato al momento, l'implementazione del firmatario è interna. Leggete questo annuncio |
| SIGV4Express |
com.amazonaws.s3#sigv4express
|
s3. ExpressCredentialsProvider |
v4. HTTPSigner | Usato per Express One Zone |
| Portatore HTTP |
smithy.api#httpBearerAuth
|
portatore di fucina. TokenProvider |
Smithy Bearer. Firmatario |
Usato da codecatalyst. |
| Anonimo |
smithy.api#noAuth
|
N/A | n/a | Nessuna autenticazione: non è richiesta alcuna identità e la richiesta non è firmata o autenticata. |
Configurazione dell'identità
In AWS SDK for 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 sunil). aws.AnonymousCredentials{}
Configurazione del firmatario
In AWS SDK for 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
Per definire uno schema di autenticazione personalizzato e configurarlo per l'uso, il chiamante deve eseguire le seguenti operazioni:
-
Definire un'implementazione AuthScheme
-
Registra lo schema nell'elenco dei client SDK
AuthSchemes -
Strumenta il client SDK
AuthSchemeResolvera restituire un'autenticazioneOptioncon 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. |