웹훅에 인증 헤더를 추가하는 방법?

새 사용자 등록 시 Mailchimp 뉴스레터 구독 옵션을 통합하는 작업을 진행 중이며, @pfaffman 님의 이 플러그인(GitHub - pfaffman/discourse-mailchimp-webhook · GitHub)을 사용하여 진전을 이루었습니다.

이 플러그인은 /admin/api/web_hooks/new에 표시되는 “User Created Event” 웹훅을 성공적으로 추가해 주었고, Mailchimp API 문서를 참고하여 웹훅의 Payload URL을 다음과 같이 설정했습니다(실제 DC와 리스트 ID로 대체):
https://[my-dc].api.mailchimp.com/3.0/lists/[my-list-id]/members/

새 사용자를 생성했을 때 웹훅은 성공적으로 트리거되었지만, Mailchimp에서 “API Key Invalid” 응답을 받았습니다. build_webhook_headers 메서드의 코드를 읽어 보니, “Secret” 필드에 API 키를 추가하는 방식은 “X-Discourse-Event-Signature” 헤더를 생성하므로 작동하지 않을 것 같았지만, 그래도 시도해 보았으나 동일한 응답을 받았습니다.

테스트를 위해 build_webhook_headers 메서드를 수동으로 수정하여 Mailchimp API가 기대하는 인증 헤더를 삽입해 보았고, 이 방법은 작동했습니다(성공 응답을 받았고, Mailchimp 측에 새 멤버가 나타났습니다):

headers['Authorization'] = 'apikey my-key-here'

물론 Discourse를 직접 수정하는 것은 현실적인 해결책이 아니지만, 이제 웹훅 요청에 이 인증 헤더를 포함하는 방법에 대해 막혀 있습니다. :after_build_web_hook_body를 사용하여 요청 본문을 수정하는 방법은 있는 것 같지만, 헤더에 대해서는 유사한 방법을 찾지 못했습니다.

올바른 방향으로 이끌어 주실 수 있다면 큰 도움이 될 것입니다. 감사합니다!

다시 한번 확인차 여쭤봅니다. 이 질문에 대한 해결책을 아시는 분이 있을까 해서요… 아직까지 해결하지 못했습니다. 일단 Jobs::EmitWebHookEvent 클래스의 build_webhook_headers 메서드를 오버라이드하는 플러그인을 임시로 사용하고 있지만, 이것이 이상적인 해결책은 아니라는 것을 알고 있습니다.

미리 감사드립니다!

여러분 안녕하세요,

웹훅에 Authorization 헤더를 설정하는 것이 불가능한 건가요?

그렇다면 웹훅은 대체 무엇에 사용되는 건가요? 유용한 웹훅의 99%는 이 헤더가 필요할 것 같은데요.

:face_with_raised_eyebrow:

새 사용자 정보를 Mailchimp 목록으로 보내야 하는 비슷한 요구 사항이 있었고, 위에서 설명된 것과 동일한 문제에 직면했습니다. 하지만 이 문제에 대한 해결책/우회 방법을 찾았습니다.

Mailchimp API는 API 요청에 API 키를 제공할 때 HTTP 기본 인증을 사용하므로, Authorization 헤더 대신 호출하는 URL에 키를 포함할 수도 있습니다.

따라서 제 경우 웹훅 페이로드 URL을 다음과 같이 설정했습니다:
https://user:[my-api-key]@[my-dc].api.mailchimp.com/3.0/lists/[my-list-id]/members/

그리고 이는 잘 작동하는 것 같으며, 이제 사용자는 Mailchimp 목록에 성공적으로 추가됩니다.