Post

n8n HTTP Request 노드, 인증 방식 뭘 골라야 할까? — 삽질 끝에 정리한 표 하나

n8n HTTP Request 노드, 인증 방식 뭘 골라야 할까? — 삽질 끝에 정리한 표 하나

안녕하세요, 다메섹 교수입니다.

지난 며칠간 롱폼 팟캐스트 영상 자동화 파이프라인(제가 “D워플”이라고 부르는 녀석입니다)을 디버깅하다가, 새로 추가한 노드 하나에서 이런 에러를 만났습니다. 번역하면 “너 누구세요?”라는 뜻입니다. API에 인증 정보 없이 요청을 보냈으니 당연한 반응이죠. 그런데 이 에러를 고치는 과정에서 “Authentication” 드롭다운 안에 있는 선택지들이 각각 뭘 뜻하는지 제대로 이해하지 못하고 있었다는 걸 깨달았습니다. 저처럼 헷갈리셨던 분들을 위해 정리해봅니다.

왜 이게 헷갈리는가

n8n으로 자동화를 만들다 보면 다양한 외부 서비스를 호출하게 됩니다. 제 워크플로만 해도 YouTube, Google Sheets, Gmail, GitHub, Cloudinary, ElevenLabs, Gemini API까지 걸쳐 있는데, 이 서비스들이 저마다 “나를 어떻게 증명할 건지” 요구하는 방식이 다 다릅니다. n8n은 이 차이를 Authentication 드롭다운 하나로 다 소화하려다 보니, 처음 보면 선택지가 뭘 의미하는지 감이 안 옵니다.

선택지 4가지, 하나씩

1. None — “아무나 들어오세요”

인증이 아예 필요 없는 공개 API를 부를 때 씁니다. 흔치 않지만, 예를 들어 인증 없는 공공 데이터 API 같은 걸 부를 때 씁니다.

2. Predefined Credential Type — “n8n이 이미 다 알고 있는 서비스”

n8n 개발팀이 특정 서비스를 위해 인증 흐름을 통째로 미리 만들어둔 방식입니다. 제 워크플로에서는 이런 노드들이 여기 해당합니다:

  • YouTube 썸네일 업로드YouTube OAuth2 API
  • 시트 기록Google Sheets account
  • 완료 알림Gmail account

이 방식의 장점은, “Sign in with Google” 버튼 한 번 누르면 n8n이 알아서 OAuth 로그인 창을 띄우고, 토큰을 저장하고, 만료되면 자동으로 갱신까지 해준다는 겁니다. 사용자는 토큰이 뭔지, 어떻게 갱신하는지 신경 쓸 필요가 없습니다.

단, 이건 n8n이 “이 서비스”를 미리 알고 있을 때만 가능합니다. 드롭다운에 그 서비스 이름이 안 보인다면, n8n이 아직 그 서비스용 전용 템플릿을 안 만들어둔 겁니다. Gemini API가 바로 이 경우입니다 — 드롭다운을 아무리 뒤져도 “Gemini”라는 항목은 없습니다.

3. Generic Credential Type — “내가 직접 알려줄게”

n8n이 그 서비스를 모를 때, 인증 방식의 틀만 정해서 직접 채워 넣는 방식입니다. 여기서 다시 하위 선택지가 갈립니다.

하위 타입방식실제 예시
API Key키 하나를 쿼리 파라미터나 헤더에 심음간단한 데이터 API
Header Auth요청 헤더에 키: 값 쌍을 직접 지정Gemini API
Basic Auth아이디/비밀번호를 헤더에 인코딩해서 전송구형 레거시 API
OAuth1 / OAuth2클라이언트 ID/시크릿을 직접 입력해서 표준 OAuth 흐름 수행전용 템플릿은 없지만 OAuth 표준을 쓰는 서비스

제가 겪은 에러의 정답은 여기 있었습니다. Gemini API는 요청 헤더에 x-goog-api-key로 API 키를 실어 보내는 방식만 지원합니다. 그래서 Generic Credential Type → Header Auth를 선택하고, 발급받은 API 키를 담은 credential을 연결해야 했던 겁니다.

실전 예시: 같은 파이프라인 안에서 왜 노드마다 다른가

제 D워플 안에서 노드별로 인증 방식이 이렇게 나뉩니다. 같은 워크플로 안에서도 호출하는 서비스가 다르면 인증 방식도 따라서 달라집니다. 이게 처음엔 일관성 없어 보이지만, 사실은 각 서비스가 원래 요구하는 방식을 n8n이 최대한 그대로 반영해준 것뿐입니다.

실수했던 지점 — 그리고 배운 것

새 노드(캐릭터 레퍼런스 생성)를 추가하면서, 기존에 잘 되던 씬별 이미지 프롬프트 생성 노드를 복사하지 않고 처음부터 새로 만들었습니다. HTTP Request 노드를 새로 만들면 Authentication이 기본값 None으로 시작하는데, 저는 URL과 Body만 채우고 이 부분을 그냥 지나쳤습니다. 그 결과가 위에서 본 “Forbidden” 에러였습니다.

교훈은 단순합니다. 같은 API를 부르는 노드를 새로 만들 때는, 처음부터 새로 설정하지 말고 기존에 이미 정상 작동하는 노드를 복사(Duplicate)해서 URL과 Body만 바꾸는 게 훨씬 안전합니다. Authentication, Credential 연결처럼 눈에 잘 안 띄는 설정을 빠뜨릴 위험이 확 줄어듭니다.

정리

상황선택
인증이 아예 필요 없는 공개 APINone
n8n 드롭다운에 그 서비스 이름이 보임 (Google, YouTube, Slack 등)Predefined Credential Type
드롭다운에 없는 서비스인데, API 문서에 “헤더에 키를 넣으라”고 되어 있음Generic Credential Type → Header Auth
API 문서에 “쿼리 파라미터에 키를 넣으라”고 되어 있음Generic Credential Type → API Key

다음에 새 API를 붙이실 때는, 그 서비스 공식 문서에서 “Authentication”이나 “API Key” 섹션을 먼저 찾아보시고, 거기 적힌 방식과 위 표를 맞춰보시면 훨씬 헤매는 시간이 줄어들 겁니다.

그럼 저는 다시 D워플 디버깅으로 돌아가 보겠습니다. 다음 편에서 뵙겠습니다.

— 다메섹 교수

This post is licensed under CC BY 4.0 by the author.