

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

# Configuration de l'authentification
<a name="configure-auth"></a>

 Permet AWS SDK pour Go de configurer le service de comportement d'authentification. Dans la plupart des cas, la configuration par défaut suffit, mais la configuration de l'authentification personnalisée permet d'adopter des comportements supplémentaires, tels que l'utilisation de fonctionnalités de service préliminaires. 

## Définitions
<a name="definitions"></a>

 Cette section fournit une description détaillée des composants d'authentification du AWS SDK pour Go. 

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

 An [AuthScheme](https://pkg.go.dev/github.com/aws/smithy-go/transport/http#AuthScheme)est l'interface qui définit le flux de travail par lequel le SDK récupère l'identité de l'appelant et l'associe à une demande d'opération. 

 Un schéma d'authentification utilise les composants suivants, décrits en détail ci-dessous : 
+  Un identifiant unique qui identifie le schéma 
+  Un résolveur d'identité, qui renvoie l'identité de l'appelant utilisée lors du processus de signature (par exemple, vos AWS informations d'identification) 
+  Un signataire, qui effectue l'injection effective de l'identité de l'appelant dans la demande de transport de l'opération (par exemple, l'en-tête `Authorization` HTTP) 

 Les options de chaque client de service incluent un `AuthSchemes` champ qui est renseigné par défaut avec la liste des schémas d'authentification pris en charge par ce service. 

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

 Les options de chaque service client incluent un `AuthSchemeResolver` champ. Cette interface, définie par service, est l'API appelée par le SDK pour déterminer les options d'authentification possibles pour chaque opération. 

**Important**  
 Le résolveur de schéma d'authentification ne dicte PAS quel schéma d'authentification est utilisé. Il renvoie une liste de schémas *pouvant* être utilisés (« options »), le schéma final est sélectionné via un algorithme fixe décrit [ici](#auth-scheme-resolution-workflow). 

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

 Retournée par un appel à`ResolverAuthSchemes`, une [option](https://pkg.go.dev/github.com/aws/smithy-go/auth#Option) représente une option d'authentification possible. 

 Une option comprend trois ensembles d'informations : 
+  Un identifiant représentant le schéma possible 
+  Un ensemble opaque de propriétés à fournir au résolveur d'identité du schéma 
+  Un ensemble opaque de propriétés à fournir au signataire du schéma 

#### Remarque sur les propriétés
<a name="a-note-on-properties"></a>

 Dans 99 % des cas d'utilisation, les appelants n'ont pas à se soucier des propriétés opaques de résolution d'identité et de signature. Le SDK extraira les propriétés nécessaires pour chaque schéma et les transmettra aux interfaces fortement typées exposées dans le SDK. [Par exemple, le résolveur d'authentification par défaut pour les services code l'option SigV4 afin d'avoir des propriétés de signature pour le nom et la région de signature, dont les valeurs sont transmises au v4 configuré par le client. HTTPSigner](https://pkg.go.dev/github.com/aws/smithy-go/auth#Option)mise en œuvre lorsque SigV4 est sélectionné. 

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

 Une [identité](https://pkg.go.dev/github.com/aws/smithy-go/auth#Identity) est une représentation abstraite de l'identité de l'appelant du SDK. 

 Le type d'identité le plus couramment utilisé dans le SDK est un ensemble de`aws.Credentials`. Dans la plupart des cas d'utilisation, l'appelant n'a pas à se préoccuper `Identity` d'une abstraction et peut travailler directement avec les types concrets. 

**Note**  
 Pour préserver la rétrocompatibilité et éviter toute confusion entre les API, le type d'identité AWS spécifique au SDK `aws.Credentials` ne correspond pas directement à l'interface. `Identity` Ce mappage est géré en interne. 

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

 [IdentityResolver](https://pkg.go.dev/github.com/aws/smithy-go/auth#IdentityResolver)est l'interface par laquelle un `Identity` est récupéré. 

 [Des versions concrètes de `IdentityResolver` existent dans le SDK sous une forme fortement typée (par exemple aws. CredentialsProvider](https://pkg.go.dev/github.com/aws/aws-sdk-go-v2/aws#CredentialsProvider)), le SDK gère ce mappage en interne. 

 L'appelant n'aura qu'à implémenter directement l'`IdentityResolver`interface lors de la définition d'un schéma d'authentification externe. 

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

 Le [signataire](https://pkg.go.dev/github.com/aws/smithy-go/transport/http#Signer) est l'interface par laquelle une demande est complétée par l'appelant `Identity` récupéré. 

 [Des versions concrètes de `Signer` existent dans le SDK sous une forme fortement typée (par exemple v4. HTTPSigner](https://pkg.go.dev/github.com/aws/aws-sdk-go-v2/aws/signer/v4#HTTPSigner)), le SDK gère ce mappage en interne. 

 L'appelant n'aura qu'à implémenter directement l'`Signer`interface lors de la définition d'un schéma d'authentification externe. 

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

 Chaque service utilise un ensemble spécifique d'entrées qui sont transmises à sa fonction de résolution, définie dans chaque package de services comme`AuthResolverParameters`. 

 Les paramètres du résolveur de base sont les suivants : 


|  name  |  type  |  description  | 
| --- | --- | --- | 
|  Operation  |  string  |  Nom de l'opération invoquée.  | 
|  Region  |  string  |  La AWS région du client. Présent uniquement pour les services utilisant SigV4 [A].  | 

 Si vous implémentez votre propre résolveur, vous ne devriez jamais avoir à créer votre propre instance à partir de ses paramètres. Le SDK fournira ces valeurs par demande et les transmettra à votre implémentation. 

## Flux de travail de résolution du schéma d'authentification
<a name="auth-scheme-resolution-workflow"></a>

 Lorsque vous appelez une opération de AWS service via le SDK, la séquence d'actions suivante se produit après la sérialisation de la demande : 

1.  Le SDK appelle l'`AuthSchemeResolver.ResolveAuthSchemes()`API du client, en fournissant les paramètres d'entrée nécessaires, afin d'obtenir une liste des [options](https://pkg.go.dev/github.com/aws/smithy-go/auth#Option) possibles pour l'opération. 

1.  Le SDK parcourt cette liste et sélectionne le premier schéma qui répond aux conditions suivantes. 
   +  Un schéma avec l'ID correspondant est présent dans la propre `AuthSchemes` liste du client 
   +  Le résolveur d'identité du schéma existe (n'est pas-`nil`) dans les options du client (vérifié via la `GetIdentityResolver` méthode du schéma, le mappage vers les types de résolveurs d'identité concrets décrits ci-dessus est géré en interne) (1) 

1.  En supposant qu'un schéma viable ait été sélectionné, le SDK invoque son `GetIdentityResolver()` API pour récupérer l'identité de l'appelant. Par exemple, le schéma d'authentification SigV4 intégré sera mappé au fournisseur du `Credentials` client en interne. 

1.  Le SDK appelle le résolveur d'identité `GetIdentity()` (par exemple `aws.CredentialProvider.Retrieve()` pour SigV4). 

1.  Le SDK appelle le résolveur du point de terminaison `ResolveEndpoint()` pour trouver le point de terminaison correspondant à la demande. Le point de terminaison peut inclure des métadonnées supplémentaires qui influencent le processus de signature (par exemple, un nom de signature unique pour S3 Object Lambda). 

1.  Le SDK appelle l'`Signer()`API du schéma d'authentification pour récupérer son signataire et utilise son `SignRequest()` API pour signer la demande avec l'identité de l'appelant précédemment récupérée. 

 (1) Si le SDK trouve l'option anonyme (ID`smithy.api#noAuth`) dans la liste, il est sélectionné automatiquement, car il n'existe aucun résolveur d'identité correspondant. 

## Supportés nativement `AuthScheme`
<a name="natively-supported-authschemes"></a>

 Les schémas d'authentification suivants sont pris en charge nativement par. AWS SDK pour Go


|  Nom  |  ID du schéma  |  Résolveur d'identité  |  Signer  |  Remarques  | 
| --- | --- | --- | --- | --- | 
|  [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)  |  Valeur par défaut actuelle pour la plupart des opérations AWS de service.  | 
|  SigV4A  |  aws.auth\$1sigv4a  |  aws. CredentialsProvider  |  N/A  |  L'utilisation de SigV4a est limitée pour le moment, l'implémentation du signataire est interne. Consultez cette [annonce](https://github.com/aws/aws-sdk-go-v2/discussions/2812) pour un nouveau module opt-in aws-http-authqui expose l'usage général de la signature APIs de requêtes HTTP.  | 
|  SIGV4 Express  |  com.amazonaws.s3\$1sigv4express  |  [s3. ExpressCredentialsProvider](https://pkg.go.dev/github.com/aws/aws-sdk-go-v2/service/s3#ExpressCredentialsProvider)  |  v4. HTTPSigner  |  Utilisé pour [Express One Zone](https://aws.amazon.com/s3/storage-classes/express-one-zone/).  | 
|  Support HTTP  |  smithy.api\$1httpBearerAuth  |  [forgeron. TokenProvider](https://pkg.go.dev/github.com/aws/smithy-go/auth/bearer#TokenProvider)  |  [SmithyBearer.Signataire](https://pkg.go.dev/github.com/aws/smithy-go/auth/bearer#Signer)  |  Utilisé par [Codecatalyst](https://pkg.go.dev/github.com/aws/aws-sdk-go-v2/service/codecatalyst).  | 
|  Anonyme  |  smithy.api\$1noAuth  |  N/A  |  s/o  |  Aucune authentification : aucune identité n'est requise et la demande n'est ni signée ni authentifiée.  | 

### Configuration de l'identité
<a name="identity-configuration"></a>

 Dans AWS SDK pour Go, les composants d'identité d'un schéma d'authentification sont configurés dans le client SDK. `Options` Le SDK récupère et utilise automatiquement les valeurs de ces composants pour le schéma qu'il sélectionne lorsqu'une opération est appelée. 

**Note**  
 Pour des raisons de rétrocompatibilité, le SDK autorise implicitement l'utilisation du schéma d'authentification anonyme si aucun résolveur d'identité n'est configuré. Cela peut être réalisé manuellement en configurant tous les résolveurs d'identité sur le point d'un client `Options` `nil` (le résolveur d'identité sigv4 peut également être réglé sur). `aws.AnonymousCredentials{}` 

### Configuration du signataire
<a name="signer-configuration"></a>

 Dans AWS SDK pour Go, les composants signataires d'un schéma d'authentification sont configurés dans le client SDK. `Options` Le SDK récupère et utilise automatiquement les valeurs de ces composants pour le schéma qu'il sélectionne lorsqu'une opération est appelée. Aucune configuration supplémentaire n'est nécessaire. 

#### Schéma d'authentification personnalisé
<a name="custom-auth-scheme"></a>

 Afin de définir un schéma d'authentification personnalisé et de le configurer en vue de son utilisation, l'appelant doit effectuer les opérations suivantes : 

1.  Définition d'une [AuthScheme](https://pkg.go.dev/github.com/aws/smithy-go/transport/http#AuthScheme)implémentation 

1.  Enregistrez le schéma dans la liste des clients du `AuthSchemes` SDK 

1.  Instrumentez le client du SDK `AuthSchemeResolver` pour renvoyer une authentification `Option` avec l'ID du schéma, le cas échéant 

**Avertissement**  
 Les services suivants ont un comportement d'authentification unique ou personnalisé. Nous vous recommandons de déléguer à l'implémentation par défaut et d'encapsuler en conséquence si vous avez besoin d'un comportement d'authentification personnalisé :   


|  Service  |  Remarques  | 
| --- | --- | 
|  S3  |  Utilisation conditionnelle de SigV4A et SIGV4Express en fonction de l'entrée de l'opération.  | 
|  EventBridge  |  Utilisation conditionnelle de SigV4A en fonction de l'entrée de l'opération.  | 
|  Cognito  |  Certaines opérations sont uniquement anonymes.  | 
|  SSO  |  Certaines opérations sont uniquement anonymes.  | 
|  STS  |  Certaines opérations sont uniquement anonymes.  | 