Usar federação de identidades na Web - Amazon DynamoDB

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

Usar federação de identidades na Web

Se você estiver criando um aplicativo direcionado a um grande número de usuários, você poderá, opcionalmente, usar a federação de identidades da web para autenticação e autorização. A federação de identidades da web exclui a necessidade de criar usuários do individuais. Em vez disso, os usuários podem entrar em um provedor de identidade e, em seguida, obter credenciais de segurança temporárias de AWS Security Token Service (AWS STS). O aplicativo pode então usar essas credenciais para acessar os AWS serviços.

A federação de identidades na web é compatível com os seguintes provedores de identidade:

  • Login with Amazon

  • Facebook

  • Google

Recursos adicionais para federação de identidades na Web

Os recursos a seguir podem ajudá-lo a saber mais sobre a federação de identidades na web:

  • A postagem Web Identity Federation using the AWS SDK for .NET no blog de desenvolvedores da AWS ensina a usar a federação de identidades na Web com o Facebook. Ele inclui trechos de código em C# que mostram como assumir uma função do IAM com identidade da web e como usar credenciais de segurança temporárias para acessar um recurso. AWS

  • O AWS Mobile SDK for iOS e o AWS Mobile SDK for Androidcontêm exemplos de aplicações. Eles incluem código que mostra como chamar os provedores de identidade e, depois, como usar as informações desses provedores para obter e usar credenciais de segurança temporárias.

  • O artigo Federação de identidade da Web com aplicativos móveis discute a federação de identidade da web e mostra um exemplo de como usar a federação de identidade da web para acessar um AWS recurso.

Exemplo de política para federação de identidades na Web

Para mostrar como você pode usar a federação de identidades da web com o DynamoDB, revise GameScoresa tabela que foi apresentada em. Uso de condições de política do IAM para controle de acesso refinado Aqui está a chave primária para GameScores.

Nome da tabela Tipo de chave primária Nome e tipo de chave de partição Nome e tipo de chave de classificação
GameScores (UserId, GameTitle, ...) Composto Nome do atributo: UserId

Tipo: string
Nome do atributo: GameTitle

Tipo: string

Agora, suponha que um aplicativo de jogos móveis use essa tabela, e que o aplicativo precise oferecer suporte a milhares, ou até mesmo milhões, de usuários. Nessa escala, fica muito difícil gerenciar usuários individuais do aplicativo e garantir que cada usuário possa acessar apenas seus próprios dados na GameScorestabela. Felizmente, muitos usuários já têm contas com um provedor de identidade de terceiros, como o Facebook, o Google ou o Login with Amazon. Então faz sentido usar um desses provedores nas tarefas de autenticação.

Para fazer isso usando a federação de identidades na web, o desenvolvedor do aplicativo deve registrar o aplicativo com um provedor de identidade (como o Login with Amazon) e obter um ID de aplicativo exclusivo. Em seguida, o desenvolvedor precisa criar um perfil do IAM. (Neste exemplo, essa função é nomeada GameRole.) A função deve ter um documento de política do IAM anexado a ela, especificando as condições sob as quais o aplicativo pode acessar a GameScorestabela.

Quando um usuário deseja jogar, ele faz login em sua conta do Login with Amazon de dentro do aplicativo do jogo. Em seguida, o aplicativo chama AWS Security Token Service (AWS STS), fornecendo o ID do aplicativo Login with Amazon e solicitando a adesão. GameRole AWS STS retorna AWS credenciais temporárias para o aplicativo e permite que ele acesse a GameScorestabela, de acordo com o documento GameRolede política.

O diagrama a seguir mostra como essas partes se encaixam.

Visão geral da federação de identidades da .Web

  1. O aplicativo chama um provedor de identidade de terceiros para autenticar o usuário e o aplicativo. O provedor de identidade retorna um token de identidade da web para o aplicativo.

  2. O aplicativo chama AWS STS e passa o token de identidade da web como entrada. AWS STS autoriza o aplicativo e fornece credenciais de AWS acesso temporário. O aplicativo pode assumir uma função do IAM (GameRole) e acessar AWS recursos de acordo com a política de segurança da função.

  3. O aplicativo chama o DynamoDB para acessar a tabela. GameScores Por ter assumido o GameRole, o aplicativo está sujeito à política de segurança associada a essa função. O documento de política impede o aplicativo de acessar dados que não pertencem ao usuário.

Mais uma vez, aqui está a política de segurança GameRoleque foi mostrada emUso de condições de política do IAM para controle de acesso refinado:

{ "Version":"2012-10-17", "Statement":[ { "Sid":"AllowAccessToOnlyItemsMatchingUserID", "Effect":"Allow", "Action":[ "dynamodb:GetItem", "dynamodb:BatchGetItem", "dynamodb:Query", "dynamodb:PutItem", "dynamodb:UpdateItem", "dynamodb:DeleteItem", "dynamodb:BatchWriteItem" ], "Resource":[ "arn:aws:dynamodb:us-west-2:123456789012:table/GameScores" ], "Condition":{ "ForAllValues:StringEquals":{ "dynamodb:LeadingKeys":[ "${www.amazon.com:user_id}" ], "dynamodb:Attributes":[ "UserId", "GameTitle", "Wins", "Losses", "TopScore", "TopScoreDateTime" ] }, "StringEqualsIfExists":{ "dynamodb:Select":"SPECIFIC_ATTRIBUTES" } } } ] }

A Condition cláusula determina quais itens GameScoressão visíveis para o aplicativo. Isso é feito ao comparar o ID do Login with Amazon com os valores de chave de partição UserId em GameScores. Somente os itens que pertencem ao usuário atual podem ser processados usando uma das ações do DynamoDB que estão listadas nessa política. Outros itens na tabela não podem ser acessados. Além disso, somente os atributos específicos listados na política podem ser acessados.