Webhook과 PostgreSQL을 활용한 안전한 사용자 인증 시스템 - n8n 워크플로우

PostgreSQL의 pgcrypto를 사용한 bcrypt 해싱을 포함하여 강력한 n8n 워크플로우로 안전한 사용자 인증 백엔드를 구축하세요.

워크플로우 미리보기

자동화할 준비가 되셨나요?

이 n8n 워크플로우 템플릿을 다운로드하고 즉시 사용을 시작하세요.

추천 대상


  • 프로토타입이나 MVP에 보안 백엔드가 필요한 개발자

  • 커스텀 애플리케이션에 인증 관리를 통합하려는 시스템 설계자

  • n8n 워크플로우 내에서 PostgreSQL 및 커스텀 로직의 고급 활용 사례를 찾고 있는 사용자

  • 민감한 사용자 데이터 처리를 위한 강력한 n8n 템플릿을 찾는 모든 사람

개요

전통적으로 보안 인증 시스템을 구현하려면 복잡한 서버 측 코딩이 필요합니다. 이 n8n 워크플로우는 PostgreSQL의 내장 암호화 함수(pgcrypto)와 n8n 노드 생태계의 유연한 라우팅 기능을 활용하여 이 과정을 단순화합니다.

이 강력한 n8n 워크플로우는 사용자 관리를 단일 엔드포인트로 중앙 집중화합니다. 프론트엔드 UI나 모바일 앱과 같은 외부 애플리케이션이 웹훅을 호출하면, 시스템은 사용자 생성(bcrypt 해싱을 사용한 가입), 자격 증명 확인(로그인), 자동 비밀번호 생성(비밀번호 찾기)을 안전하게 처리합니다. 이는 높은 보안 표준을 유지하면서 외부 API와 상호 작용하기 위한 n8n 트리거 사용의 훌륭한 예시이며, 백엔드 인증 서비스의 개발 시간을 획기적으로 단축시켜 줍니다.

작동 방식

자동화는 전용 n8n 트리거로 시작됩니다:


  1. 웹훅 트리거 (Webhook Trigger): 프로세스는 클라이언트가 /auth 엔드포인트로 POST 요청을 보낼 때 시작됩니다. 요청 본문에는 path('signup', 'signin', 또는 'forgot' 지정), email, 그리고 선택적으로 passwordname이 포함되어야 합니다.

  2. 라우터 노드 (Router Node): 중요한 n8n 노드인 Router는 수신된 요청의 path 값을 분석하여 적절한 PostgreSQL 로직 분기로 실행 흐름을 전달합니다.

  3. 가입 경로 (Signup Path): path가 'signup'인 경우, 플로우는 Signup PostgreSQL n8n 노드로 이동합니다. 이 노드는 crypt()gen_salt('bf')를 사용하여 SQL 쿼리를 실행, 비밀번호를 bcrypt로 안전하게 해싱한 후 DB에 삽입합니다.

  4. 로그인 경로 (Login Path): path가 'signin'인 경우, Login PostgreSQL n8n 노드는 이메일(대소문자 구분 없음)로 사용자를 조회하고, PostgreSQL의 crypt() 함수를 사용하여 입력된 비밀번호와 저장된 해시 값을 비교합니다. isPasswordMatch라는 부울 값을 포함한 결과가 Check Login n8n 노드로 전달됩니다.

  5. 검증 (Validation): Check Login IF n8n 노드는 사용자 ID 존재 여부와 비밀번호 일치 여부를 모두 검증합니다. 그 결과를 성공 또는 실패 응답으로 라우팅합니다.

  6. 비밀번호 찾기 경로 (Forgot Password Path): path가 'forgot'인 경우, Reset Password n8n 노드는 8자리 임의의 새 비밀번호를 생성하고 사용자 레코드를 업데이트한 후, 즉시 사용자에게 보여주거나 이메일로 보낼 새 비밀번호를 평문으로 반환합니다.

  7. 응답 (Response): 모든 성공적인 작업, 검증 실패 또는 데이터베이스 오류는 Respond n8n 노드를 통해 표준화된 JSON 응답(status, message, data)을 클라이언트에게 전송하며 종료됩니다.

설치 가이드

이 강력한 n8n 워크플로우를 배포하려면 다음 단계를 따르세요:


  1. 가져오기 (Import): 제공된 n8n 워크플로우 JSON을 복사하여 n8n 인스턴스로 가져옵니다.

  2. 데이터베이스 설정 (Database Setup): 이 n8n 워크플로우는 users 테이블이 있는 PostgreSQL 또는 Supabase 데이터베이스가 필요합니다. 데이터베이스에 uuid-ossppgcrypto 확장이 활성화되어 있는지 확인하세요.

* 필요한 테이블 구조 생성:
CREATE TABLE users (
id uuid PRIMARY KEY DEFAULT uuidgeneratev4(),
fullname text NOT NULL,
email text UNIQUE NOT NULL,
password
hash text NOT NULL,
created_at timestamptz DEFAULT now()
);

  1. 자격 증명 설정 (Credentials): n8n 내에서 PostgreSQL 자격 증명을 설정합니다. Signup, Login, Reset Password n8n 노드 구성에서 PostgreSQL 자격 증명 세트(예: 'Project: Edubot')를 할당합니다.

  2. 활성화 (Activation): n8n 워크플로우를 활성화합니다. 웹훅 n8n 트리거 엔드포인트가 활성화되어 인증 요청을 수신할 준비가 됩니다.

노드 상세 정보

Webhook (n8n 트리거):
기능: 모든 인증 작업을 위한 단일 API 엔드포인트(/auth) 역할 수행.
주요 설정: 메서드는 POST로 설정; 응답 모드는 'Response Node'로 설정.
Router (Switch n8n 노드):
기능: path 변수($json["path"])를 기반으로 실행을 라우팅하여 'signup', 'signin' 또는 'forgot'으로 트래픽을 안내.
주요 설정: 필요한 세 가지 경로에 해당하는 세 개의 출력 사용.
Signup (PostgreSQL n8n 노드):
기능: 새 사용자 레코드를 삽입합니다. 안전한 비밀번호 해싱을 위해 crypt('{{$json["password"]}}', gen_salt('bf'))를 사용합니다.
Login (PostgreSQL n8n node):
기능: 사용자 데이터를 검색하고 isPasswordMatch를 반환하는 보안 SQL 쿼리를 사용하여 수신된 비밀번호와 저장된 해시 값을 비교합니다.
Check Login (IF n8n 노드):
기능: 핵심 플로우 제어 로직. Login 쿼리 결과를 검증합니다(사용자 존재 여부 및 비밀번호 일치 여부 확인).
주요 설정: 조건은 id 존재 여부 AND isPasswordMatchtrue인지 확인.
Reset Password (PostgreSQL n8n 노드):
기능: 임의의 8자리 문자열을 생성하고 데이터베이스의 사용자 비밀번호 해시를 업데이트합니다.
Respond (n8n 노드):
* 기능: n8n 트리거를 호출한 클라이언트에게 상태, 메시지 및 데이터를 다시 전송하여 요청을 완료합니다.

관련 n8n 워크플로우

무료

노드: 6 노드
업데이트됨: 12월 26 2025
모두 보기
작성자

추천*