Escopos, M2M e APIs com servidores de recursos - 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á.

Escopos, M2M e APIs com servidores de recursos

Depois de configurar um domínio para seu grupo de usuários, o Amazon Cognito provisiona automaticamente um servidor de autorização OAuth 2.0 e uma interface de usuário web hospedada com páginas de inscrição e login que seu aplicativo pode apresentar aos seus usuários. Para ter mais informações, consulte Adicionar um cliente de aplicativo com a interface hospedada. Você pode escolher os escopos que deseja que o servidor de autorização adicione aos tokens de acesso. Os escopos autorizam o acesso aos servidores de recursos e aos dados de usuário.

Um servidor de recursos é um API servidor OAuth 2.0. Para proteger recursos protegidos por acesso, ele valida se os tokens de acesso do seu grupo de usuários contêm os escopos que autorizam o método e o caminho solicitados no que ele protege. API Ele confirma o emissor, com base na assinatura do token, a validade, com base no tempo de expiração do token, e o nível de acesso, com base nos escopos das solicitações de token. Os escopos do grupo de usuários estão na scope declaração do token de acesso. Para obter mais informações sobre as reivindicações nos tokens de acesso do Amazon Cognito, consulte Entendendo o token de acesso.

Com o Amazon Cognito, os escopos nos tokens de acesso podem autorizar o acesso a atributos externos APIs ou de usuário. Você pode emitir tokens de acesso para usuários locais, usuários federados ou identidades de máquinas.

APIautorização

A seguir estão algumas das maneiras pelas quais você pode autorizar solicitações APIs com tokens do Amazon Cognito:

Token de acesso

Ao adicionar um autorizador do Amazon Cognito a uma configuração de solicitação de REST API método, adicione escopos de autorização à configuração do autorizador. Com essa configuração, você API aceita tokens de acesso no Authorization cabeçalho e os analisa quanto aos escopos aceitos.

Token de ID

Quando você passa um token de ID válido para um autorizador do Amazon Cognito em seu RESTAPI, o API Gateway aceita a solicitação e passa o conteúdo do token de ID para o back-end. API

Amazon Verified Permissions

Em Permissões verificadas, você tem a opção de criar um repositório API de políticas vinculado. O Verified Permissions cria e atribui um autorizador Lambda que processa tokens de ID ou de acesso do cabeçalho da sua solicitação. Authorization Esse autorizador Lambda passa seu token para seu repositório de políticas, onde as Permissões Verificadas o comparam às políticas e retornam uma decisão de permissão ou negação ao autorizador.

Machine-to-machine Autorização (M2M)

O Amazon Cognito oferece suporte a aplicativos que acessam API dados com identidades de máquinas. As identidades de máquinas em grupos de usuários são clientes confidenciais que são executados em servidores de aplicativos e se conectam remotamenteAPIs. Sua operação acontece sem a interação do usuário: tarefas agendadas, fluxos de dados ou atualizações de ativos. Quando esses clientes autorizam suas solicitações com um token de acesso, eles realizam a autorização máquina a máquina, ou M2M. Na autorização M2M, um segredo compartilhado substitui as credenciais do usuário no controle de acesso.

Um aplicativo que acessa um API com autorização M2M deve ter um ID do cliente e um segredo do cliente. Em seu grupo de usuários, você deve criar um cliente de aplicativo que ofereça suporte à concessão de credenciais de clientes. Para oferecer suporte às credenciais do cliente, seu cliente de aplicativo deve ter um segredo de cliente e você deve ter um domínio de grupo de usuários. Nesse fluxo, a identidade da sua máquina solicita um token de acesso diretamente doEndpoint de token. Você pode autorizar somente escopos personalizados de servidores de recursos em tokens de acesso para concessões de credenciais de clientes. Para obter mais informações sobre como configurar clientes de aplicativos, consulteConfigurações específicas do aplicativo com clientes de aplicativos.

O token de acesso de uma concessão de credenciais de cliente é uma declaração verificável das operações que você deseja permitir que sua identidade de máquina solicite de um. API Para saber mais sobre como os tokens de acesso autorizam API solicitações, continue lendo. Para ver um exemplo de aplicativo, consulte Autorização máquina a máquina baseada no Amazon Cognito e no API Gateway usando. AWS CDK

