데이터 API 요청 인증
개요
일반적으로 데이터 API 엔드포인트에서는 엔드포인트를 호출하는 사용자에 대한 인증 정보가 수신 요청에 포함되어야 합니다. 이렇게 하면 엔드포인트가 규칙을 적용하여 각 요청에 대한 문서 스키마의 유효성을 검사할 수 있습니다.
요청은 특정 요청 헤더에 인증 데이터를 포함해야 합니다. App Services는 다음 프로세스를 사용하여 특정 요청을 인증합니다.
Authorization
헤더를 확인합니다. 존재하는 경우 베어러 인증 을 사용해 보세요. 헤더에는 유효한 사용자 액세스 토큰이 포함되어야 합니다. 토큰이 유효하지 않으면 요청 이 실패합니다.Authorization
헤더가 없거나 "베어러" 체계를 사용하지 않는 경우 자격 증명 자격 증명 헤더를 확인하세요. 헤더에는 앱 사용자의 유효한 이메일/비밀번호, API 키 또는 커스텀 JWT 자격 증명이 포함되어야 합니다.
참고
먼저 인증 제공자를 활성화해야 사용자가 이를 통해 인증을 할 수 있습니다.
베어러 인증
데이터 API는 요청의 Authorization
헤더에 유효한 사용자 액세스 토큰을 포함하여 요청을 인증할 수 있는 베어러 인증을 지원합니다. 액세스 토큰을 얻고 관리하는 방법을 알아보려면 사용자 관리 세션을 참조하세요.
권한 부여 헤더는 다음과 같은 형식을 사용합니다.
Authorization: Bearer <AccessToken>
예를 들어 다음 요청은 베어러 인증을 사용합니다.
curl -s "https://data.mongodb-api.com/app/myapp-abcde/endpoint/data/v1/action/findOne" \ -X POST \ -H "Accept: application/json" \ -H "Authorization: Bearer $ACCESS_TOKEN" \ -d '{ "dataSource": "mongodb-atlas", "database": "sample_mflix", "collection": "movies", "filter": { "title": "The Matrix" } }'
액세스 토큰을 이용한 베어러 인증은 일반적으로 처리량이 더 높고 자격 증명 헤더보다 안전합니다. 가능하다면 자격 증명 헤더 대신 액세스 토큰을 사용하세요. 이 토큰을 사용하면 사용자를 재인증하지 않고도 여러 요청을 실행할 수 있습니다. 또한 CORS를 시행하는 웹 브라우저에서 요청을 보낼 수 있습니다.
중요
사용자 대상 클라이언트에서 API 키를 사용하지 마세요
브라우저 또는 다른 사용자용 클라이언트 애플리케이션에서 인증하는 경우 API 키를 사용하여 로그인하지 않도록 합니다. 대신 사용자가 제공한 자격 증명을 사용하는 다른 인증 제공자를 사용합니다. API 키나 기타 민감한 자격 증명을 로컬에 저장하지 마세요.
베어러 인증은 다음과 같은 경우에 유용합니다.
웹 브라우저에서 요청을 전송합니다.
사용자 자격 증명을 저장하거나 각 요청에 대해 사용자에게 메시지를 표시하지 않고 여러 요청을 전송할 수 있습니다.
Realm SDK를 사용하여 사용자를 인증하는 앱에서 요청을 전송합니다.
참고
보안상의 이유로 App Services는 클라이언트 앱에 상세한 베어러 인증 오류를 반환하지 않습니다. 베어러 인증에 문제가 발생한 경우 애플리케이션 로그를 확인하세요.
자격 증명 헤더
요청 헤더에 사용자의 로그인 자격 증명을 포함하여 데이터 API 요청을 인증할 수 있습니다. 포함할 정확한 헤더는 인증 제공자에 따라 다릅니다.
자격 증명 헤더는 다음과 같은 경우에 유용합니다.
서버 측 애플리케이션에서 보낸 요청
명령줄 도구에서 보낸 요청
Postman과 같은 HTTPS 클라이언트에서 보내는 수동 또는 테스트 요청
중요
교차 출처 리소스 공유 제한으로 인해 웹 브라우저에서 보낸 요청을 인증하는 데 자격 증명 헤더를 사용할 수 없습니다. 대신 브라우저에서 Data API 요청을 인증하려면 베어러 인증을 사용하세요.
이메일/비밀번호
데이터 API 요청을 이메일/비밀번호 사용자로 인증하려면 해당 요청의 email
헤더 및 password
헤더에 사용자의 자격 증명을 입력하세요.
curl -s "https://data.mongodb-api.com/app/myapp-abcde/endpoint/data/v1/action/findOne" \ -X POST \ -H "Accept: application/json" \ -H "email: bob@example" \ -H "password: Pa55w0rd!" \ -d '{ "dataSource": "mongodb-atlas", "database": "sample_mflix", "collection": "movies", "filter": { "title": "The Matrix" } }'
API 키
API Key(API 키)로 데이터 API 요청을 인증하려면 해당 요청의 apiKey
헤더에 API 키를 넣으세요.
curl -s "https://data.mongodb-api.com/app/myapp-abcde/endpoint/data/v1/action/findOne" \ -X POST \ -H "Accept: application/json" \ -H "apiKey: TpqAKQgvhZE4r6AOzpVydJ9a3tB1BLMrgDzLlBLbihKNDzSJWTAHMVbsMoIOpnM6" \ -d '{ "dataSource": "mongodb-atlas", "database": "sample_mflix", "collection": "movies", "filter": { "title": "The Matrix" } }'
중요
사용자 대상 클라이언트에서 API 키를 사용하지 마세요
브라우저 또는 다른 사용자용 클라이언트 애플리케이션에서 인증하는 경우 API 키를 사용하여 로그인하지 않도록 합니다. 대신 사용자가 제공한 자격 증명을 사용하는 다른 인증 제공자를 사용합니다. API 키나 기타 민감한 자격 증명을 로컬에 저장하지 마세요.
사용자 지정 JWT
데이터 API 요청을 사용자 지정 JWT 사용자로 인증하려면 요청의 jwtTokenString
헤더에 JWT 문자열을 포함하세요.
curl -s "https://data.mongodb-api.com/app/myapp-abcde/endpoint/data/v1/action/findOne" \ -X POST \ -H "Accept: application/json" \ -H "jwtTokenString: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhdWQiOiJteWFwcC1hYmNkZSIsInN1YiI6IjEyMzQ1Njc4OTAiLCJuYW1lIjoiSm9obiBEb2UiLCJleHAiOjIxNDU5MTY4MDB9.E4fSNtYc0t5XCTv3S8W89P9PKLftC4POLRZdN2zOICI" \ -d '{ "dataSource": "mongodb-atlas", "database": "sample_mflix", "collection": "movies", "filter": { "title": "The Matrix" } }'