Configurazione dell'autenticazione - AWS SDK for Go v2

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è 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

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 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à

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. HTTPSignerimplementazione quando è selezionato SigV4.

Identità

Un'identità è 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

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), l'SDK gestisce questa mappatura internamente.

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

Signer

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), l'SDK gestisce questa mappatura internamente.

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:

  1. L'SDK richiama l'AuthSchemeResolver.ResolveAuthSchemes()API del client, fornendo i parametri di input necessari, per ottenere un elenco di possibili opzioni per l'operazione.

  2. 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 è presentenil) 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)

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

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

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

  6. 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 per scoprire un nuovo modulo opt-in aws-http-authche illustra lo scopo generale della firma delle richieste HTTP. APIs
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:

  1. Definire un'implementazione AuthScheme

  2. Registra lo schema nell'elenco dei client SDK AuthSchemes

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