View a markdown version of this page

Iniciação de sessão SAML em grupos de usuários do Amazon Cognito - Amazon Cognito

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á.

Iniciação de sessão SAML em grupos de usuários do Amazon Cognito

O Amazon Cognito oferece suporte ao login único (SSOSP-initiated) e ao SSO iniciados pelo provedor de serviços (). IdP-initiated Como melhor prática de segurança, implemente o SP-initiated SSO em seu grupo de usuários. A seção 5.1.2 da Visão geral V2.0 técnica do SAML descreve SP-initiated o SSO. O Amazon Cognito é o provedor de identidade (IdP) de sua aplicação. A aplicação é o provedor de serviços (SP) que recupera tokens para usuários autenticados. No entanto, quando você usa um IdP de terceiro para autenticar usuários, o Amazon Cognito é o SP. Quando seus usuários do SAML 2.0 se autenticam com um SP-initiated fluxo, eles sempre devem primeiro fazer uma solicitação ao Amazon Cognito e redirecionar para o IdP para autenticação.

Para alguns casos de uso empresariais, o acesso a aplicações internas começa em um marcador em um painel hospedado pelo IdP empresarial. Quando um usuário seleciona um marcador, o IdP gera uma resposta SAML e a envia ao SP para autenticar o usuário na aplicação.

Você pode configurar um SAML IdP em seu grupo de usuários para oferecer suporte a IdP-initiated SSO. Quando você oferece suporte à IdP-initiated autenticação, o Amazon Cognito não pode verificar se solicitou a resposta SAML recebida porque o Amazon Cognito não inicia a autenticação com uma solicitação SAML. No SP-initiated SSO, o Amazon Cognito define parâmetros de estado que validam uma resposta SAML em relação à solicitação original. Com o SP-initiated login, você também pode se proteger contra falsificação de solicitações entre sites (CSRF).

Implemente o login com SP-initated SAML

Como prática recomendada, implemente o login iniciado pelo provedor de serviços (SP-initiated) em seu grupo de usuários. O Amazon Cognito inicia a sessão do usuário e a redireciona para o seu IdP. Com esse método, você tem mais controle sobre quem apresenta as solicitações de login. Você também pode permitir o IdP-initiated login sob certas condições.

O processo a seguir mostra como os usuários concluem o SP-initiated login no seu grupo de usuários por meio de um provedor de SAML.

Diagrama de fluxo de autenticação do login do Amazon Cognito SP-initiated SAML.
  1. Seu usuário insere o endereço de e-mail em uma página de login. Para determinar o redirecionamento do usuário para o IdP, você pode coletar o endereço de e-mail em uma aplicação personalizada ou invocar o login gerenciado na visualização da web.

    Você pode configurar suas páginas de login gerenciadas para exibir uma lista IdPs ou solicitar um endereço de e-mail e combiná-lo com o identificador do seu IdP SAML. Para solicitar um endereço de e-mail, edite o estilo de identidade visual do login gerenciado e, em Fundação, localize Comportamento de autenticação e, em Exibição do provedor, defina Estilo de exibição como Entrada de pesquisa de domínio.

  2. Sua aplicação invoca o endpoint de redirecionamento do grupo de usuários e solicita uma sessão com o ID do cliente que corresponde à aplicação e o ID do IdP que corresponde ao usuário.

  3. O Amazon Cognito redireciona seu usuário para o IdP com uma solicitação SAML, opcionalmente assinada, em um elemento AuthnRequest.

  4. O IdP autentica o usuário de forma interativa ou com uma sessão memorizada por um cookie do navegador.

  5. O IdP redireciona seu usuário para o endpoint de resposta SAML do grupo de usuários com a declaração SAML opcionalmente criptografada em sua carga útil POST.

    nota

    O Amazon Cognito cancela sessões que não recebem uma resposta em 5 minutos e redireciona o usuário para o login gerenciado. Quando seu usuário encontra esse resultado, ele recebe a mensagem de erro Something went wrong.

  6. Após verificar a declaração do SAML e mapear atributos do usuário das declarações na resposta, o Amazon Cognito cria ou atualiza internamente o perfil do usuário no grupo de usuários. Normalmente, seu grupo de usuários retorna um código de autorização para a sessão do navegador do usuário.

  7. Seu usuário apresenta o código de autorização à sua aplicação, que troca o código por tokens web JSON (JWTs).

  8. A aplicação aceita e processa o token de ID do usuário como autenticação, gera solicitações autorizadas aos recursos com o token de acesso e armazena o token de atualização.

Quando um usuário se autentica e recebe uma concessão de código de autorização, o grupo de usuários retorna tokens de ID, acesso e atualização. O token de ID é um objeto de autenticação para gerenciamento de OIDC-based identidade. O token de acesso é um objeto de autorização com escopos do OAuth 2.0. O token de atualização é um objeto que gera novos tokens de ID e acesso quando os tokens atuais do usuário expiram. Você pode configurar a duração dos tokens dos usuários em seu cliente de aplicação do grupo de usuários.

Você também pode escolher a duração dos tokens de atualização. Depois que o token de atualização do usuário expirar, ele deverá fazer login novamente. Se eles fizerem a autenticação por meio de um IdP SAML, a duração da sessão de seus usuários será definida pela expiração dos tokens, não pela expiração da sessão com o IdP. A aplicação precisa armazenar o token de atualização de cada usuário e renovar a sessão quando ela expirar. O login gerenciado mantém as sessões do usuário em um cookie do navegador válido por 1 hora.

Implemente o login com IdP-initiated SAML

