Docs Menu
Docs Home
/ /
Atlas App Services
/

認証 Triggers

項目一覧

  • 認証trigger作成する
  • 構成
  • 認証イベント
  • その他の例

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

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

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

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

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

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

UI で構成された認証triggerの例
クリックして拡大します

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

  1. 認証 設定ファイル を、ローカル アプリケーションtrigger ディレクトリの {2 サブディレクトリに追加します。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コレクションに挿入します。

トリガーを構成する UI の例
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 に統合された trigger の追加例については、 Githubの Triggers の例を確認してください。

戻る

データベース Triggers