A autorização M2M tem um modelo de cobrança que difere da forma como os usuários ativos mensais (MAUs) são cobrados. Quando a autenticação do usuário tem um custo por usuário ativo, o faturamento M2M reflete as credenciais ativas do cliente, os clientes do aplicativo e o volume total de solicitações de tokens. Para mais informações, consulte Preços do Amazon Cognito. Para controlar os custos da autorização M2M, otimize a duração dos tokens de acesso e o número de solicitações de token que seus aplicativos fazem. Veja uma maneira Gerenciando a expiração e o armazenamento em cache do token do grupo de usuários de usar o cache do API Gateway para reduzir as solicitações de novos tokens na autorização M2M.

Para obter informações sobre como otimizar as operações do Amazon Cognito que adicionam custos à AWS sua fatura, consulte. Gerenciar custos da

Sobre escopos

Um escopo é um nível de acesso que um aplicativo pode solicitar para um recurso. Em um token de acesso do Amazon Cognito, o escopo é respaldado pela confiança que você configura com o grupo de usuários: um emissor confiável de tokens de acesso com uma assinatura digital conhecida. Grupos de usuários podem gerar tokens de acesso com escopos que provam que seu cliente tem permissão para gerenciar parte ou a totalidade de seu próprio perfil de usuário ou recuperar dados de um back-end. API Os grupos de usuários do Amazon Cognito emitem tokens de acesso com o API escopo reservado, os escopos personalizados e os escopos do OpenID Connect () dos grupos de usuários. OIDC

O API escopo reservado do grupo de usuários

O aws.cognito.signin.user.admin escopo autoriza operações de autoatendimento para o usuário atual nos grupos de usuários do Amazon Cognito. API Ele autoriza o portador de um token de acesso a consultar e atualizar todas as informações sobre o portador com, por exemplo, as operações e. GetUserUpdateUserAttributesAPI Quando você autentica seu usuário com os API grupos de usuários do Amazon Cognito, esse é o único escopo que você recebe no token de acesso. Também é o único escopo necessário para ler e gravar atributos de usuário que você autorizou o cliente da aplicação a ler e gravar. Também é possível solicitar esse escopo em solicitações ao Autorizar endpoint. Esse escopo por si só não é suficiente para solicitar atributos de usuário do userInfo ponto final. Para tokens de acesso que autorizam grupos de usuários API e userInfo solicitações para seus usuários, você deve solicitar os dois escopos openid e aws.cognito.signin.user.admin em uma /oauth2/authorize solicitação.

Escopos personalizados

Os escopos personalizados autorizam solicitações externas APIs que os servidores de recursos protegem. Você pode solicitar escopos personalizados com outros tipos de escopos. É possível encontrar mais informações sobre escopos personalizados em toda esta página.

escopos do OpenID Connect () OIDC

Ao autenticar usuários com seu servidor de autorização do grupo de usuários, inclusive com a interface de usuário hospedada, você deve solicitar escopos. É possível autenticar usuários locais do grupo de usuários e usuários federados de terceiros no servidor de autorização do Amazon Cognito. OIDCos escopos autorizam seu aplicativo a ler as informações do usuário do seu userInfo ponto final grupo de usuários. O OAuth modelo, em que você consulta os atributos do usuário a partir do userInfo endpoint, pode otimizar seu aplicativo para um grande volume de solicitações de atributos do usuário. O endpoint userInfo retorna atributos em um nível de permissão que é determinado pelos escopos no token de acesso. Você pode autorizar seu cliente do aplicativo a emitir tokens de acesso com os seguintes OIDC escopos.

OpenID

O escopo mínimo para consultas do OpenID Connect (OIDC). Autoriza o token de ID, a reivindicação de identificador exclusivo sub e a capacidade de solicitar outros escopos.

nota

Quando você solicita o escopo openid e nenhum outro, o token de ID do grupo de usuários e a resposta userInfo incluem declarações para todos os atributos do usuário que o cliente da aplicação pode ler. Quando você solicita openid e outros OIDC escoposprofile, comoemail, ephone, o conteúdo do token de ID e da userInforesposta é limitado às restrições dos escopos adicionais.

Por exemplo, uma solicitação ao Autorizar endpoint com o parâmetro scope=openid+email retorna um token de ID com sub, email e email_verified. O token de acesso dessa solicitação exibe os mesmos atributos de userInfo ponto final. Uma solicitação com o parâmetro scope=openid exibe todos os atributos legíveis pelo cliente no token de ID e de userInfo.

