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