- 인쇄
- 어두운빛
소개
이 문서에서는 추가 보안 조치로 웹훅 비밀 토큰을 생성, 설정 및 인증하는 데 필요한 단계를 안내합니다. 이렇게 하면 들어오는 웹훅이 Autify에서 오는지 여부를 확인할 수 있습니다.
웹훅 비밀 토큰
웹후크 비밀 토큰은 엔드포인트에서 수신할 페이로드의 진위 여부를 확인하는 데 사용되는 문자열입니다. 이 값은 사용자가 생성한 다음 Autify에서도 설정해야 합니다.
웹훅 비밀 토큰을 사용하지 않을 때의 위험성
웹훅 비밀 토큰을 사용하지 않으면 다음과 같은 위험이 있습니다:
요청이 당사로부터 오는지 여부를 확인할 수 없음
페이로드가 변조되었는지 여부를 확인할 수 없습니다.
웹훅 비밀 토큰 설정 시 변경 사항
웹훅 비밀 토큰을 설정하면 Autify는 이를 사용하여 각 페이로드에 대한 해시 서명을 생성합니다. 이 서명은 요청의 헤더로 'X-Autify-Signature'로 인코딩됩니다. 각 페이로드에 대한 서명을 계산하기 위해 해시 기반 메시지 인증 코드(HMAC)를 사용합니다.
# Autify 요청 예시
POST /payload HTTP/1.1
Host: localhost:4567
X-Autify-Signature: sha1=7d38cdd689735b008b3c702edd92eea23791c5f6
콘텐츠 유형: application/json
<페이로드>
웹훅 비밀 토큰 생성 및 정의하기
웹훅을 설정하려는 워크스페이스의 설정 페이지로 이동합니다.
문자열을 생성합니다. 무작위로 생성된 값과 같이 추측하기 어려운 값을 사용합니다.
# 무작위 값 생성 예시
$ openssl rand -hex 20b2f82af62f9980f6b01e1cd7e716230d0a063f58
생성된 값으로 비밀 토큰 필드에 입력합니다.
생성 또는 업데이트 버튼을 클릭합니다.
웹훅 비밀 토큰으로 페이로드 유효성 검사하기
페이로드는 다음과 같은 방법으로 검증합니다:
웹후크 비밀 토큰을 사용하여 페이로드에 대한 HMAC 계산하기
(1)에서 얻은 값을
sha1=
끝에 연결합니다.수신한 요청 헤더
X-Autify-Signature
의 값을 가져옵니다.(2)와 (3)에서 얻은 값을 비교하여 일치하는지 확인합니다.
- 참고: 값이 일치하지 않으면 요청이 Autify가 아닌 다른 소스에서 온 것일 수 있습니다.
다음은 각 언어에서 값을 확인하는 방법의 예입니다:
Ruby
$ gem 설치 랙
require 'openssl'
require 'rack'
digest = OpenSSL::HMAC.hexdigest(
OpenSSL::Digest.new('sha1'),
'<웹훅 비밀 토큰>',
'<페이로드>'
)
computed_signature = "sha1=${digest}"
요청_서명 = '<X-Autify-Signature>'
Rack::Utils.secure_compare(
computed_signature,
request_signature
)
Node.js
$ npm install crypto
const crypto = require('crypto');
const digest = crypto
.createHmac('sha1','<웹훅 비밀 토큰>')
.update('<페이로드>')
.digest('hex')
const computedSignature = 'sha1=${digest}`
const requestSignature = '<X-Autify-Signature>'
crypto.timingSafeEqual(
Buffer.from(computedSignature, 'utf8'),
Buffer.from(requestSignature, 'utf8')
)