profile

Autoriza todos os atributos de usuário que o cliente da aplicação pode ler.

email

Autoriza os atributos do usuário email e email_verified. O Amazon Cognito vai gerar email_verified se tiver um valor definido explicitamente.

phone

Autoriza os atributos do usuário phone_number e phone_number_verified.

Sobre servidores de recursos

Um servidor de recursos API pode conceder acesso às informações em um banco de dados ou controlar seus recursos de TI. Um token de acesso do Amazon Cognito pode autorizar o acesso a APIs esse suporte 2.0. OAuth O Amazon API Gateway REST APIs tem suporte integrado para autorização com tokens de acesso do Amazon Cognito. Seu aplicativo passa o token de acesso na API chamada para o servidor de recursos. O servidor de recursos inspeciona o token de acesso para determinar se o acesso deve ser concedido.

O Amazon Cognito pode fazer futuras atualizações no esquema dos tokens de acesso do grupo de usuários. Se seu aplicativo analisar o conteúdo do token de acesso antes de passá-lo para umAPI, você deverá criar seu código para aceitar atualizações no esquema.

Os escopos personalizados são definidos por você e ampliam os recursos de autorização de um grupo de usuários para incluir propósitos não relacionados à consulta e modificação de usuários e seus atributos. Por exemplo, se você possui um servidor de recursos para fotos, ele pode definir dois escopos: photos.read para acesso de leitura das fotos e photos.write para acesso de gravação/exclusão. Você pode configurar um API para aceitar tokens de acesso para autorização e conceder HTTP GET solicitações para acessar tokens photos.read na scope reivindicação e HTTP POST solicitações para tokens comphotos.write. Estes são escopos personalizados.

nota

O servidor de recursos deve verificar a assinatura e a data de expiração do token de acesso antes de processar quaisquer reivindicações dentro do token. Para obter mais informações sobre como verificar tokens, consulte Verificando um token JSON da Web. Para obter mais informações sobre como verificar e usar tokens de grupos de usuários no Amazon API Gateway, consulte o blog Integrando grupos de usuários do Amazon Cognito com o Gateway. API APIO Gateway é uma boa opção para inspecionar tokens de acesso e proteger seus recursos. Para saber mais sobre os autorizadores do API Gateway Lambda, consulte Usar autorizadores do Gateway API Lambda.

Visão geral

Com o Amazon Cognito, você pode criar servidores de recursos OAuth 2.0 e associar escopos personalizados a eles. Escopos personalizados em um token de acesso autorizam ações específicas em seu. API Você pode autorizar qualquer cliente de aplicação no grupo de usuários a emitir escopos personalizados de qualquer um dos servidores de recursos. Associe seus escopos personalizados a um cliente de aplicativo e solicite esses escopos em concessões de código de autorização OAuth 2.0, concessões implícitas e concessões de credenciais de cliente do. Endpoint de token O Amazon Cognito adiciona escopos personalizados na reivindicação scope em um token de acesso. Um cliente pode usar o token de acesso em seu servidor de recursos, o que faz com que a decisão de autorização baseada nos escopos esteja presente no token. Para obter mais informações sobre o escopo do token de acesso, consulte Usar tokens com grupos de usuários.

Uma visão geral do fluxo de um servidor de recursos. O cliente solicita uma concessão com um escopo personalizado, o grupo de usuários retorna um token de acesso com o escopo personalizado e o cliente apresenta o token de acesso a umAPI.

Para obter um token de acesso com escopos personalizados, a aplicação precisa fazer uma solicitação ao Endpoint de token para resgatar um código de autorização ou solicitar uma concessão de credenciais de cliente. Na UI hospedada, você também pode solicitar escopos personalizados em um token de acesso por meio de uma concessão implícita.

nota

Porque eles foram projetados para autenticação interativa humana com o grupo de usuários como IdP, InitiateAuthe as AdminInitiateAuthsolicitações só produzem uma scope declaração no token de acesso com o valor único. aws.cognito.signin.user.admin

Gerenciar o servidor de recursos e os escopos personalizados

