Menu Docs
Página inicial do Docs
/ /
Serviç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 aAutenticaçã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 personalizado para um usuário da 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 uma taxa de transferência mais alta 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 executar várias solicitações sem autenticar o usuário novamente. Ele também permite enviar solicitações de um navegador da web que exija 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 um aplicativo que também usa um Realm SDK para autenticar usuários.

Você pode autenticar uma solicitação do GraphQ 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 às restrições do Cross-Origin Resource Sharing. Em vez disso, para autenticar solicitações GraphQL de um navegador, use a Autenticação de Portador.

Para autenticar uma solicitação do GraphQ 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 solicitação do GraphQ 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 do GraphQ 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}"
}'

Voltar

Expor Dados em uma Coleção