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á.
Modelos de autorização para autenticação de API e SDK
Ao iniciar o desenvolvimento do seu aplicativo com a autenticação de grupos de usuários, você deve decidir sobre o modelo de autorização de API adequado ao seu tipo de aplicativo. Um modelo de autorização é um sistema para fornecer autorização para fazer solicitações com os componentes de autenticação nas integrações de API e SDK dos grupos de usuários do Amazon Cognito. O Amazon Cognito tem três modelos de autorização: autorizado pelo IAM, público e autorizado por token.
Com solicitações autorizadas pelo IAM, a autorização vem de uma assinatura de um conjunto de credenciais do AWS
IAM no Authorization
cabeçalho de uma solicitação. Para aplicativos do lado do servidor, essa prática protege as operações de autenticação com autorização do IAM. Com solicitações de autenticação públicas (não autenticadas), nenhuma autorização é necessária. Isso é adequado para aplicativos do lado do cliente distribuídos aos usuários. Com operações autorizadas por token, normalmente implementadas em combinação com operações públicas, a autorização vem de um token de sessão ou de um token de acesso incluído no Authorization
cabeçalho da solicitação. A autenticação do Amazon Cognito normalmente exige que você implemente duas ou mais operações de API em ordem, e as operações de API que você usa dependem das características do seu aplicativo. Os clientes públicos, nos quais o aplicativo é distribuído aos usuários, usam operações públicas, nas quais as solicitações de login não exigem autorização. As operações autorizadas por tokens continuam a sessão de usuários em aplicativos públicos. Clientes do lado do servidor, em que a lógica do aplicativo está hospedada em um sistema remoto, protegem as operações de autenticação com a autorização do IAM para solicitações de login. Os pares de operações da API a seguir e seus métodos de SDK correspondentes são mapeados para os modelos de autorização disponíveis.
Cada operação de autenticação pública tem alguma forma de equivalente do lado do servidor, por exemplo e. UpdateUserAttributesAdminUpdateUserAttributes Embora as operações do lado do cliente sejam iniciadas pelo usuário e exijam confirmação, as operações do lado do servidor pressupõem que a alteração foi confirmada por um administrador do grupo de usuários e as alterações entram em vigor imediatamente. Neste exemplo, o Amazon Cognito envia uma mensagem com um código de confirmação para o usuário, e o token de acesso do usuário autoriza uma VerifyUserAttributesolicitação que envia o código. O aplicativo do lado do servidor pode definir imediatamente o valor de qualquer atributo, embora considerações especiais se apliquem à alteração do valor de endereços de e-mail e números de telefone quando eles são usados para login.
Para comparar a autenticação de API e ver uma lista completa das operações de API e seus modelos de autorização, consulteCompreendendo a autenticação de API, OIDC e páginas de login gerenciadas.
Um usuário faz a autenticação respondendo a desafios sucessivos até que ela falhe ou o Amazon Cognito emita tokens para o usuário. Você pode repetir essas etapas com o Amazon Cognito, em um processo que inclui desafios diferentes, para comportar qualquer fluxo de autenticação personalizado.
Tópicos
Opções de autenticação do lado do servidor
Os aplicativos Web e outros aplicativos do lado do servidor implementam a autenticação em um servidor remoto que um cliente carrega em um aplicativo de exibição remota, como um navegador ou uma sessão SSH. Os aplicativos do lado do servidor geralmente têm as seguintes características.
-
Eles são criados em um aplicativo instalado em um servidor em linguagens como Java, Ruby ou Node.js.
-
Eles se conectam a clientes de aplicativos de grupos de usuários que podem ter um segredo de cliente, chamado de clientes confidenciais.
-
Eles têm acesso às AWS credenciais.
-
Eles invocam o login gerenciado para autenticação ou usam operações autorizadas pelo IAM na API de grupos de usuários com um SDK. AWS
-
Eles atendem clientes internos e podem atender clientes públicos.
As operações do lado do servidor com a API de grupos de usuários podem usar senhas, senhas de uso único ou chaves de acesso como o principal fator de login. Para aplicações no lado do servidor, a autenticação do grupo de usuários é semelhante à das aplicações no lado do cliente, exceto pelo seguinte:
-
O aplicativo do lado do servidor faz uma AdminInitiateAuthsolicitação de API. Essa operação requer AWS credenciais com permissões que incluem
cognito-idp:AdminInitiateAuth
e.cognito-idp:AdminRespondToAuthChallenge
A operação retorna o desafio ou o resultado da autenticação exigido. -
Quando o aplicativo recebe um desafio, ele faz uma solicitação de AdminRespondToAuthChallengeAPI. A operação
AdminRespondToAuthChallenge
da API também requer AWS credenciais.
Para obter mais informações sobre a assinatura de solicitações da API do Amazon Cognito com AWS credenciais, consulte Processo de assinatura do Signature versão 4 na AWS Referência geral.
Na resposta AdminInitiateAuth
ChallengeParameters
, o atributo USER_ID_FOR_SRP
, se estiver presente, incluirá o nome do usuário real, não um alias (como o endereço de e-mail ou o número de telefone). Na chamada para AdminRespondToAuthChallenge
, nas ChallengeResponses
, é necessário transmitir esse nome de usuário no parâmetro USERNAME
.
nota
Como as implementações administrativas de back-end usam o fluxo de autenticação do administrador, o fluxo não é compatível com dispositivos memorizados. Quando você ativa o rastreamento de dispositivo, a autenticação de administração é executada com êxito, mas qualquer chamada para atualizar o token de acesso falha.
Opções de autenticação do lado do cliente
Os aplicativos móveis e outros tipos de aplicativos do lado do cliente são instalados nos dispositivos dos usuários e executam a lógica da autenticação e da interface do usuário localmente. Eles normalmente têm as seguintes características.
-
Eles são criados em linguagens como React native, Flutter e Swift e implantados nos dispositivos do usuário.
-
Eles se conectam a clientes de aplicativos de grupos de usuários que não têm um segredo de cliente, chamados de clientes públicos.
-
Eles não têm acesso às AWS credenciais que autorizariam solicitações de API autorizadas pelo IAM.
-
Eles invocam o login gerenciado para autenticação ou usam operações públicas e autorizadas por token na API de grupos de usuários com um SDK. AWS
-
Eles atendem clientes públicos e permitem que qualquer pessoa se inscreva e faça login.
As operações do lado do cliente com a API de grupos de usuários podem usar senhas, senhas de uso único ou chaves de acesso como o principal fator de login. O processo a seguir funciona para aplicativos do lado do cliente do usuário que você cria com AWS Amplify
-
O usuário insere suas respectivas credenciais no aplicativo.
-
A aplicação chama a operação
InitiateAuth
com o nome de usuário e os detalhes da Secure Remote Password (SRP).Essa operação da API retorna os parâmetros de autenticação.
nota
O aplicativo gera detalhes do SRP com os recursos do Amazon Cognito SRP incorporados ao. AWS SDKs
-
O aplicativo chama a operação
RespondToAuthChallenge
. Se a chamada for bem-sucedida, o Amazon Cognito retornará os tokens do usuário e o fluxo de autenticação será concluído.Se o Amazon Cognito exigir outro desafio, a chamada para
RespondToAuthChallenge
não retornará tokens. Em vez disso, a chamada retornará uma sessão. -
Se
RespondToAuthChallenge
retornar uma sessão, o aplicativo chamaráRespondToAuthChallenge
novamente, dessa vez com a sessão e a resposta ao desafio (por exemplo, código de MFA).
Compreendendo a autenticação de API, OIDC e páginas de login gerenciadas
Os grupos de usuários do Amazon Cognito são uma combinação de várias tecnologias de autenticação. Eles confiam em provedores de identidade externos (IdPs). Eles são IdPs para aplicativos que implementam autenticação com o OpenID Connect (OIDC). SDKs Eles fornecem autenticação como emissores de tokens web JSON (JWTs) semelhante à autenticação OIDC, mas em métodos de API que fazem parte do. AWS SDKs Eles também podem ser pontos de entrada seguros para seus aplicativos.
Quando quiser se inscrever, fazer login e gerenciar usuários no grupo de usuários, você terá duas opções.
-
Suas páginas de login gerenciado e a interface de usuário hospedada clássica incluem os endpoints interativos com o usuário de login gerenciado e os endpoints de federação que lidam com funções de IdP e de terceiros confiáveis. Eles formam um pacote de páginas da web públicas que o Amazon Cognito ativa quando você seleciona um domínio para o grupo de usuários. Para começar rapidamente com os recursos de autenticação e autorização dos grupos de usuários do Amazon Cognito, incluindo páginas para cadastro, login, gerenciamento de senhas e autenticação multifatorial (MFA), use a interface de usuário integrada do login gerenciado.
Os outros endpoints do pool de usuários facilitam a autenticação com provedores de identidade terceirizados (IdPs). Os serviços que eles realizam incluem o seguinte:
-
Endpoints de retorno de chamada do provedor de serviços para reivindicações autenticadas de você, como e. IdPs
saml2/idpresponse
oauth2/idpresponse
Quando o Amazon Cognito é um provedor de serviços (SP) intermediário entre sua aplicação e o IdP, os endpoints de retorno de chamada representam o serviço. -
Endpoints que fornecem informações sobre seu ambiente, como
oauth2/userInfo
e/.well-known/jwks.json
. Seu aplicativo usa esses endpoints quando verifica tokens ou recupera dados do perfil do usuário com bibliotecas de desenvolvedores OIDC ou 2.0. OAuth
-
-
A API de grupos de usuários do Amazon Cognito é um conjunto de ferramentas para seu aplicativo web ou móvel autenticar usuários após coletar informações de login em seu próprio front-end personalizado. A autenticação da API de grupos de usuários produz os tokens web JSON a seguir.
-
Um token de identidade com declarações de atributos verificáveis do usuário.
-
Um token de acesso que autoriza o usuário a criar solicitações de API autorizadas por token para um endpoint de serviço da AWS.
nota
Por padrão, os tokens de acesso da autenticação da API de grupos de usuários contêm apenas o escopo
aws.cognito.signin.user.admin
. Para gerar um token de acesso com escopos adicionais, por exemplo, para autorizar uma solicitação para uma API de terceiros, solicite os escopos durante a autenticação por meio dos endpoints do grupo de usuários ou adicione escopos personalizados em um Acionador do Lambda antes da geração do token. A personalização do token de acesso adiciona custos à sua AWS fatura. -
Um token de atualização que autoriza solicitações de novos tokens de ID e acesso e atualiza a identidade do usuário e as propriedades de controle de acesso.
-
Você pode vincular um usuário federado, que normalmente faria login por meio dos endpoints de grupos de usuários, a um usuário cujo perfil seja local para sua lista de usuários. Um usuário local existe exclusivamente em seu diretório de grupo de usuários sem federação por meio de um IdP externo. Se você vincular sua identidade federada a um usuário local em uma solicitação de AdminLinkProviderForUserAPI, ele poderá fazer login com a API de grupos de usuários. Para obter mais informações, consulte Vincular usuários federados a um perfil de usuário existente.
A API de grupos de usuários do Amazon Cognito tem duplo propósito.
-
Ela cria e configura os recursos de grupos de usuários do Amazon Cognito. Por exemplo, você pode criar grupos de usuários, adicionar AWS Lambda acionadores e configurar o domínio do grupo de usuários que hospeda suas páginas de login gerenciadas.
-
Ele realiza cadastro, login e outras operações de usuário para usuários locais e vinculados.
Exemplo de cenário com a API de grupos de usuários do Amazon Cognito
-
O usuário seleciona o botão “Criar uma conta” que você criou na aplicação. Ele inserem um endereço de e-mail e uma senha.
-
Seu aplicativo envia uma solicitação de SignUpAPI e cria um novo usuário no seu grupo de usuários.
-
A aplicação solicita que o usuário forneça um código de confirmação enviado por e-mail. O usuário insere o código que recebeu em uma mensagem de e-mail.
-
Seu aplicativo envia uma solicitação de ConfirmSignUpAPI com o código de confirmação do usuário.
-
A aplicação solicita que o usuário informe o nome de usuário e a senha, e ele insere essas informações.
-
Seu aplicativo envia uma solicitação de InitiateAuthAPI e armazena um token de ID, um token de acesso e um token de atualização. A aplicação chama as bibliotecas do OIDC para gerenciar os tokens do usuário e manter uma sessão persistente para esse usuário.
Na API de grupos de usuários do Amazon Cognito, você não pode conectar usuários que se federam por meio de um IdP. É necessário autenticar esses usuários por meio dos endpoints de grupo de usuários. Para obter mais informações sobre os endpoints do grupo de usuários que incluem login gerenciado, consulteEndpoints do pool de usuários e referência de login gerenciado.
Seus usuários federados podem começar no login gerenciado e selecionar seu IdP, ou você pode pular o login gerenciado e enviar seus usuários diretamente ao seu IdP para fazer login. Quando a solicitação de API para Autorizar endpoint inclui um parâmetro de IdP, o Amazon Cognito redireciona silenciosamente o usuário para a página de login do IdP.
Exemplo de cenário com páginas de login gerenciadas
-
O usuário seleciona o botão “Criar uma conta” que você criou na aplicação.
-
O login gerenciado apresenta ao usuário uma lista dos provedores de identidade social nos quais você registrou as credenciais de desenvolvedor. O usuário escolhe a Apple.
-
A aplicação inicia uma solicitação para Autorizar endpoint com o nome do provedor
SignInWithApple
. -
O navegador do seu usuário abre a página de autenticação da Apple. Seu usuário faz login e escolhe autorizar o Amazon Cognito a ler suas informações de perfil.
-
O Amazon Cognito confirma o token de acesso da Apple e consulta o perfil Apple do usuário.
-
O usuário apresenta um código de autorização do Amazon Cognito para a aplicação.
-
A biblioteca OIDC em seu aplicativo troca o código de autorização com o Endpoint de token e armazena um token de ID, um token de acesso e um token de atualização emitidos pelo grupo de usuários. Seu aplicativo usa bibliotecas do OIDC para gerenciar os tokens do usuário e manter uma sessão persistente para esse usuário.
A API de grupos de usuários e as páginas de login gerenciadas oferecem suporte a vários cenários, descritos neste guia. As seções a seguir examinam como a API de grupos de usuários se divide ainda mais em classes que atendem aos seus requisitos de inscrição, login e gerenciamento de recursos.
Lista de operações de API agrupadas por modelo de autorização
A API de grupos de usuários do Amazon Cognito, tanto uma interface de gerenciamento de recursos quanto uma interface de autenticação e autorização voltada para o usuário, combina os modelos de autorização a seguir nas respectivas operações. Dependendo da operação da API, talvez seja necessário fornecer autorização com credenciais do IAM, um token de acesso, um token de sessão, um segredo do cliente ou uma combinação deles. Para muitas operações de autenticação e autorização de usuários, você pode escolher entre versões autenticadas e não autenticadas da solicitação. Operações não autenticadas são a prática recomendada de segurança para aplicações que você distribui para os usuários, como aplicações móveis; não é necessário incluir nenhum segredo no código.
Você pode atribuir permissões nas políticas do IAM somente para Operações de gerenciamento autorizadas pelo IAM e Operações de usuário autorizadas pelo IAM.
As operações de gerenciamento autorizadas pelo IAM modificam e visualizam a configuração do grupo de usuários e do cliente do aplicativo, como você faria no. AWS Management Console
Por exemplo, para modificar seu grupo de usuários em uma solicitação de UpdateUserPoolAPI, você deve apresentar AWS credenciais e permissões do IAM para atualizar o recurso.
Para autorizar essas solicitações no AWS Command Line Interface (AWS CLI) ou em um AWS SDK, configure seu ambiente com variáveis de ambiente ou configuração de cliente que adicionem credenciais do IAM à sua solicitação. Para obter mais informações, consulte Acessando AWS usando suas AWS credenciais no Referência geral da AWS. Você também pode enviar solicitações diretamente aos endpoints de serviço da API de grupos de usuários do Amazon Cognito. Você deve autorizar ou assinar essas solicitações com AWS as credenciais que você incorpora no cabeçalho da sua solicitação. Para obter mais informações, consulte Assinatura de solicitações AWS da API.
Operações de usuário autorizadas pelo IAM inscrevem-se, acessam, gerenciam credenciais, modificam e visualizam seus usuários.
Por exemplo, você pode ter um nível de aplicação do lado do servidor que oferece suporte a um front-end da Web. Seu aplicativo do lado do servidor é um cliente OAuth confidencial no qual você confia com acesso privilegiado aos recursos do Amazon Cognito. Para registrar um usuário no aplicativo, seu servidor pode incluir AWS credenciais em uma solicitação de AdminCreateUserAPI. Para obter mais informações sobre tipos de OAuth clientes, consulte Tipos de clientes
Para autorizar essas solicitações no AWS CLI ou em um AWS SDK, configure seu ambiente de aplicativo do lado do servidor com variáveis de ambiente ou configuração de cliente que adicionem credenciais do IAM à sua solicitação. Para obter mais informações, consulte Acessando AWS usando suas AWS credenciais no Referência geral da AWS. Você também pode enviar solicitações diretamente aos endpoints de serviço da API de grupos de usuários do Amazon Cognito. Você deve autorizar ou assinar essas solicitações com AWS as credenciais que você incorpora no cabeçalho da sua solicitação. Para obter mais informações, consulte Assinatura de solicitações AWS da API.
Se o cliente da aplicação tiver um segredo de cliente, você deverá fornecer suas credenciais do IAM e, dependendo da operação, o parâmetro SecretHash
ou o valor SECRET_HASH
em AuthParameters
. Para obter mais informações, consulte Computar valores de hash de segredo.
Operações de usuário não autenticadas para se inscrever, fazer login e iniciar redefinições de senha para os usuários. Use operações de API não autenticadas ou públicas quando quiser que qualquer pessoa na internet se inscreva e faça login na aplicação.
Por exemplo, para registrar um usuário em seu aplicativo, você pode distribuir um cliente OAuth público que não forneça acesso privilegiado aos segredos. Você pode registrar esse usuário com a operação de API não autenticada. SignUp
Para enviar essas solicitações em um cliente público que você desenvolveu com um AWS SDK, você não precisa configurar nenhuma credencial. Você também pode enviar solicitações diretamente aos endpoints de serviço da API de grupos de usuários do Amazon Cognito sem autorização adicional.
Se o cliente da aplicação tiver um segredo de cliente, você deverá fornecer, dependendo da operação, o parâmetro SecretHash
ou o valor SECRET_HASH
em AuthParameters
. Para obter mais informações, consulte Computar valores de hash de segredo.
Operações de usuário não autenticadas |
---|
SignUp |
ConfirmSignUp |
ResendConfirmationCode |
ForgotPassword |
ConfirmForgotPassword |
InitiateAuth |
As operações de usuário autorizadas por token terminam a sessão, gerenciam as credenciais, modificam e visualizam os usuários após eles fazerem login ou iniciarem o processo de login. Use operações de API autorizadas por token quando não quiser distribuir segredos na aplicação e quiser autorizar solicitações com as credenciais do seu próprio usuário. Se o usuário tiver concluído o login, você deverá autorizar a solicitação de API autorizada por token com um token de acesso. Se o usuário estiver no meio de um processo de login, você deverá autorizar a solicitação de API autorizada por token com um token de sessão que o Amazon Cognito retornou em resposta à solicitação anterior.
Por exemplo, em um cliente público, talvez você queira atualizar o perfil de um usuário de uma forma que restrinja o acesso de gravação somente ao próprio perfil do usuário. Para fazer essa atualização, seu cliente pode incluir o token de acesso do usuário em uma solicitação de UpdateUserAttributesAPI.
Para enviar essas solicitações em um cliente público que você desenvolveu com um AWS SDK, você não precisa configurar nenhuma credencial. Inclua um parâmetro AccessToken
ou Session
na solicitação. Você também pode enviar solicitações diretamente aos endpoints de serviço da API de grupos de usuários do Amazon Cognito. Para autorizar uma solicitação para um endpoint de serviço, inclua o token de acesso ou sessão no corpo POST da solicitação.
Para assinar uma solicitação de API para uma operação autorizada por token, inclua o token de acesso como cabeçalho Authorization
na solicitação, no formato Bearer
.<Base64-encoded access token>
Operações de usuário autorizadas por token | AccessToken | Sessão |
---|---|---|
RespondToAuthChallenge | ✓ | |
ChangePassword | ✓ | |
GetUser | ✓ | |
StartWebAuthnRegistration | ✓ | |
CompleteWebAuthnRegistration | ✓ | |
DeleteWebAuthnCredential | ✓ | |
ListWebAuthnCredentials | ✓ | |
UpdateUserAttributes | ✓ | |
DeleteUserAttributes | ✓ | |
DeleteUser | ✓ | |
ConfirmDevice | ✓ | |
ForgetDevice | ✓ | |
GetDevice | ✓ | |
ListDevices | ✓ | |
UpdateDeviceStatus | ✓ | |
GetUserAttributeVerificationCode | ✓ | |
VerifyUserAttribute | ✓ | |
SetUserSettings | ✓ | |
SetUserMFAPreference | ✓ | |
GlobalSignOut | ✓ | |
UpdateAuthEventFeedback | ✓ | |
AssociateSoftwareToken | ✓ | ✓ |
VerifySoftwareToken | ✓ | ✓ |
RevokeToken¹ | ||
GetTokensFromRefreshToken¹ |
¹ RevokeToken
e GetTokensFromRefreshToken
use tokens de atualização como parâmetro de autorização. O token de atualização serve como token de autorização e como recurso de destino.