Ao criar um servidor de recursos, é necessário fornecer um nome e um identificador do servidor de recursos. Para cada escopo criado no servidor de recursos, é necessário fornecer o nome e a descrição do escopo.

  • Nome do servidor de recursos: um nome fácil de lembrar para o servidor de recursos, como Solar system object tracker ou Photo API.

  • Identificador do servidor de recursos: um identificador exclusivo do servidor de recursos. O identificador é qualquer nome que você queira associar ao seuAPI, por exemplosolar-system-data. Você pode configurar identificadores mais longos, https://solar-system-data-api.example.com como uma referência mais direta aos API URI caminhos, mas cadeias de caracteres mais longas aumentam o tamanho dos tokens de acesso.

  • Nome do escopo: o valor que você quer nas reivindicações scope. Por exemplo, sunproximity.read.

  • Descrição: uma descrição simples do escopo. Por exemplo, Check current proximity to sun.

O Amazon Cognito pode incluir escopos personalizados nos tokens de acesso para qualquer usuário, seja local para o grupo de usuários ou federado com um provedor de identidade de terceiros. Você pode escolher escopos para os tokens de acesso de seus usuários durante os fluxos de autenticação com o servidor de autorização OAuth 2.0 que inclui a interface de usuário hospedada. A autenticação do usuário deve começar no Autorizar endpoint com scope como um dos parâmetros da solicitação. O formato a seguir é recomendado para servidores de recursos. Para um identificador, use um nome API amigável. Para um escopo personalizado, use a ação autorizada.

resourceServerIdentifier/scopeName

Por exemplo, você descobriu um novo asteróide no cinturão de Kuiper e deseja registrá-lo por meio do seu. solar-system-data API O escopo que autoriza operações de gravação no banco de dados de asteroides é asteroids.add. Ao solicitar o token de acesso que o autorizará a registrar sua descoberta, formate seu parâmetro de scope HTTPS solicitação comoscope=solar-system-data/asteroids.add.

Excluir um escopo de um servidor de recursos não exclui a sua associação com todos os clientes. Em vez disso, o escopo é marcado como inativo. O Amazon Cognito não adiciona escopos inativos aos tokens de acesso, mas continua normalmente caso a aplicação solicite um. Se você adicionar o escopo ao servidor de recursos novamente mais tarde, o Amazon Cognito o gravará novamente no token de acesso. Se você solicitar um escopo que não tenha associado ao cliente de aplicação, independentemente de tê-lo excluído do servidor de recursos do grupo de usuários, a autenticação falhará.

Você pode usar o AWS Management Console,API, ou CLI para definir servidores de recursos e escopos para seu grupo de usuários.

Como definir um servidor de recurso para o grupo de usuários (AWS Management Console)

Você pode usar o AWS Management Console para definir um servidor de recursos para seu grupo de usuários.

Para definir um servidor de recursos
  1. Faça login no console do Amazon Cognito.

  2. No painel de navegação, escolha User Pools (Grupos de usuários) e escolha o grupo de usuários que deseja editar.

  3. Escolha a guia App integration (Integração da aplicação) e localize Resource servers (Servidores de recursos).

  4. Escolha Create a resource server (Criar um servidor de recursos).

  5. Insira um Resource server name (Nome do servidor de recursos). Por exemplo, Photo Server.

  6. Insira um Resource server identifier (Identificador do servidor de recursos). Por exemplo, com.example.photos.

  7. Insira os Custom scopes (Escopos personalizados) para seus recursos, como read e write.

  8. Para cada Scope name (Nome de escopo), insira uma Description (Descrição), como view your photos e update your photos.

  9. Escolha Criar.

Seus escopos personalizados podem ser revisados na guia App integration (Integração da aplicação) em Resource servers (Servidores de recursos), na coluna Custom scopes (Escopos personalizados). É possível habilitar escopos personalizados para clientes de aplicações na guia App integration (Integração da aplicação) em App clients (Clientes da aplicação). Selecione um cliente da aplicação, localize Hosted UI settings (Configurações de interface do usuário hospedada) e escolha Edit (Editar). Adicione Custom scopes (Escopos personalizados) e escolha Save changes (Salvar alterações).

Definindo um servidor de recursos para seu grupo de usuários (AWS CLI e AWS API)

Use os comandos a seguir para especificar as configurações do servidor de recursos para o seu grupo de usuários.

Para criar um servidor de recursos
Para obter informações sobre as configurações do servidor de recursos
Para listar informações sobre todos os servidores de recursos do seu grupo de usuários
Para excluir um servidor de recursos
Para atualizar as configurações de um servidor de recursos