Configuration de l'authentification - AWS SDK for Go v2

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

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

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. HTTPSignermise en œuvre lorsque SigV4 est sélectionné.

Identity

Une identité 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 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

IdentityResolverest 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), le SDK gère ce mappage en interne.

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

Signer

Le signataire 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), le SDK gère ce mappage en interne.

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 :

  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 possibles pour l'opération.

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

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

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

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

  6. 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 (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 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#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 :

  1. Définition d'une AuthSchemeimplémentation

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

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