본문 바로가기
정보보호 (Security)

n8n Webhook URL 호출 시 인증을 통한 보호조치

by 날으는물고기 2024. 5. 9.

n8n Webhook URL 호출 시 인증을 통한 보호조치

Best Practice to Secure your WebHooks by Fienny Angelina - Code Like A Girl

n8n을 사용하면서 Webhook URL의 노출 문제를 인증을 통해 해결하는 방법으로 여러 접근 방식이 있습니다. n8n은 HTTP Basic Auth, Header Auth, Query Parameters를 사용한 인증 등 여러 인증 방식을 지원합니다.

1. HTTP Basic Auth

HTTP Basic Auth는 사용자 이름과 비밀번호를 이용해 인증을 수행하는 가장 간단한 방식입니다. n8n에서 Webhook을 설정할 때, Authentication 옵션을 Basic Auth로 설정하고, 사용자 이름과 비밀번호를 지정할 수 있습니다.

  1. Webhook 노드를 열고 AuthenticationBasic Auth로 설정합니다.
  2. UserPassword 필드에 사용자 이름과 비밀번호를 입력합니다.
  3. 이제, Webhook URL을 호출할 때 HTTP 헤더에 Base64 인코딩된 사용자 이름과 비밀번호를 포함해야 합니다.

2. Header Auth

Header Auth 방식에서는 사용자 지정 헤더를 통해 인증 토큰을 전송합니다. 이 방법은 API 키나 토큰을 사용할 때 유용합니다.

  1. Webhook 노드 설정에서 AuthenticationHeader Auth로 설정합니다.
  2. Header Name에 사용자 지정 헤더 이름을, Header Value에 인증 토큰이나 API 키를 입력합니다.
  3. Webhook URL을 호출할 때 해당 헤더를 HTTP 요청에 포함시켜 인증을 수행합니다.

3. Query Parameters

Query Parameters를 사용한 인증은 URL의 쿼리 스트링에 인증 정보를 포함하는 방법입니다. 이 방식은 간단한 인증에 적합할 수 있지만, 중요한 정보를 URL에 포함시키므로 보안에 주의해야 합니다.

  1. Webhook 노드 설정에서 AuthenticationNone으로 설정합니다.
  2. Webhook URL을 호출할 때, URL의 쿼리 파라미터로 인증 정보(예: API 키)를 추가합니다.
  3. n8n의 Function 노드 등을 사용해 이 쿼리 파라미터를 검증하도록 구성할 수 있습니다.

보안 주의 사항

  • 인증 정보는 민감한 데이터이므로, 가능한 한 안전한 방법으로 관리하고 전송해야 합니다.
  • HTTPS를 사용해 데이터의 암호화를 보장하는 것이 중요합니다.
  • 인증 메커니즘이 구현된 후에는 정기적인 보안 검토를 수행하여 취약점을 방지해야 합니다.

n8n 워크플로우에서 인증을 설정하는 구체적인 방법은 n8n의 버전이나 특정 설정에 따라 다를 수 있으니, 항상 최신 n8n 문서나 포럼을 참조하는 것이 좋습니다.

 

n8n에서 OAuth 방식의 인증을 구현하고 싶다면, 사용자별 인증 키(액세스 토큰) 발급 및 인증 과정이 필요합니다. OAuth 인증은 사용자가 서비스에 로그인하도록 허용하고, 그 서비스가 사용자의 이름으로 API 요청을 할 수 있게 하는 데 사용됩니다. n8n은 OAuth1.0과 OAuth2.0 인증 방식을 모두 지원합니다. 여기서는 OAuth2.0을 예로 들어 설명하겠습니다.

OAuth2.0 인증 흐름 기본 개념

  1. 사용자 인증 요청: 사용자가 서비스에 로그인하려고 할 때, 애플리케이션은 사용자를 인증 서버로 리디렉션합니다.
  2. 사용자 승인: 사용자가 인증하고 애플리케이션에 대한 접근 권한을 승인합니다.
  3. 액세스 토큰 발급: 애플리케이션이 인증 코드를 인증 서버에 제출하고, 서버는 애플리케이션에 액세스 토큰을 발급합니다.
  4. 리소스 접근: 애플리케이션은 발급된 액세스 토큰을 사용하여 리소스 서버에 접근합니다.

n8n에서 OAuth2.0 인증 구현

n8n에서는 웹훅을 통해 외부 서비스와 통신할 때 OAuth2.0 인증 방식을 사용할 수 있습니다. 여기서는 n8n에서 사용자별 인증 키를 발급하고 인증 과정을 구현하는 방법에 대해 설명합니다.

  1. OAuth2.0 크리덴셜 생성
    • n8n 대시보드에서 "Credentials" 메뉴로 이동합니다.
    • "Add new credential"을 선택하고, "OAuth2" 타입을 선택합니다.
    • 인증 서버의 정보(인증 URL, 토큰 URL, 클라이언트 ID, 클라이언트 시크릿 등)를 입력합니다.
  2. 웹훅 노드 설정
    • 워크플로우에서 웹훅 노드를 추가하고, 해당 노드에서 사용할 OAuth2.0 크리덴셜을 설정합니다.
    • 웹훅 URL이 호출될 때, n8n은 자동으로 액세스 토큰을 사용하여 요청을 인증합니다.
  3. 액세스 토큰 갱신
    • OAuth2.0 토큰은 일정 기간 후 만료됩니다. n8n에서는 토큰 갱신을 자동으로 처리할 수 있습니다. 크리덴셜 설정에서 "Refresh Token"과 관련된 필드를 올바르게 설정해야 합니다.
  4. 사용자별 인증 키 관리
    • 사용자별로 인증 키(액세스 토큰)를 발급하고 관리하기 위해서는 사용자 인증 과정을 사용자 정의 워크플로우로 구현해야 할 수도 있습니다. 이는 n8n이 직접 지원하는 기능은 아니며, 외부 인증 시스템과의 통합을 통해 구현해야 합니다.
  5. 보안 고려 사항
    • OAuth2.0 통신은 반드시 HTTPS를 통해 이루어져야 합니다.
    • 클라이언트 ID와 클라이언트 시크릿은 안전하게 보관해야 합니다.

n8n에서 OAuth2.0을 사용한 인증은 API와의 통합에 매우 유용하며, 사용자 데이터에 대한 안전한 접근을 제공합니다. 그러나 OAuth2.0 인증 흐름의 구현은 서비스 제공자의 API 문서를 참조하여 정확한 엔드포인트와 파라미터를 사용해야 합니다.

728x90

댓글