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
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 OptionResolverAuthSchemes, 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
Identidad
Identity
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
IdentityResolverIdentity.
Existen versiones concretas de IdentityResolver en el SDK con establecimiento inflexible de tipos (por ejemplo, aws.CredentialsProvider
Un intermediario solo tendrá que implementar directamente la interfaz IdentityResolver al definir un esquema de autenticación externo.
Signer
SignerIdentity del intermediario recuperado.
Existen versiones concretas de Signer en el SDK con establecimiento inflexible de tipos (por ejemplo, v4.HTTPSigner
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:
-
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 Optionpara la operación. -
El SDK recorre en iteración esa lista y selecciona el primer esquema que cumple con las siguientes condiciones:
-
En la propia lista
AuthSchemesdel 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étodoGetIdentityResolverdel esquema, la asignación a los tipos de solucionador de identidades concretos descritos anteriormente se gestiona de forma interna). (1)
-
-
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 deCredentialsdel cliente de forma interna. -
El SDK llama a
GetIdentity()del solucionador de identidades (por ejemplo,aws.CredentialProvider.Retrieve()para SigV4). -
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). -
El SDK llama a la API
Signer()del esquema de autenticación para recuperar su firmante y usa su APISignRequest()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 |
| 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:
-
Definir una implementación AuthScheme
-
Registrar el esquema en la lista
AuthSchemesdel cliente del SDK -
Instrumentar el
AuthSchemeResolverdel cliente del SDK para que devuelva un valorOptionde 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. |