Ao configurar seu provedor de identidade para login no IdP-initiated SAML 2.0, você pode apresentar asserções de SAML ao saml2/idpresponse endpoint em seu domínio de grupo de usuários sem a necessidade de iniciar a sessão no. Autorizar endpoint Um grupo de usuários com essa configuração aceita declarações IdP-initiated SAML de um provedor de identidade externo do grupo de usuários compatível com o cliente do aplicativo solicitado.

Diagrama de fluxo de autenticação do login do Amazon Cognito IdP-initiated SAML.
  1. Um usuário solicita o login SAML em sua aplicação.

  2. A aplicação invoca um navegador ou redireciona o usuário para a página de login do provedor SAML.

  3. O IdP autentica o usuário de forma interativa ou com uma sessão memorizada por um cookie do navegador.

  4. O IdP redireciona o usuário para sua aplicação com a declaração SAML, ou resposta, no corpo POST.

  5. A aplicação adiciona a declaração SAML ao corpo POST de uma solicitação para o endpoint saml2/idpresponse do grupo de usuários.

  6. O Amazon Cognito emite um código de autorização para o usuário.

  7. Seu usuário apresenta o código de autorização à sua aplicação, que troca o código por tokens web JSON (JWTs).

  8. A aplicação aceita e processa o token de ID do usuário como autenticação, gera solicitações autorizadas aos recursos com o token de acesso e armazena o token de atualização.

As etapas a seguir descrevem o processo geral de configuração e login com um provedor de IdP-initiated SAML 2.0.

  1. Crie ou atribua um grupo de usuários e um cliente de aplicação.

  2. Crie um IdP SAML 2.0 em seu grupo de usuários.

  3. Configure seu IdP para suportar a iniciação do IdP. IdP-initiated O SAML apresenta considerações de segurança às quais outros provedores de SSO não estão sujeitos. Por esse motivo, você não pode adicionar algo que não seja SAML IdPs, incluindo o próprio grupo de usuários, a nenhum cliente de aplicativo que use um provedor de SAML com login. IdP-initiated

  4. Associe seu provedor de IdP-initiated SAML a um cliente de aplicativo em seu grupo de usuários.

  5. Direcione seu usuário para a página de login do seu IdP SAML e recupere uma declaração de SAML.

  6. Direcione o usuário ao endpoint saml2/idpresponse do grupo de usuários com sua declaração SAML.

  7. Receba tokens web JSON (JWTs).

Para aceitar declarações de SAML não solicitadas em seu grupo de usuários, pense no impacto sobre a segurança da sua aplicação. É provável que ocorram tentativas de falsificação de solicitações e CSRF quando você aceita solicitações. IdP-initiated Embora seu grupo de usuários não possa verificar uma sessão de IdP-initiated login, o Amazon Cognito valida seus parâmetros de solicitação e declarações de SAML.

Além disso, sua declaração de SAML não deve conter uma reivindicação InResponseTo e deve ter sido emitida nos últimos 6 minutos.

Você deve enviar solicitações com IdP-initiated SAML para o seu/saml2/idpresponse. Para solicitações de autorização de login gerenciadas SP-initiated e solicitações de autorização de login, você deve fornecer parâmetros que identifiquem o cliente do aplicativo solicitado, os escopos, o URI de redirecionamento e outros detalhes como parâmetros da sequência de caracteres de consulta nas HTTP GET solicitações. No entanto, para declarações de IdP-initiated SAML, os detalhes da sua solicitação devem ser formatados como um RelayState parâmetro no corpo de uma solicitação. HTTP POST O corpo da solicitação também deve conter sua declaração de SAML como um parâmetro SAMLResponse.

Veja a seguir um exemplo de solicitação e resposta para um provedor de IdP-initiated SAML.

POST /saml2/idpresponse HTTP/1.1 User-Agent: USER_AGENT Accept: */* Host: example.auth.us-east-1.amazoncognito.com Content-Type: application/x-www-form-urlencoded SAMLResponse=[Base64-encoded SAML assertion]&RelayState=identity_provider%3DMySAMLIdP%26client_id%3D1example23456789%26redirect_uri%3Dhttps%3A%2F%2Fwww.example.com%26response_type%3Dcode%26scope%3Demail%2Bopenid%2Bphone HTTP/1.1 302 Found Date: Wed, 06 Dec 2023 00:15:29 GMT Content-Length: 0 x-amz-cognito-request-id: 8aba6eb5-fb54-4bc6-9368-c3878434f0fb Location: https://www.example.com?code=[Authorization code]
Console de gerenciamento da AWS
Para configurar um IdP para SAML IdP-initiated
  1. Crie um grupo de usuários, um cliente de aplicação e um provedor de identidades SAML.

  2. Desassocie todos os provedores de identidade social e OIDC do seu cliente de aplicação, se houver algum associado.

  3. Navegue até o menu Provedores sociais e externos do grupo de usuários.

  4. Edite ou adicione um provedor SAML.

  5. Em Login IdP-initiated SAML, escolha Aceitar SP-initiated e IdP-initiated afirmações SAML.

  6. Escolha Salvar alterações.

API/CLI

Para configurar um IdP para SAML IdP-initiated

Configure o IdP-initiated SAML com o IDPInit parâmetro em uma solicitação de UpdateIdentityProviderAPI CreateIdentityProviderou API. Veja a seguir um exemplo ProviderDetails de um IdP compatível IdP-initiated com SAML.

"ProviderDetails": { "MetadataURL" : "https://myidp.example.com/saml/metadata", "IDPSignout" : "true", "RequestSigningAlgorithm" : "rsa-sha256", "EncryptedResponses" : "true", "IDPInit" : "true" }