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
Permet AWS SDK for 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
Cette section fournit une description détaillée des composants d'authentification du AWS SDK for Go.
AuthScheme
An AuthScheme
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
AuthorizationHTTP)
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
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.
Option
Retournée par un appel àResolverAuthSchemes, une option
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
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
Identity
Une identité
Le type d'identité le plus couramment utilisé dans le SDK est un ensemble deaws.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
IdentityResolverIdentity est récupéré.
Des versions concrètes de IdentityResolver existent dans le SDK sous une forme fortement typée (par exemple aws. CredentialsProvider
L'appelant n'aura qu'à implémenter directement l'IdentityResolverinterface lors de la définition d'un schéma d'authentification externe.
Signer
Le signataireIdentity récupéré.
Des versions concrètes de Signer existent dans le SDK sous une forme fortement typée (par exemple v4. HTTPSigner
L'appelant n'aura qu'à implémenter directement l'Signerinterface lors de la définition d'un schéma d'authentification externe.
AuthResolverParameters
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 commeAuthResolverParameters.
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
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 :
-
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 optionspossibles pour l'opération. -
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
AuthSchemesliste du client -
Le résolveur d'identité du schéma existe (n'est pas-
nil) dans les options du client (vérifié via laGetIdentityResolvermé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)
-
-
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 duCredentialsclient en interne. -
Le SDK appelle le résolveur d'identité
GetIdentity()(par exempleaws.CredentialProvider.Retrieve()pour SigV4). -
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). -
Le SDK appelle l'
Signer()API du schéma d'authentification pour récupérer son signataire et utilise sonSignRequest()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 (IDsmithy.api#noAuth) dans la liste, il est sélectionné automatiquement, car il n'existe aucun résolveur d'identité correspondant.
Supportés nativement AuthScheme
Les schémas d'authentification suivants sont pris en charge nativement par. AWS SDK for Go
| Nom | ID du schéma | Résolveur d'identité | Signer | Remarques |
|---|---|---|---|---|
| SigV4 |
aws.auth#sigv4
|
aws. CredentialsProvider |
v4. HTTPSigner |
Valeur par défaut actuelle pour la plupart des opérations AWS de service. |
| SigV4A |
aws.auth#sigv4a
|
aws. CredentialsProvider | N/A | L'utilisation de SigV4a est limitée pour le moment, l'implémentation du signataire est interne. Consultez cette annonce |
| SIGV4 Express |
com.amazonaws.s3#sigv4express
|
s3. ExpressCredentialsProvider |
v4. HTTPSigner | Utilisé pour Express One Zone |
| Support HTTP |
smithy.api#httpBearerAuth
|
forgeron. TokenProvider |
SmithyBearer.Signataire |
Utilisé par Codecatalyst |
| Anonyme |
smithy.api#noAuth
|
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é
Dans AWS SDK for 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
Dans AWS SDK for 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é
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 :
-
Définition d'une AuthScheme
implémentation -
Enregistrez le schéma dans la liste des clients du
AuthSchemesSDK -
Instrumentez le client du SDK
AuthSchemeResolverpour renvoyer une authentificationOptionavec 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. |