As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
Configurar autenticação
O AWS SDK for Go permite configurar o serviço de comportamento de autenticação. Na maioria dos casos, a configuração padrão será suficiente, mas a configuração da autenticação personalizada permite definir um comportamento adicional, como trabalhar com recursos de serviço de pré-lançamento.
Definições
Esta seção fornece uma descrição geral dos componentes da autenticação no AWS SDK for Go.
AuthScheme
Um AuthScheme
Um esquema de autenticação usa os seguintes componentes, descritos em detalhes abaixo:
-
Um ID exclusivo que identifica o esquema
-
Um resolvedor de identidade, que retorna uma identidade de chamador usada no processo de assinatura (por exemplo, suas credenciais da AWS)
-
Um signatário, que executa a injeção real da identidade do chamador na solicitação de transporte da operação (por exemplo, o cabeçalho HTTP
Authorization)
Cada opção de cliente de serviço inclui um campo AuthSchemes que, por padrão, é preenchido com a lista de esquemas de autenticação compatíveis com esse serviço.
AuthSchemeResolver
Cada opção de cliente de serviço inclui um campo AuthSchemeResolver. Essa interface, definida por serviço, é a API chamada pelo SDK para determinar as possíveis opções de autenticação para cada operação.
Importante
O resolvedor do esquema de autenticação NÃO determina qual esquema de autenticação deve ser usado. Ele retorna uma lista de esquemas que podem ser usados (“opções”). O esquema final é selecionado por meio de um algoritmo fixo descrito aqui.
Opção
Retornada de uma chamada para ResolverAuthSchemes, uma Opção
Uma opção consiste em três conjuntos de informações:
-
Um ID representando o possível esquema
-
Um conjunto opaco de propriedades a serem fornecidas ao resolvedor de identidade do esquema
-
Um conjunto opaco de propriedades a serem fornecidas ao signatário do esquema
Uma nota sobre propriedades
Em 99% dos casos de uso, os chamadores não precisam se preocupar com as propriedades opacas de assinatura e resolução de identidade. O SDK extrai as propriedades necessárias para cada esquema e as passa para as interfaces fortemente tipadas expostas no SDK. Por exemplo, o resolvedor de autenticação padrão para serviços codifica a opção do SigV4 para ter propriedades de signatário de nome e região de assinatura, cujos valores são passados à implementação v4.HTTPSigner
Identidade
Uma identidade
O tipo mais comum de identidade usado no SDK é um conjunto de aws.Credentials. Na maioria dos casos de uso, o chamador não precisa se preocupar com Identity como uma abstração e pode trabalhar diretamente com os tipos concretos.
nota
Para preservar a compatibilidade com versões anteriores e evitar confusão na API, o tipo de identidade aws.Credentials específico do AWS SDK não satisfaz diretamente a interface Identity. Esse mapeamento é feito internamente.
IdentityResolver
IdentityResolverIdentity é recuperada.
Existem versões concretas de IdentityResolver no SDK em formato fortemente tipado (por exemplo, aws.CredentialsProvider
O chamador só precisa implementar diretamente a interface IdentityResolver ao definir um esquema de autenticação externo.
Signer
SignatárioIdentity.
Existem versões concretas de Signer no SDK em formato fortemente tipado (por exemplo, v4.HTTPSigner
O chamador só precisa implementar diretamente a interface Signer ao definir um esquema de autenticação externo.
AuthResolverParameters
Cada serviço usa um conjunto específico de entradas que são passadas para sua função de resolução, definida em cada pacote de serviços como AuthResolverParameters.
Os parâmetros básicos do resolvedor são os seguintes:
| nome | type | description |
|---|---|---|
Operation
|
string
|
O nome da operação que está sendo invocada. |
Region
|
string
|
A região da AWS do cliente. Presente somente para serviços que usam o SigV4[A]. |
Se você estiver implementando seu próprio resolvedor, nunca será necessário construir sua própria instância com seus parâmetros. O SDK fornece esses valores por solicitação e os transmite para sua implementação.
Fluxo de trabalho de resolução do esquema de autenticação
Quando você chama uma operação de serviço da AWS por meio do SDK, a seguinte sequência de ações ocorre após a serialização da solicitação:
-
O SDK chama a API
AuthSchemeResolver.ResolveAuthSchemes()do cliente, fornecendo os parâmetros de entrada conforme necessário, para obter uma lista de Opçõespossíveis para a operação. -
O SDK repete essa lista e seleciona o primeiro esquema que satisfaz as condições a seguir.
-
Um esquema com ID correspondente está presente na própria lista
AuthSchemesdo cliente -
O resolvedor de identidade do esquema existe (não é
nil) nas Opções do cliente (verificado por meio do métodoGetIdentityResolverdo esquema, o mapeamento para os tipos concretos de resolvedor de identidade descritos acima é gerenciado internamente) (1)
-
-
Supondo que um esquema viável tenha sido selecionado, o SDK invoca sua API
GetIdentityResolver()para recuperar a identidade do chamador. Por exemplo, o esquema de autenticação do SigV4 integrado será mapeado internamente para o provedor deCredentialsdo cliente. -
O SDK chama o resolvedor de identidade
GetIdentity()(por exemplo,aws.CredentialProvider.Retrieve()para o SigV4). -
O SDK chama o
ResolveEndpoint()do resolvedor do endpoint para encontrar o endpoint da solicitação. O endpoint pode incluir metadados adicionais que influenciam o processo de assinatura (por exemplo, nome de assinatura exclusivo do S3 Object Lambda). -
O SDK chama a API
Signer()do esquema de autenticação para recuperar o signatário e usa a APISignRequest()para assinar a solicitação com a identidade do chamador recuperada anteriormente.
(1) Se o SDK encontrar a opção anônima (ID smithy.api#noAuth) na lista, ela será selecionada automaticamente, pois não há um resolvedor de identidade correspondente.
AuthSchemes com suporte nativo
Os seguintes esquemas de autenticação têm suporte nativo do AWS SDK for Go.
| Name | ID do esquema | Resolvedor de identidade | Signer | Observações |
|---|---|---|---|---|
| SigV4 da4 |
aws.auth#sigv4
|
aws.CredentialsProvider |
v4.HTTPSigner |
O padrão atual para a maioria das operações de serviço da AWS. |
| SigV4A |
aws.auth#sigv4a
|
aws.CredentialsProvider | n/a | O uso do SigV4A é limitado no momento, a implementação do signatário é interna. Veja este anúncio |
| SigV4Express |
com.amazonaws.s3#sigv4express
|
s3.ExpressCredentialsProvider |
v4.HTTPSigner | Usado para Express One Zone |
| Portador de HTTP |
smithy.api#httpBearerAuth
|
smithybearer.TokenProvider |
smithybearer.Signer |
Usado pelo CodeCatalyst |
| Anônimo |
smithy.api#noAuth
|
n/a | n/a | Sem autenticação: nenhuma identidade é necessária e a solicitação não está assinada ou autenticada. |
Configuração de identidade
No AWS SDK for Go, os componentes de identidade de um esquema de autenticação são configurados em Options do cliente do SDK. O SDK seleciona e usa automaticamente os valores desses componentes para o esquema selecionado quando uma operação é chamada.
nota
Por motivos de compatibilidade com versões anteriores, o SDK permite implicitamente o uso do esquema de autenticação anônima caso nenhum resolvedor de identidade esteja configurado. Isso pode ser feito manualmente configurando todos os resolvedores de identidade em Options do cliente como nil (o resolvedor de identidade do SigV4 também pode ser definido como aws.AnonymousCredentials{}).
Configuração do signatário
No AWS SDK for Go, os componentes de signatário de um esquema de autenticação são configurados em Options do cliente do SDK. O SDK seleciona e usa automaticamente os valores desses componentes para o esquema selecionado quando uma operação é chamada. Nenhuma configuração adicional é necessária.
Esquema de autenticação personalizado
Para definir um esquema de autenticação personalizado e configurá-lo para uso, o chamador deve fazer o seguinte:
-
Definir uma implementação do AuthScheme
-
Registrar o esquema na lista
AuthSchemesdo cliente do SDK -
Instrumentar o
AuthSchemeResolverdo cliente do SDK para retornar umaOptionde autenticação com o ID do esquema, quando aplicável
Atenção
Os serviços a seguir têm um comportamento de autenticação exclusivo ou personalizado. Recomendamos que você delegue à implementação padrão e encapsule adequadamente se precisar de um comportamento de autenticação personalizado:
| Serviço | Observações |
|---|---|
| S3 | Uso condicional do SigV4A e SigV4Express dependendo da entrada da operação. |
| EventBridge | Uso condicional do SigV4a dependendo da entrada da operação. |
| Cognito | Algumas operações são somente anônimas. |
| SSO | Algumas operações são somente anônimas. |
| STS | Algumas operações são somente anônimas. |