2014-02-17 5 views
6

ruby-on-rails 응용 프로그램에서 카드 결제에 스트라이프를 사용합니다. Stripe에는 응용 프로그램과 다시 연결되는 웹 훅 (webhooks)이 있으며, 성공 또는 실패한 모든 트랜잭션에 대한 세부 정보를 제공합니다. 이를 위해스트라이프 webhook 인증 - Ruby

, 나는이 같은 내 컨트롤러 무언가가 :

class StripeController < ApplicationController 
    def webhook 
    data_json = JSON.parse request.body.read 
    p data_json['data']['object']['customer'] 
    end 

내 질문에 내가이은 webhook의 신뢰성을 검증 할 수있는 방법인가? 나의 지식과 이해를 위해 이것은 (man-in-the-middle 공격) 쉽게 모방 할 수있다. 스트라이프의 webhooks documentation에서

답변

9

: 보안이, 또는 그 스트라이프가은 webhook을 보내 확인하는 것이 중요합니다, 당신은 ID가 당신은 webhook 전송 사용해야과에서 나머지 세부 사항을 요청해야하는 경우

직접 Stripe API.

8

보석 stripe_event에는 다른 방식으로 적용됩니다.

Securing your webhook endpointstripe_event gem에서 기본 HTTP 인증을 통해 이루어집니다.

스트라이프 만 기본 인증 암호를 알고있는 경우 요청이 실제로 스트라이프에서 발생했는지 확인합니다. 다음은 사용자가 수행하는 작업입니다.

  1. 응용 프로그램의 환경 변수 또는 secrets.yml 파일에서 사용할 수있는 비밀 키를 정렬하십시오.

    StripeEvent.authentication_secret = ENV['STRIPE_WEBHOOK_SECRET']

  2. 는 스트라이프의 설정에서은 webhook의 URL을 지정

    가, A와 비밀을 포함 : 그 비밀을 요구하는

  3. 구성 StripeEvent은 라인을 따라 코드를 사용하여 기본 인증 암호로 사용 어떤 사용자 이름과 함께 URL에서 암호 :

    https://stripe:[email protected]/my-webhook-path

SSL을 통해 webhook 끝점에 액세스하는 경우에만이 작업을 수행 할 수 있습니다. 스트라이프는이를 강력히 권장합니다.

1

다음 URL

https://username:[email protected]/my-webhook-path 

이 설정하여 예를 들어

Basic encode64(username:password) 

의 값을 가지는 Authorization 헤더에됩니다에은 webhook를 설정하여 스트라이프은 webhook 이벤트에 대한 basic http authentication을 활성화 할 수 있습니다 webhook에서 다음 URL로

https://admin:[email protected]/my-webhook-path 

인바운드 요청에이 머리글이 표시됩니다.

Basic YWRtaW46MTIzNDU2 
관련 문제