Fluxo de autenticação do IdP do grupo de usuários do OIDC - Amazon Cognito

Fluxo de autenticação do IdP do grupo de usuários do OIDC

Com o login do OpenID Connect (OIDC), seu grupo de usuários automatiza um fluxo de login com código de autorização em seu provedor de identidades (IdP). Depois que o usuário conclui o login com o IdP, o Amazon Cognito coleta o código no endpoint oauth2/idpresponse do provedor externo. Com o token de acesso resultante, seu grupo de usuários consulta o endpoint userInfo do IdP para recuperar os atributos do usuário. Em seguida, seu grupo de usuários compara os atributos recebidos com as regras de mapeamento de atributos que você configurou e preenche o perfil do usuário e o token de ID adequadamente.

Os escopos do OAuth 2.0 que você solicita na configuração do provedor OIDC definem os atributos de usuário que o IdP fornece ao Amazon Cognito. Como prática recomendada de segurança, solicite somente os escopos que correspondem aos atributos que você deseja mapear para seu grupo de usuários. Por exemplo, se seu grupo de usuários solicitar openid profile, você receberá todos os atributos possíveis, mas se solicitar openid email phone_number, você receberá apenas o endereço de e-mail e o número de telefone do usuário. Você pode configurar os escopos que solicita dos IdPs do OIDC para serem diferentes daqueles que você autoriza e solicita na solicitação de autenticação do cliente de aplicação e do grupo de usuários.

Quando o usuário faz login em sua aplicação usando um IdP OIDC, seu grupo de usuários conduz o seguinte fluxo de autenticação.

  1. O usuário acessa a página de login integrada do Amazon Cognito e vê a opção de fazer login por meio de um IdP OIDC, como o Salesforce, por exemplo.

  2. O usuário é redirecionado ao endpoint authorization do IdP OIDC.

  3. Depois que o usuário é autenticado, o IdP OIDC é redirecionado para o Amazon Cognito com um código de autorização.

  4. O Amazon Cognito troca o código de autorização com o IdP OIDC por um token de acesso.

  5. O Amazon Cognito cria ou atualiza a conta do usuário no grupo de usuários.

  6. O Amazon Cognito emite tokens do portador da aplicação, o que pode incluir tokens de identidade, acesso e atualização.

Fluxo de autenticação do IdP do grupo de usuários do OIDC
nota

O Amazon Cognito cancela solicitações de autenticação que não são concluídas em 5 minutos e redireciona o usuário para a interface do usuário hospedada. A página exibe a mensagem de erro Something went wrong (Ocorreu algum problema).

OIDC é uma camada de identidade na parte superior do OAuth 2.0, que especifica tokens de identidade em formato JSON (JWT) que são emitidos por IdPs para aplicativos cliente OIDC (terceiros confiáveis). Consulte a documentação do IdP OIDC para obter informações sobre como adicionar o Amazon Cognito como uma parte dependente OIDC.

Quando um usuário se autentica com 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 token OIDC padrão para o gerenciamento de identidades, o token de acesso é um token OAuth 2.0 padrão. Para obter mais informações sobre os tipos de concessão que o cliente de aplicação do grupo de usuários pode comportar, consulte Autorizar endpoint.

Como um grupo de usuários processa declarações de um provedor de OIDC

Quando o usuário conclui o login com um provedor de OIDC de terceiros, a interface de usuário hospedada do Amazon Cognito recupera um código de autorização do IdP. O grupo de usuários troca o código de autorização por tokens de acesso e ID com o endpoint token do IdP. O grupo de usuários não transmite esses tokens ao usuário ou à aplicação, mas os utiliza para criar um perfil de usuário com dados que ele apresenta em declarações nos próprios tokens.

O Amazon Cognito não valida de forma independente o token de acesso. Em vez disso, ele solicita informações de atributos do usuário do endpoint userInfo do provedor e espera que a solicitação seja negada se o token não for válido.

O Amazon Cognito valida o token de ID do provedor com as seguintes verificações:

  1. Confira se o provedor assinou o token com um algoritmo do seguinte conjunto: RSA, HMAC, Elliptic Curve.

  2. Se o provedor assinou o token com um algoritmo de assinatura assimétrico, confira se o ID da chave de assinatura na declaração kid do token está listado no endpoint jwks_uri do provedor.

  3. Compare a assinatura do token de ID com a assinatura que se espera com base nos metadados do provedor.

  4. Compare a declaração iss com o emissor de OIDC configurado para o IdP.

  5. Compare se a declaração aud corresponde ao ID do cliente configurado no IdP ou se ela contém o ID do cliente configurado se houver vários valores na declaração aud.

  6. Confira se a data e a hora na declaração exp não é anterior à hora atual.

O grupo de usuários valida o token de ID e, depois, tenta fazer uma solicitação ao endpoint userInfo do provedor com o token de acesso do provedor. Ele recupera todas as informações do perfil do usuário que os escopos no token de acesso o autorizam a ler. Depois, o grupo de usuários procura os atributos do usuário definidos conforme necessário. É necessário criar mapeamentos para os atributos necessários na configuração do provedor. O grupo de usuários confere o token de ID do provedor e a resposta userInfo. O grupo de usuários grava todas as declarações que correlacionam regras de mapeamento e atributos do usuário no perfil do grupo de usuários. O grupo de usuários ignora atributos que, embora correspondam a uma regra de mapeamento, não são obrigatórios e não se encontram nas declarações do provedor.