Docs 菜单
Docs 主页
/ /
Atlas App Services
/

对 Data API 请求进行身份验证

在此页面上

  • Overview
  • 持有者身份验证
  • 档案标头
  • 电子邮件/密码
  • API 密钥
  • 自定义 JWT

Data API 端点通常要求传入请求包含调用端点的用户的身份验证信息。这使得端点可以强制执行规则并验证每个请求的文档模式。

请求必须在特定请求标头中包含身份验证数据。App Services 使用以下流程对给定请求进行身份验证:

  1. 检查是否有 Authorization标头。 如果存在,请尝试使用 Bearer Authentication (持有者身份验证)。 标头必须包含有效的用户访问权限令牌。 如果令牌无效,则请求失败。

  2. 如果 Authorization 标头不存在或未使用"持有者"方案,则请检查凭证标头是否存在。这些标头必须包含应用用户的有效电子邮件/密码、API 密钥或自定义 JWT 凭证。

注意

必须先启用身份验证提供者,用户才能向其进行身份验证。

Data API 支持持有者身份验证,可允许您通过在请求的 Authorization 标头中包含有效的用户访问令牌来对请求进行身份验证。要了解如何获取和管理访问令牌,请参阅管理用户会话

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 不会向客户端应用返回持有者身份验证错误的详情。如果持有者身份验证出现问题,请检查应用程序日志。

您可以通过在请求标头中包含用户的登录凭据来对 Data API 请求进行身份验证。要包含的确切标头取决于身份验证提供者。

档案标头对于以下情形很有用:

  • 从服务器端应用程序发送的请求

  • 从命令行工具发送的请求

  • 从 HTTPS 客户端(例如 Postman)发送的手动或测试请求

重要

由于跨源资源共享限制,无法使用凭据标头对从 Web 浏览器发送的请求进行身份验证。相反,要对来自浏览器的数据 API 请求进行身份验证,请使用 Bearer 身份验证。

要以电子邮件/密码用户身份验证 Data API 请求,请在该请求的 emailpassword 标头中包含该用户的档案。

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 请求进行身份验证,在请求的 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 密钥或其他敏感档案。

要将 Data 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"
}
}'

后退

HTTPS endpoints自定义HTTPS 端点[已弃用]