문서 메뉴

문서 홈Atlas App Services

GraphQL 요청 인증

이 페이지의 내용

  • 개요
  • 베어러 인증
  • 자격 증명 헤더
  • 이메일/비밀번호
  • API 키
  • 사용자 지정 JWT

GraphQL API를 사용하려면 수신 요청에 요청을 하는 사용자에 대한 인증 정보가 포함되어야 합니다. 이를 통해 API는 규칙을 적용하고 각 작업에 대한 문서 스키마의 유효성을 검사할 수 있습니다.

요청은 특정 요청 헤더에 인증 데이터를 포함해야 합니다. App Services는 다음 프로세스를 사용하여 특정 요청을 인증합니다.

  1. Authorization 헤더를 확인합니다. 이 토큰이 있는 경우 요청은 유효한 사용자 액세스 토큰과 함께 무기명 인증 을 사용해야 합니다. 토큰이 유효하지 않으면 요청이 실패합니다.

  2. Authorization 헤더가 없는 경우 자격 증명 헤더 를 확인합니다. 헤더에는 앱 사용자의 유효한 이메일/비밀번호, API 키 또는 사용자 지정 JWT 자격 증명이 포함되어야 합니다.

참고

먼저 인증 제공자를 활성화해야 사용자가 이를 통해 인증을 할 수 있습니다.

GraphQL API는 요청의 Authorization 헤더에 유효한 사용자 액세스 토큰을 포함하여 요청을 인증할 수 있는 베어러 인증을 지원합니다. 액세스 토큰을 얻고 관리하는 방법을 알아보려면 사용자 관리 세션을 참조하세요.

권한 부여 헤더는 다음과 같은 형식을 사용합니다.

Authorization: Bearer <AccessToken>

예를 들어 다음 요청은 베어러 인증을 사용합니다.

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}"
}'

일반적으로 액세스 토큰을 사용한 베어러 인증은 처리량이 더 높고 자격 증명 헤더보다 안전합니다. 가능하면 자격 증명 헤더 대신 액세스 토큰을 사용합니다. 토큰을 사용하면 사용자를 재인증하지 않고도 여러 요청을 실행할 수 있습니다. 또한 CORS를 시행하는 웹 브라우저에서 요청을 보낼 수도 있습니다.

중요

사용자 대상 클라이언트에서 API 키를 사용하지 마세요

브라우저 또는 다른 사용자용 클라이언트 애플리케이션에서 인증하는 경우 API 키를 사용하여 로그인하지 않도록 합니다. 대신 사용자가 제공한 자격 증명을 사용하는 다른 인증 제공자를 사용합니다. API 키나 기타 민감한 자격 증명을 로컬에 저장하지 마세요.

베어러 인증은 다음과 같은 경우에 유용합니다.

  • 웹 브라우저에서 요청을 전송합니다.

  • 사용자 자격 증명을 저장하거나 각 요청에 대해 사용자에게 메시지를 표시하지 않고 여러 요청을 전송할 수 있습니다.

  • Realm SDK 를 사용하여 사용자를 인증하는 앱에서 요청을 전송합니다.

요청 헤더에 사용자의 로그인 자격 증명을 포함하여 GraphQL 요청을 인증할 수 있습니다. 포함할 정확한 헤더는 인증 제공자에 따라 다릅니다.

자격 증명 헤더는 다음과 같은 경우에 유용합니다.

  • 서버 측 애플리케이션에서 보낸 요청

  • 명령줄 도구에서 보낸 요청

  • Postman과 같은 GraphQL 클라이언트에서 전송된 수동 또는 테스트 요청

중요

Cross-Origin Resource Sharing 으로 인해 웹 브라우저에서 보낸 요청을 인증하는 데 자격 증명 헤더를 사용할 수 없습니다. 제한. 대신 브라우저에서 GraphQL 요청을 인증하려면 베어러 인증을 사용하세요.

데이터 API 요청을 이메일/비밀번호 사용자로 인증하려면 해당 요청의 email 헤더 및 password 헤더에 사용자의 자격 증명을 입력하세요.

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}"
}'

API 키를 사용하여 GraphQL 요청을 인증하려면 요청의 apiKey 헤더에 API 키를 포함하세요.

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}"
}'

중요

사용자 대상 클라이언트에서 API 키를 사용하지 마세요

브라우저 또는 다른 사용자용 클라이언트 애플리케이션에서 인증하는 경우 API 키를 사용하여 로그인하지 않도록 합니다. 대신 사용자가 제공한 자격 증명을 사용하는 다른 인증 제공자를 사용합니다. API 키나 기타 민감한 자격 증명을 로컬에 저장하지 마세요.

GraphQL 요청을 사용자 지정 JWT 사용자로 인증하려면 요청의 jwtTokenString 헤더에 JWT 문자열을 포함하세요.

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}"
}'
← collection에 데이터 노출