Docs Menu

認証 Triggers

認証triggerは、ユーザーが認証プロバイダと対話するときに起動します。 認証トリガー を使用して、高度なユーザー管理を実装できます。 一部の用途には、次のようなものがあります。

  • 連結クラスターへの新しいユーザー データの保存

  • ユーザー削除時のデータの整合性の維持

  • ログイン時にユーザーの情報を使用してサービスを呼び出します。

UIで認証 設定画面を開くには、左側のナビゲーションtrigger Atlas App ServicesTriggersメニューで [0}]Create a Trigger をクリックし、[] をクリックし、Authentication の横にある [ ]Trigger Type タブを選択します。

triggerを構成し、ページの下部にあるSaveをクリックして、現在の配置ドラフトに追加します。

クリックして拡大します

を使用して認証trigger App Services CLIを作成するには、次の手順に従います。

  1. 認証trigger設定ファイルを、ローカル アプリケーション ディレクトリの triggers サブディレクトリに追加します。

    注意

    App Services では、Atlas trigger 構成ファイルに特定のファイル名は強制されません。 ただし、インポートされると、App Services は、定義する trigger の名前と一致するように各構成ファイルの名前を変更します(たとえば、 mytrigger.json

  2. triggerを配置する

    appservices push

認証トリガーには、次の構成オプションがあります。

フィールド
説明

Trigger Type

trigger の種類。 認証トリガーの場合は、この値をAUTHENTICATIONに設定します。

Action Type

trigger を起動させる認証操作の種類

Providers

1 つ以上の認証プロバイダのタイプのリスト。trigger は、これらのプロバイダーによって生成された認証イベントのみをリッスンします。

Event Type

trigger が起動したときに実行されるアクションを選択します。 関数を実行するか、 AWS Eventbridgeを使用するかを選択できます。

Function

trigger が起動時に実行する関数の名前。 認証イベントオブジェクトによって trigger が起動します。このオブジェクトは、 trigger が関数に渡す唯一の引数です。

Trigger Name

triggerの名前。

認証 イベントは、認証プロバイダーとユーザーのインタラクションを表します。 各イベントは、次のいずれかの操作タイプを持つ 1 人のユーザー アクションに対応します。

操作タイプ
説明

LOGIN

ログインするユーザーの単一のインスタンスを表します。

CREATE

新しいユーザーの作成を表します。

DELETE

ユーザーの削除を表します。

認証イベント オブジェクトの形式は次のとおりです。

{
"operationType": <string>,
"providers": <array of strings>,
"user": <user object>,
"time": <ISODate>
}
フィールド
説明

operationType

認証イベントの操作タイプ。

providers

イベントを発行した認証プロバイダ

次のいずれかの名前は、各認証プロバイダを表します。

  • "anon-user"

  • "local-userpass"

  • "api-key"

  • "custom-token"

  • "custom-function"

  • "oauth2-facebook"

  • "oauth2-google"

  • "oauth2-apple"

注意

通常、各イベントを発行する認証プロバイダは 1 つだけです。 ただし、複数のプロバイダーにリンクされたユーザーを削除する必要がある場合があります。 この場合、そのユーザーのDELETEイベントにはリンクされたすべてのプロバイダーが含まれます。

user

認証プロバイダと対話したユーザーのユーザー オブジェクト

time

イベントが発生した時刻。

あるオンラインショップが、各カスタマーのカスタム メタデータをAtlasに保存したいと考えています。 各カスタマーには、 store.customersコレクション内のドキュメントが必要です。 その後、店舗はカスタマーの ドキュメントでメタデータを記録し、クエリを実行できます。

コレクションは各カスタマーを表す必要があります。 これを保証するために、店舗は 認証triggerを作成します。 このtriggerは、メール/パスワード認証プロバイダーで新しく作成されたユーザーをリッスンします。 次に、認証イベント オブジェクトをリンクされた関数であるcreateNewUserDocumentに渡します。 この関数は、ユーザーとそのアクティビティを説明する新しいドキュメントを作成します。 次に、関数はドキュメントをstore.customersコレクションに挿入します。

trigger 構成
{
"type": "AUTHENTICATION",
"name": "newUserHandler",
"function_name": "createNewUserDocument",
"config": {
"providers": ["local-userpass"],
"operation_type": "CREATE"
},
"disabled": false
}
createNewUserDocument
exports = async function(authEvent) {
const mongodb = context.services.get("mongodb-atlas");
const customers = mongodb.db("store").collection("customers");
const { user, time } = authEvent;
const isLinkedUser = user.identities.length > 1;
if(isLinkedUser) {
const { identities } = user;
return users.updateOne(
{ id: user.id },
{ $set: { identities } }
)
} else {
return users.insertOne({ _id: user.id, ...user })
.catch(console.error)
}
await customers.insertOne(newUser);
}

App Services App に統合された Triggers の追加例については、 Github の Triggers の例を確認してください。