データ API リクエストの認証
Overview
データ API エンドポイントには、通常、受信リクエストにエンドポイントを呼び出すユーザーの認証情報を含める必要があります。これにより、エンドポイントがルールを強制して、各リクエストのドキュメント スキーマを検証できます。
リクエストでは、特定のリクエスト ヘッダーに認証データが含まれている必要があります。App Services は、次のプロセスを使用して特定のリクエストを認証します。
Authorization
ヘッダーを確認します。 もし存在する場合は、 Bearer 認証を使用してみてください。 ヘッダーには有効なユーザーのアクセス トークンが含まれている必要があります。 トークンが無効な場合、要求は失敗します。Authorization
ヘッダーが存在しないか、"Bearer" スキームを使用していない場合は、認証情報ヘッダーを確認します。ヘッダーには、アプリユーザーの有効な電子メール/パスワード、API キー、またはカスタム JWT 認証情報が含まれている必要があります。
注意
ユーザーが認証する前に、認証プロバイダを有効にする必要があります。
Bearer 認証
Data API は Bearer 認証をサポートしています。これにより、リクエストの Authorization
ヘッダーに有効なユーザーアクセストークンを含めることでリクエストを認証できます。アクセストークンの取得と管理方法については、「ユーザーセッションの管理」を参照してください。
Authorization ヘッダーは以下の形式を使用します。
Authorization: Bearer <AccessToken>
たとえば、次のリクエストでは Bearer 認証が使用されます。
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 キーやその他の機密性の高い認証情報をローカルに保存しないでください。
Bearer 認証は、次の場合に便利です。
Web ブラウザーからリクエストを送信する。
ユーザー認証情報を保存したり、リクエストごとにユーザーにプロンプトを表示したりせずに、複数のリクエストを送信します。
Realm SDKを使用してユーザーを認証するアプリからのリクエストの送信
注意
セキュリティ上の理由から、App Services は詳細な Bearer 認証エラーをクライアントアプリに返しません。Bearer 認証に問題がある場合は、アプリケーション ログを確認してください。
資格情報ヘッダー
データAPI リクエストは、リクエストヘッダーにユーザーのログイン認証情報を含めることで認証できます。ヘッダーに含めるべき具体的な内容は、認証プロバイダによって異なります。
認証情報ヘッダーは、次の場合に便利です。
サーバー側アプリケーションから送信されたリクエスト
コマンドラインツールから送信されたリクエスト
Postman などの HTTPS クライアントから送信された手動またはテストリクエスト
重要
クロスオリジンリソース共有の制限のため、ウェブ ブラウザから送信されたリクエストを認証するために認証ヘッダーを使用することはできません。代わりに、ブラウザからのデータ API リクエストを認証するには、 Bearer 認証を使用します。
メール/パスワード
Data 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 キーを使用して Data 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
Atlas Data API リクエストをカスタム JWT ユーザーとして認証するには、リクエストのjwtTokenString
ヘッダーに JWT string を含めます。
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" } }'