SAMLinício de sessão nos 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á.

SAMLinício de sessão nos grupos de usuários do Amazon Cognito

O Amazon Cognito oferece suporte ao login único () iniciado pelo provedor de serviços (iniciado pelo SP) e iniciado pelo IDP. SSO SSO 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 técnica da SAML V2.0 descreve o SP-Initiated. 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 SAML 2.0 se autenticam com um fluxo iniciado pelo SP, eles devem sempre 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 SAML resposta e a envia ao SP para autenticar o usuário com o aplicativo.

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

Usando o login iniciado pelo SP SAML

Como prática recomendada, implemente o login service-provider-initiated (iniciado pelo SP) 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 o maior controle sobre quem apresenta as solicitações de login. Você também pode permitir o login iniciado pelo IDP sob certas condições.

O processo a seguir mostra como os usuários concluem o login iniciado pelo SP em seu grupo de usuários por meio de um SAML provedor.

Diagrama de fluxo de autenticação do login iniciado pelo Amazon Cognito SPSAML.
  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 um aplicativo personalizado ou invocar a interface de usuário hospedada na visualização da web. Você pode configurar sua interface de usuário hospedada para exibir uma lista IdPs ou solicitar apenas um endereço de e-mail.

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

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

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

  5. O IdP redireciona seu usuário para o endpoint de SAML resposta do grupo de usuários com a declaração SAMLopcionalmente 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 a interface hospedada. Quando seu usuário experimenta esse resultado, ele recebe uma mensagem Something went wrong de erro.

  6. Depois de verificar a SAML afirmação e mapear os atributos do usuário a partir 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 ao seu aplicativo, que troca o código por tokens JSON da web (JWTs).

  8. Seu aplicativo 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 identidade OIDC baseado. O token de acesso é um objeto de autorização com escopos OAuth2.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 aplicativo de pool 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á entrar novamente. Se eles se autenticaram por meio de um SAML IdP, a duração da sessão de seus usuários é definida pela expiração dos tokens, não pela expiração da sessão com o IdP. Seu aplicativo precisa armazenar o token de atualização de cada usuário e renovar a sessão quando ela expirar. A interface de usuário hospedada mantém as sessões do usuário em um cookie do navegador válido por 1 hora.

Usando o login iniciado pelo IdP SAML

Ao configurar seu provedor de identidade para login SAML 2.0 iniciado pelo IdP, você pode apresentar SAML afirmações 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 SAML afirmações iniciadas pelo IdP de um provedor de identidade externo do grupo de usuários compatível com o cliente do aplicativo solicitado. As etapas a seguir descrevem o processo geral de configuração e login com um provedor SAML 2.0 iniciado pelo IdP.

  1. Crie ou designe um grupo de usuários e um cliente de aplicativo.

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

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

  4. Associe seu SAML provedor iniciado pelo IdP 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 e recupere uma SAML afirmação. SAML

  6. Direcione seu usuário para o saml2/idpresponse endpoint do grupo de usuários com a SAML afirmação dele.

  7. Receba tokens JSON da web (JWTs).

Para aceitar SAML afirmações não solicitadas em seu grupo de usuários, você deve considerar seus efeitos na segurança do seu aplicativo. É provável que ocorram CSRF tentativas e falsificações de solicitações quando você aceita solicitações iniciadas pelo IDP. Embora seu grupo de usuários não possa verificar uma sessão de login iniciada pelo IdP, o Amazon Cognito valida seus parâmetros e afirmações de solicitação. SAML

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

Você deve enviar solicitações com o IDP iniciado SAML para o seu. /saml2/idpresponse Para solicitações de autorização de interface de usuário hospedadas e iniciadas pelo SP, você deve fornecer parâmetros que identifiquem o cliente do aplicativo solicitado, os escopos, o redirecionamento URI e outros detalhes como parâmetros da sequência de caracteres de consulta nas solicitações. HTTP GET No entanto, para SAML declarações iniciadas pelo IDP, 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 SAML afirmação como SAMLResponse parâmetro.

Veja a seguir um exemplo de solicitação para um provedor iniciado pelo IDPSAML.

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]
AWS Management Console
Para configurar um IdP para IdP iniciado SAML
  1. Crie um grupo de usuários, um cliente de aplicativo e um provedor de SAML identidade.

  2. Desassocie todos os provedores sociais e de OIDC identidade do seu cliente de aplicativo, se houver algum associado.

  3. Navegue até a guia Experiência de login do seu grupo de usuários.

  4. Em Login do provedor de identidade federado, edite ou adicione um provedor. SAML

  5. Em SAMLLogin iniciado pelo IDP, escolha Aceitar afirmações iniciadas pelo SP e iniciadas pelo IDP. SAML

  6. Escolha Salvar alterações.

API/CLI

Para configurar um IdP para IdP iniciado SAML

Configure o IdP iniciado SAML com o IDPInit parâmetro em uma solicitação CreateIdentityProvideror UpdateIdentityProviderAPI. Veja a seguir um exemplo ProviderDetails de um IdP que oferece suporte ao IdP iniciado. SAML

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