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 da sua aplicação com a autenticação de grupos de usuários, você deve decidir qual modelo de autorização de API se adequa ao tipo da sua aplicação. Um modelo de autorização é um sistema para fornecer autorizações 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: IAM-authorized público e autorizado por token.
Com as IAM-authorized solicitações, a autorização vem de uma assinatura de um conjunto de credenciais AWS
do IAM no Authorization cabeçalho de uma solicitação. Para aplicações 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 aplicações do lado do cliente distribuídas aos usuários. Com operações autorizadas por token, normalmente implementadas em combinação com operações públicas, a autorização provém de um token de sessão ou de um token de acesso incluído no cabeçalho Authorization 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 utilizadas dependem das características da sua aplicação. Os clientes públicos, em que o aplicativo é distribuído aos usuários, usam operações públicas, nas quais as solicitações de login não exigem autorização. Token-authorized as operações continuam a sessão de usuários em aplicativos públicos. Server-side os clientes, 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 de 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 Enquanto as operações do lado do cliente são iniciadas pelo usuário e exigem 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. A aplicação 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 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, consulte Noções básicas sobre a autenticação de API, OIDC e páginas de login gerenciado.
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
Server-side opções de autenticação
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. Server-side os aplicativos geralmente têm as seguintes características.
-
Eles são construídos em um aplicativo instalado em um servidor em linguagens como Java, Ruby ou Node.js.
-
Elas se conectam a clientes da aplicação de grupos de usuários que podem ter um segredo do cliente, chamados de clientes confidenciais.
-
Eles têm acesso às AWS credenciais.
-
Eles invocam o login gerenciado para autenticação ou usam IAM-authorized operações na API de grupos de usuários com um AWS SDK.
-
Elas atendem clientes internos e podem atender clientes públicos.
Server-side as operações 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:AdminInitiateAuthe.cognito-idp:AdminRespondToAuthChallengeA operação retorna o desafio exigido ou o resultado da autenticação. -
Quando o aplicativo recebe um desafio, ele faz uma solicitação de AdminRespondToAuthChallengeAPI. A operação de API
AdminRespondToAuthChallengetambém requer credenciais da AWS .
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 de administração de backend usam o fluxo de autenticação de administração, 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.
Client-side opções de autenticação
Aplicativos móveis e outros tipos de aplicações do lado do cliente são instalados nos dispositivos dos usuários e executam a lógica de autenticação e interface do usuário localmente. Eles geralmente têm as características a seguir.
-
Eles são desenvolvidos em linguagens como React Native, Flutter e Swift e implantados nos dispositivos do usuário.
-
Eles se conectam a clientes da aplicação de grupos de usuários que não têm um segredo do cliente, chamados de clientes públicos.
-
Eles não têm acesso às AWS credenciais que autorizariam solicitações de IAM-authorized API.
-
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 cadastre e faça login.
Client-side as operações 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 aplicações do lado do cliente do usuário que você cria com o AWS Amplify
-
O usuário insere suas respectivas credenciais no aplicativo.
-
A aplicação chama a operação
InitiateAuthcom 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
A aplicação gera detalhes do SRP com os recursos SRP do Amazon Cognito incorporados aos 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
RespondToAuthChallengenão retornará tokens. Em vez disso, a chamada retornará uma sessão. -
Se
RespondToAuthChallengeretornar uma sessão, o aplicativo chamaráRespondToAuthChallengenovamente, dessa vez com a sessão e a resposta ao desafio (por exemplo, código de MFA).
Noções básicas sobre a autenticação de API, OIDC e páginas de login gerenciado
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 SDKs do OpenID Connect (OIDC). Fornecem autenticação como emissores de tokens web JSON (JWTs), semelhante à autenticação OIDC, mas em métodos de API que fazem parte dos SDKs da AWS . Também podem servir como pontos de entrada seguros para suas aplicações.
Quando quiser se inscrever, fazer login e gerenciar usuários no grupo de usuários, você terá duas opções.
-
As páginas de login gerenciado e a IU hospedada clássica incluem os endpoints interativos de login gerenciado e os endpoints de federação que lidam com funções de IdP e de partes 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 multifator (MFA), use a interface de usuário integrada do login gerenciado.
Os outros endpoints do grupo de usuários facilitam a autenticação com provedores de identidade terceirizados (IdPs). Os serviços que eles realizam incluem o seguinte:
-
Service-provider endpoints de retorno de chamada para reivindicações autenticadas de você IdPs, como e.
saml2/idpresponseoauth2/idpresponseQuando 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/userInfoe/.well-known/jwks.json. Sua aplicação usa esses endpoints ao verificar tokens ou recupera dados do perfil do usuário com bibliotecas de desenvolvedor do OIDC e OAuth 2.0.
-
-
A API de grupos de usuários do Amazon Cognito é um conjunto de ferramentas para sua aplicação web ou aplicativo móvel autenticar usuários após coletar informações de login em seu próprio frontend 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.
-
Ela realiza operações de cadastro, login e outras operações 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 ter mais informações sobre os endpoints do grupo de usuários que incluem login gerenciado, consulte Referência de login gerenciado e endpoints do grupo de usuários.
Os usuários federados podem começar no login gerenciado e selecionar o IdP deles ou você pode ignorar o login gerenciado e enviar os 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 gerenciado
-
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 identidades 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 usuário abre a página de autenticação da Apple. O usuário faz login e opta por autorizar que o Amazon Cognito leia as informações do perfil dele.
-
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 na aplicação troca o código de autorização com o Endpoint de token e armazena um token de ID, token de acesso e token de atualização emitidos pelo grupo de usuários. A aplicação usa bibliotecas do OIDC para gerenciar os tokens do usuário e manter uma sessão persistente para esse usuário.
A API de grupo de usuários e as páginas de login gerenciado são compatíveis com uma variedade de 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 IAM-authorized operações de gerenciamento e IAM-authorized operações do usuário.
IAM-authorized as operações de gerenciamento modificam e visualizam a configuração do grupo de usuários e do cliente do aplicativo, como você faria no Console de gerenciamento da AWS.
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.
IAM-authorized operações de usuário cadastre-se, faça login, gerencie credenciais, modifique e visualize 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. A aplicação do lado do servidor é um cliente confidencial do OAuth no qual você confia, com acesso privilegiado aos seus 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 os tipos de clientes do OAuth, consulte Client Types
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 na aplicação, você pode distribuir um cliente público do OAuth que não fornece nenhum 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 |
Token-authorized as operações do usuário saem, gerenciam credenciais, modificam e visualizam seus usuários depois que eles se conectarem 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>
| Token-authorized operações do usuário | 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 usam 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.