Docs Menu
Docs Home
/ /
Atlas App Services
/

인증 트리거

이 페이지의 내용

  • 인증 트리거 만들기
  • 구성
  • 인증 이벤트
  • 예시
  • 추가 예시

인증 트리거는 사용자가 인증 제공자 와 상호 작용할 때 실행됩니다. 인증 트리거를 사용하여 고급 사용자 관리를 구현할 수 있습니다. 일부 용도는 다음과 같습니다.

  • 연결된 클러스터에 새 사용자 데이터 저장

  • 사용자 삭제 시 데이터 무결성 유지

  • 로그인할 때 사용자의 정보를 사용하여 서비스 호출.

UI 에서 인증 구성 trigger 화면을 열려면 Atlas App Services Triggers 왼쪽 탐색 메뉴에서,Create a Trigger 를 차례로 클릭한 Authentication 다음 옆에 있는 탭 을 Trigger Type 선택합니다.

트리거를 구성한 다음 페이지 하단의 Save을 클릭하여 현재 배포 초안에 추가하세요.

UI 에 구성된 인증 trigger 의 예시
클릭하여 확대

를 사용하여 인증 를 만들려면 trigger App Services CLI다음을 수행합니다.

  1. 로컬 애플리케이션 디렉토리 의 triggers 하위 디렉토리에 인증 trigger 구성 파일 을 추가합니다.

    참고

    App Services 는 Atlas trigger 구성 파일에 특정 파일 이름을 시행하다 하지 않습니다. 그러나 일단 가져오면 App Services 는 정의한 trigger 의 이름과 일치하도록 각 구성 파일 의 이름을 바꿉니다. mytrigger.json.

  2. 트리거를 배포합니다.

    appservices push

인증 Atlas Triggers에는 다음과 같은 구성 옵션이 있습니다.

필드
설명
Trigger Type
trigger의 유형입니다. 인증 트리거의 경우 이 값을 AUTHENTICATION 로 설정합니다.
Action Type
트리거를 실행시키는 인증 작업 유형입니다.
Providers
하나 이상의 인증 제공자 유형 목록입니다. trigger 는 이러한 제공자가 생성한 인증 이벤트 만 수신 대기합니다.
Event Type
trigger 가 실행될 때 수행할 조치 를 선택합니다. 함수 를 실행 하거나 AWS Eventbridge 를 사용하도록 선택할 수 있습니다.
Function
trigger 가 실행될 때 실행되는 함수의 이름입니다. 인증 이벤트 객체 로 인해 trigger 가 실행됩니다. 이 객체 는 trigger 가 함수에 전달하는 유일한 인수입니다.
Trigger Name
트리거의 이름입니다.

인증 이벤트는 인증 제공자와의 사용자 상호 작용을 나타냅니다. 각 이벤트는 다음 작업 유형 중 하나를 사용하는 단일 조치에 해당합니다.

작업 유형
설명
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"

참고

일반적으로 하나의 인증 제공자만 각 이벤트를 발생시킵니다. 그러나 여러 제공자에 연결된 사용자를 삭제해야 할 수도 있습니다. 이 경우 해당 사용자의 DELETE 이벤트에는 연결된 모든 제공자가 포함됩니다.

user
인증 제공자와 상호 작용한 사용자의 사용자 객체 입니다.
time
이벤트가 발생한 시간입니다.

온라인 저장 에서 각 고객에 대한 사용자 지정 메타데이터 를 Atlas 에 저장 하려고 합니다. 각 고객에게는 store.customers 컬렉션 의 문서 가 필요합니다. 그런 다음 저장 는 고객의 문서 에 메타데이터 를 기록 하고 쿼리 할 수 있습니다.

컬렉션 은 각 고객을 나타내야 합니다. 이를 보장하기 위해 저장 는 인증 trigger 를 생성합니다. 이 trigger 는 이메일/비밀번호 인증 제공자 에서 새로 생성된 사용자를 수신 대기합니다. 그런 다음 인증 이벤트 객체 를 연결된 함수인 createNewUserDocument 에 전달합니다. 이 함수는 사용자와 해당 활동을 설명하는 새 문서 를 생성합니다. 그런 다음 함수는 문서 를 store.customers 컬렉션 에 삽입합니다.

트리거를 구성하는 UI 예시
트리거 구성
{
"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);
}

For additional examples of Triggers integrated into an App Services App, checkout the 예시 Triggers on Github.

돌아가기

데이터베이스 트리거