Configuración de la autenticación - AWS SDK for Go v2

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Configuración de la autenticación

AWS SDK for Go ofrece la posibilidad de configurar el servicio de comportamiento de autenticación. En la mayoría de los casos, la configuración predeterminada será suficiente, pero la configuración de autenticación personalizada permite un comportamiento adicional, como trabajar con características del servicio previas al lanzamiento.

Definiciones

En esta sección se proporciona una descripción detallada de los componentes de autenticación de AWS SDK for Go.

AuthScheme

AuthScheme es la interfaz que define el flujo de trabajo a través del cual el SDK recupera la identidad del intermediario y la asocia a una solicitud de operación.

Un esquema de autenticación utiliza los componentes siguientes, que se describen en detalle más adelante:

  • Un ID único que identifica el esquema

  • Un solucionador de identidades, que devuelve la identidad del intermediario utilizada en el proceso de firma (por ejemplo, sus credenciales de AWS)

  • Un firmante, que es el que realmente inyecta la identidad del intermediario en la solicitud de transporte de la operación (por ejemplo, el encabezado HTTP Authorization)

Cada opción de cliente de servicio incluye un campo AuthSchemes que, de forma predeterminada, se rellena con la lista de esquemas de autenticación compatibles con ese servicio.

AuthSchemeResolver

Cada opción de cliente de servicio incluye un campo AuthSchemeResolver. Esta interfaz, definida por servicio, es la API a la que llama el SDK para determinar las opciones de autenticación posibles para cada operación.

importante

El solucionador de esquemas de autenticación NO dicta qué esquema de autenticación se usa. Devuelve una lista de esquemas que se pueden usar (“opciones”); el esquema final se selecciona a través de un algoritmo fijo que se describe aquí.

Opción

Un valor Option, devuelto de una llamada a ResolverAuthSchemes, representa una posible opción de autenticación.

Una opción consta de tres conjuntos de información:

  • Un identificador que representa el posible esquema

  • Un conjunto opaco de propiedades que se proporcionará al solucionador de identidades del esquema

  • Un conjunto opaco de propiedades que se proporcionará al firmante del esquema

Nota sobre las propiedades

En el 99 % de los casos de uso, los intermediarios no tienen por qué preocuparse por las propiedades opacas para la resolución de identidades y la firma. El SDK extraerá las propiedades necesarias para cada esquema y las pasará a las interfaces con establecimiento inflexible de tipos expuestas en el SDK. Por ejemplo, el solucionador de autenticación predeterminado para servicios codifica la opción SigV4 de modo que tenga propiedades del firmante para la región y el nombre de la firma, cuyos valores se pasan a la implementación de v4.HTTPSigner configurada del cliente al seleccionarse SigV4.

Identidad

Identity es una representación abstracta de quién es el intermediario del SDK.

El tipo de identidad más común que se utiliza en el SDK es un conjunto de aws.Credentials. En la mayoría de los casos de uso, el intermediario no tiene por qué preocuparse de Identity como abstracción y puede trabajar directamente con los tipos concretos.

nota

Para conservar la compatibilidad con versiones anteriores y evitar confusiones en relación con la API, el tipo de identidad aws.Credentials específico del SDK de AWS no cumple directamente con la interfaz Identity. Esta asignación se gestiona de forma interna.

IdentityResolver

IdentityResolver es la interfaz a través de la cual se recupera un valor Identity.

Existen versiones concretas de IdentityResolver en el SDK con establecimiento inflexible de tipos (por ejemplo, aws.CredentialsProvider). El SDK gestiona esta asignación de forma interna.

Un intermediario solo tendrá que implementar directamente la interfaz IdentityResolver al definir un esquema de autenticación externo.

Signer

Signer es la interfaz a través de la cual se complementa una solicitud con el valor Identity del intermediario recuperado.

Existen versiones concretas de Signer en el SDK con establecimiento inflexible de tipos (por ejemplo, v4.HTTPSigner). El SDK gestiona esta asignación de forma interna.

Un intermediario solo tendrá que implementar directamente la interfaz Signer al definir un esquema de autenticación externo.

AuthResolverParameters

Cada servicio toma un conjunto específico de entradas que se pasan a su función de resolución, definida en cada paquete de servicios como AuthResolverParameters.

Los parámetros base del solucionador son los siguientes:

nombre tipo description
Operation string El nombre de la operación que se invoca.
Region string La región de AWS del cliente. Solo está presente para los servicios que utilizan SigV4[A].

Si implementa su propio solucionador, no debería tener que crear una instancia propia de sus parámetros en ningún caso. El SDK obtendrá estos valores por solicitud y los pasará a su implementación.

Flujo de trabajo de resolución de esquemas de autenticación

