Menu Docs

Página inicial do DocsServiços Atlas App

Autenticar solicitações GraphQL

Nesta página

  • Visão geral
  • Autenticação do portador
  • Cabeçalhos de credencial
  • E-mail/senha
  • Chave API
  • JWT personalizado

A API do GraphQL requer que as solicitações de entrada incluam informações de autenticação para o usuário que está fazendo a solicitação. Isso permite que a API aplique regras e valide esquemas de documentos para cada operação.

As solicitações devem incluir dados de autenticação em cabeçalhos de solicitação específicos. Os Serviços de apps utilizam o seguinte processo para autenticar um determinado pedido:

  1. Verifique se há um cabeçalho Authorization . Se estiver presente, a solicitação deverá usar a Autenticação de Portador com um token de acesso de usuário válido. Se o token for inválido, a solicitação falhará.

  2. Se o cabeçalho Authorization não estiver presente, verifique se há cabeçalhos de credenciais. Os cabeçalhos devem conter credenciais válidas de e-mail/senha, chave de API ou JWT personalizada para um usuário do aplicativo.

Observação

Você deve habilitar um fornecedor de autenticação antes que os usuários possam se autenticar com ele.

A API GraphQL oferece suporte à autenticação do portador, que permite autenticar uma solicitação incluindo um token de acesso de usuário válido no cabeçalho Authorization. Para saber como obter e gerenciar um token de acesso, consulte Gerenciar sessões de usuário.

O cabeçalho Autorização utiliza o seguinte formato:

Authorization: Bearer <AccessToken>

Por exemplo, a seguinte solicitação usa Autenticação ao portador:

curl -X POST 'https://services.cloud.mongodb.com/api/client/v2.0/app/<AppID>/graphql' \
--header 'Authorization: Bearer <AccessToken>' \
--header 'Content-Type: application/json' \
--data-raw '{
"query": "query AllMovies {\n movies {\n title\n year\n }\n}"
}'

Em geral, a autenticação de portador com um token de acesso tem maior taxa de transferência e é mais segura do que os cabeçalhos de credenciais. Use um token de acesso em vez de cabeçalhos de credenciais quando possível. O token permite que você execute várias solicitações sem autenticar o usuário novamente. Ele também permite que você envie solicitações de um navegador da Web que imponha o CORS.

Importante

Não use chaves de API em clientes direcionados ao usuário

Se você estiver autenticando de um navegador ou de outro aplicativo de cliente voltado para o usuário, evite usar uma chave API para se conectar. Em vez disso, use outro fornecedor de autenticação que tenha credenciais fornecidas pelo usuário. Nunca armazene chaves API ou outras credenciais sensíveis localmente.

A autenticação do portador é útil para:

  • enviando solicitações de um navegador da web.

  • enviar várias solicitações sem armazenar credenciais do usuário ou avisar o usuário em cada solicitação.

  • enviar solicitações de uma aplicação que também usa um Realm SDK para autenticar usuários.

Você pode autenticar uma solicitação GraphQL incluindo as credenciais de login do usuário nos cabeçalhos da solicitação. Os cabeçalhos exatos a incluir dependem do fornecedor de autenticação.

Cabeçalhos de credencial são úteis para:

  • solicitações enviadas de um aplicativo do lado do servidor

  • pedidos enviados de uma ferramenta de linha de comando

  • solicitações manuais ou de teste enviadas de um cliente GraphQL como o Postman

Importante

Não é possível usar cabeçalhos de credenciais para autenticar solicitações enviadas de um navegador da Web devido ao Compartilhamento de Recursos entre Origens restrições. Em vez disso, para autenticar solicitações GraphQL de um navegador, use a Autenticação de Portador.

Para autenticar uma solicitação GraphQL como um usuário de e-mail/senha, inclua as credenciais do usuário nos cabeçalhos email e password do pedido.

curl -X POST 'https://services.cloud.mongodb.com/api/client/v2.0/app/<AppID>/graphql' \
--header 'email: <EmailAddress>' \
--header 'password: <Password>' \
--header 'Content-Type: application/json' \
--data-raw '{
"query": "query AllMovies {\n movies {\n title\n year\n }\n}"
}'

Para autenticar uma requisição GraphQL com uma chave API, inclua a chave API no cabeçalho apiKey da solicitação.

curl -X POST 'https://services.cloud.mongodb.com/api/client/v2.0/app/<AppID>/graphql' \
--header 'apiKey: <APIKey>' \
--header 'Content-Type: application/json' \
--data-raw '{
"query": "query AllMovies {\n movies {\n title\n year\n }\n}"
}'

Importante

Não use chaves de API em clientes direcionados ao usuário

Se você estiver autenticando de um navegador ou de outro aplicativo de cliente voltado para o usuário, evite usar uma chave API para se conectar. Em vez disso, use outro fornecedor de autenticação que tenha credenciais fornecidas pelo usuário. Nunca armazene chaves API ou outras credenciais sensíveis localmente.

Para autenticar uma solicitação GraphQL como um usuário JWT personalizado, inclua a cadeia de caracteres JWT no cabeçalho jwtTokenString da solicitação.

curl -X POST 'https://services.cloud.mongodb.com/api/client/v2.0/app/<AppID>/graphql' \
--header 'jwtTokenString: <JWT>' \
--header 'Content-Type: application/json' \
--data-raw '{
"query": "query AllMovies {\n movies {\n title\n year\n }\n}"
}'
← Expor Dados em uma Coleção