Usar operações de API de federação OIDC para aplicações móveis - AWS Identity and Access Management

Usar operações de API de federação OIDC para aplicações móveis

Para obter os melhores resultados, use o Amazon Cognito como intermediador de identidades para quase todos os cenários de federação OIDC. O Amazon Cognito é fácil de usar e fornece recursos adicionais como acesso anônimo (não autenticado) e sincronização de dados do usuário entre dispositivos e provedores. No entanto, se você já criou uma aplicação que usa federação OIDC e chama manualmente a API AssumeRoleWithWebIdentity, continue a usá-la, pois a aplicação continuará funcionando corretamente.

O processo de uso de federação OIDC sem o Amazon Cognito segue esta visão geral:

  1. Cadastre-se como desenvolvedor com o provedor de identidade externa (IdP) e configure seu aplicativo com o IdP, que fornece a você um ID exclusivo para seu aplicativo. (IdPs diferentes usam terminologia diferente para este processo. Esta descrição usa o termo configurar para o processo de identificação de sua aplicação com o IdP.) Cada IdP fornece a você um ID de aplicativo exclusivo para esse IdP, portanto, se você configurar o mesmo aplicativo com vários IdPs, seu aplicativo terá vários IDs. Você pode configurar vários aplicativos com cada fornecedor.

    Os links externos a seguir fornecem informações sobre como usar alguns dos provedores de identidade (IdPs) mais usados:

    Importante

    Se você usar um provedor de identidade OIDC do Google, Facebook ou Amazon Cognito, não crie um provedor de identidade do IAM separado noAWS Management Console. A AWS tem esses provedores de identidade OIDC incorporados e disponíveis para seu uso. Ignore a etapa a seguir e vá diretamente para a criação de novas funções usando seu provedor de identidade.

  2. Se você usar um IdP diferente do Google, Facebook ou Amazon Cognito compatível com OIDC, crie uma entidade de provedor de identidade do IAM para ele.

  3. No IAM, crie uma ou mais funções. Para cada função, defina quem pode assumir a função (a política de confiança) e quais permissões os usuários da aplicação têm (a política de permissões). Geralmente, você cria uma função para cada IdP ao qual um aplicativo dá suporte. Por exemplo, você pode criar uma função assumida por uma aplicação se o usuário fizer login por meio do Login with Amazon, uma segunda função para a mesma aplicação se o usuário fizer login por meio do Facebook e uma terceira função para a aplicação se o usuário fizer login por meio do Google. Para o relacionamento de confiança, especifique o IdP (como a Amazon.com) como o Principal (a entidade confiável) e inclua uma Condition que corresponda ao ID do aplicativo atribuído ao IdP. Exemplos de funções para diferentes provedores são descritos em Criar uma função para um provedor de identidade de terceiros (federação).

  4. Em seu aplicativo, autentique seus usuários com o IdP. As especificações de como fazer isso variam de acordo com qual IdP você usa (Login with Amazon, Facebook ou Google) e em qual plataforma sua aplicação é executada. Por exemplo, o método de autenticação de um aplicativo Android pode ser diferente do de um aplicativo iOS ou de um aplicativo da web baseado em JavaScript.

    Normalmente, se o usuário ainda não estiver conectado, o IdP exibirá uma página de login. Depois que o IdP autentica o usuário, ele retorna um token de autenticação com informações sobre o usuário para o seu aplicativo. As informações incluídas dependem do que o IdP expõe e as informações que o usuário está disposto a compartilhar. Você pode usar essas informações em seu aplicativo.

  5. Em seu aplicativo, faça uma chamada não assinada para a ação AssumeRoleWithWebIdentity para solicitar credenciais de segurança temporárias. Na solicitação, você passa o token de autenticação do IdP e especifica o nome do recurso da Amazon (ARN) para a função do IAM que você criou para esse IdP. A AWS verifica se o token é confiável e válido e, em caso afirmativo, retorna credenciais de segurança temporárias para sua aplicação com as permissões para a função que você indicou na solicitação. A resposta também inclui metadados sobre o usuário do IdP, como o ID de usuário exclusivo que o IdP associa ao usuário.

  6. Usando as credenciais de segurança temporárias da resposta AssumeRoleWithWebIdentity, seu aplicativo faz solicitações assinadas às operações de API da AWS. As informações de ID do usuário do IdP podem distinguir os usuários em sua aplicação, por exemplo, você pode colocar objetos em pastas do Amazon S3 que incluam o ID do usuário como prefixos ou sufixos. Isso permite que você crie políticas de controle de acesso que bloqueiem a pasta para que somente o usuário com esse ID possa acessá-lo. Para obter mais informações, consulte Identificar usuários com a federação OIDC mais adiante neste tópico.

  7. Seu aplicativo deve armazenar em cache as credenciais de segurança temporárias para que você não precise obter novas credenciais sempre que o aplicativo precisar fazer uma solicitação à AWS. Por padrão, as credenciais são válidas por uma hora. Quando as credenciais expiram (ou antes disso), você deve fazer outra chamada para AssumeRoleWithWebIdentity a fim de obter um novo conjunto de credenciais de segurança temporárias. Dependendo do IdP e como eles gerenciam seus tokens, talvez você precise atualizar o token do IdP antes de fazer uma nova chamada para AssumeRoleWithWebIdentity, pois os tokens do IdP geralmente também expiram após um período fixo. Se você usar o AWS SDK for iOS ou o AWS SDK for Android, poderá usar a ação AmazonSTSCredentialsProvider, que gerencia as credenciais temporárias do IAM, incluindo a atualização delas conforme necessário.