ユーザーの認証と管理
はじめに
Atlas App Services は、アプリケーションのエンドユーザーの認証を管理します。アプリケーションサービス:
ロールベースのデータアクセス ルールを使用して、読み取りおよび書き込み権限を決定します。
すべてのリクエストを認証済みユーザーに関連付けます。
リクエストに含まれるすべてのオブジェクトのアクセス許可を評価します。
ユーザー アカウントを通じて、各ユーザーのメタデータとカスタム データを保存し、アクセスできます。
ユーザーは認証プロバイダーを通じてログインします。各プロバイダーは、特定の認証方法を表します。
アプリサービスには、Facebook や Google などの一般的なユースケース向けの組み込みプロバイダーが含まれています。カスタム プロバイダーを使用すると、任意の外部認証システムを統合できます。
次の図は、クライアント アプリ、Atlas App Services、および認証機能がユーザーを認証するためにどのように相互作用するのかを示しています。
コンセプト
認証プロバイダ
Atlas App Services では、認証プロバイダはモジュール型のサービスです。これらのサービスは、本人確認を提供し、アプリユーザーに関する情報を維持します。
ユーザは、認証プロバイダに一連の認証情報を提供することで、自分自身を認証します。 有効な認証情報がある場合、プロバイダーはユーザーに関連付けられた一意の ID を返します。 Atlas App Services はアクティブ ユーザーとしてログインします。
App Services には、一般的なユースケースに対応した認証プロバイダーが組み込まれています。これには以下が含まれます。
カスタム プロバイダーを設定して、外部の認証システムを統合できます。
カスタム JWT : プロバイダーは外部システムによって署名された JSON web token を受け入れます。
カスタム関数: プロバイダーを使用すると、Atlas Functionでカスタム ログイン ロジックを定義できます。
重要
アプリにはユーザー認証が必要
すべてのアプリケーションには、少なくとも 1 つの認証プロバイダーが設定され、有効になっている必要があります。少なくとも 1 つのプロバイダーがないと、クライアント アプリケーションは接続できません。認証プロバイダーを設定して有効にする方法については、「認証プロバイダー」を参照してください。
ユーザー アカウント
ユーザー・アカウントは、アプリケーションの単一のユーザーを表します。App Services は、認証プロバイダーがユニークな ID を検証するときにユーザーを作成します。メールや誕生日などのユーザ メタデータを認証プロバイダーから取得できます。各ユーザーを カスタム データに関連付けられます。
Tip
Appleアカウントの削除要件
Appleは、アカウントを作成したすべてのユーザーに、アカウントを削除するオプションを提供するよう、App Store を通じて配布されるアプリケーションに対して義務付けています。App Store を通じて配布されるアプリは、メールやパスワード認証などユーザーを手動で登録する認証方法を使用する場合でも、Apple でサインインなどのユーザーを自動的に作成する認証方法を使用する場合でも、ユーザー アカウントの削除機能を実装する必要があります。
認証プロバイダの ID
App Servicesは、ユーザーのログイン メタデータを認証プロバイダ ID に格納します。App Services はこのメタデータを使用してユーザーを認証します。
認証プロバイダーに初めてログインすると、App Services は ID オブジェクトを作成します。各オブジェクトには、ユニークな ID と、ユーザーに関するプロバイダー固有のメタデータが含まれています。次回のログイン時に、App Services は既存の ID データを更新します。
1 つのユーザー アカウントに複数の ID を設定できます。Realm SDK を使用すると、ID を既存のユーザー アカウントにリンクできます。これにより、ユーザーは 1 つのアカウントで複数のプロバイダーにログインできます。詳細については、クライアント SDK の ID のリンクに関するドキュメントを参照してください。
アクティブなユーザー
Realm SDKでは、複数のユーザーをログインさせられますが、一度にアクティブにできるアカウントは 1 つだけです。アクティブなユーザーとは、アプリケーション リクエストに関連付けられたユーザー アカウントです。
App Services は、アクティブなユーザーとしてクライアント アプリケーションからのリクエストを実行します。App Services はユーザーへの動的な参照を置き換えます - 例 JSON 式内の %%user
をアクティブなユーザーと置き換え。
特定のアクティブ ユーザーまたはシステムユーザーを使用して関数を実行できます。
システムユーザー
システムユーザーは、高度な権限を持つ内部ユーザーです。システムユーザーはすべてのルールをバイパスします。リクエストを行うユーザーではなく、システムユーザーとして関数を実行できます。Triggers はシステムユーザーのコンテキストで実行します。
システムユーザーは、管理タスクに役立ちます。これには以下が含まれます。
ルールとクエリを回避する必要があるタスク
MongoDB CRUD および集計操作への無制限のアクセスを必要とするタスク
重要
セキュリティ警告
ルールはシステムユーザーには適用されません。システムユーザーとして実行される機能が、セキュリティ上の問題になる可能性があります。これらの機能を権限のないユーザーに公開しないようにしてください。
たとえば、関数コンテキストを使用して、アクティブなユーザーがシステム関数を呼び出せるかどうかを確認できます。ユーザーに適切な権限があるかどうかを判断するための条件を定義します。例:
exports = function() { const activeUser = context.user const adminUserId = context.values.get("adminUserId"); if(activeUser.id == adminUserId) { // The user can only execute code here if they're an admin. } else { throw Error("This user is not allowed to execute the system function") } }
ユーザー セッション
ユーザー セッションは、認証されたユーザーがアプリと対話できる期間を表します。ユーザー セッションは、ユーザーが SDK 経由でログインするか、HTTPS 経由で認証すると開始されます。SDK または API リクエストによってセッションが更新されない限り、セッションは 30 分後に終了します。
ユーザーセッションの作成、操作、取り消しの方法については、「ユーザー セッションの管理」を参照してください。
概要
App Services は、さまざまな認証プロバイダを通じて認証とユーザー アカウントをサポートします。ユーザを複数の認証プロバイダに関連付けらることができます。
App Services は、複数のユーザーが同時にログインすることをサポートしています。一度にアクティブなユーザーは 1 人だけです。
システムユーザーは、すべてのルールをバイパスする特別なユーザーです。
Realm SDK は、ユーザー セッションを構成するアクセス トークンとリフレッシュ トークンを管理します。