Cuando llama a una operación de servicio de AWS a través del SDK, la siguiente secuencia de acciones se produce una vez serializada la solicitud:

  1. El SDK llama a la API AuthSchemeResolver.ResolveAuthSchemes() del cliente y obtiene los parámetros de entrada según sea necesario, a fin de conseguir una lista de posibles valores Option para la operación.

  2. El SDK recorre en iteración esa lista y selecciona el primer esquema que cumple con las siguientes condiciones:

    • En la propia lista AuthSchemes del cliente hay un esquema con un ID coincidente.

    • El solucionador de identidades del esquema existe (no es nil) en las opciones del cliente (si se comprueba mediante el método GetIdentityResolver del esquema, la asignación a los tipos de solucionador de identidades concretos descritos anteriormente se gestiona de forma interna). (1)

  3. Suponiendo que se haya seleccionado un esquema viable, el SDK invoca su API GetIdentityResolver() para recuperar la identidad del intermediario. Por ejemplo, el esquema de autenticación SigV4 integrado se asignará internamente al proveedor de Credentials del cliente de forma interna.

  4. El SDK llama a GetIdentity() del solucionador de identidades (por ejemplo, aws.CredentialProvider.Retrieve() para SigV4).

  5. El SDK llama a ResolveEndpoint() del solucionador de puntos de conexión para encontrar el punto de conexión de la solicitud. El punto de conexión puede incluir metadatos adicionales que influyan en el proceso de firma (por ejemplo, un nombre de firma único para S3 Object Lambda).

  6. El SDK llama a la API Signer() del esquema de autenticación para recuperar su firmante y usa su API SignRequest() para firmar la solicitud con la identidad del intermediario recuperada anteriormente.

(1) Si el SDK encuentra la opción anónima (ID smithy.api#noAuth) en la lista, se selecciona de forma automática, ya que no existe un solucionador de identidades correspondiente.

AuthScheme compatibles de forma nativa

Los esquemas de autenticación siguientes son compatibles de forma nativa con AWS SDK for Go.

Nombre ID de esquema Solucionador de identidades Signer Notas
SigV4 aws.auth#sigv4 aws.CredentialsProvider v4.HTTPSigner El valor predeterminado actual de la mayoría de las operaciones de servicio de AWS.
SigV4A aws.auth#sigv4a aws.CredentialsProvider n/a El uso de SigV4A es limitado en este momento, la implementación del firmante es interna. Consulte este anuncio para ver un nuevo módulo de inclusión aws-http-auth que expone las API de uso general para firmar solicitudes HTTP.
SigV4Express com.amazonaws.s3#sigv4express s3.ExpressCredentialsProvider v4.HTTPSigner Se utiliza para Express One Zone.
HTTP Bearer smithy.api#httpBearerAuth smithybearer.TokenProvider smithybearer.Signer Utilizado por codecatalyst.
Anonymous smithy.api#noAuth n/a n/a Sin autenticación: no se requiere identidad y la solicitud no se firma ni se autentica.

Configuración de identidades

En AWS SDK for Go, los componentes de identidad de un esquema de autenticación se configuran en Options del cliente del SDK. El SDK recogerá y utilizará de forma automática los valores de estos componentes para el esquema que seleccione cuando se llame a una operación.

nota

Por motivos de compatibilidad con versiones anteriores, el SDK permite de forma implícita el uso del esquema de autenticación anónimo si no se ha configurado ningún solucionador de identidades. Esto se puede lograr de forma manual mediante el establecimiento de todos los solucionadores de identidades del elemento Options de un cliente en nil (el solucionador de identidades sigv4 también se puede establecer en aws.AnonymousCredentials{}).

Configuración del firmante

En AWS SDK for Go, los componentes del firmante correspondientes a un esquema de autenticación se configuran en Options en el cliente del SDK. El SDK recogerá y utilizará de forma automática los valores de estos componentes para el esquema que seleccione cuando se llame a una operación. No es necesaria ninguna configuración adicional.

Esquema de autenticación personalizado

Para definir un esquema de autenticación personalizado y configurarlo para su uso, el intermediario debe hacer lo siguiente:

  1. Definir una implementación AuthScheme

  2. Registrar el esquema en la lista AuthSchemes del cliente del SDK

  3. Instrumentar el AuthSchemeResolver del cliente del SDK para que devuelva un valor Option de autenticación con el ID del esquema, cuando proceda.

aviso

Los servicios siguientes tienen un comportamiento de autenticación único o personalizado. Recomendamos que delegue en la implementación predeterminada y la encapsule en consecuencia si necesita un comportamiento de autenticación personalizado:

Servicio Notas
S3 Uso condicional de SigV4A y SigV4Express en función de la entrada de la operación.
EventBridge Uso condicional de SigV4A en función de la entrada de la operación.
Cognito Algunas operaciones son únicamente anónimas.
SSO Algunas operaciones son únicamente anónimas.
STS Algunas operaciones son únicamente anónimas.