Twilio Functions를 외부에서 안전하게 호출
4768 단어 twilio
소개
Twilio에는 서버리스 아키텍처Twilio Functions라는 서비스가 있습니다. 이 메커니즘을 사용하면 사용자 측에 서버를 제공하지 않고 동적 TwiML을 생성하거나 Twilio의 RestAPI로 전화나 SMS를 조작할 수 있습니다.
Functions를 실행하려면 Functions를 만들 때 자동으로 생성되는 URL을 호출해야 합니다.
이 기사에서는 Functions를 호출할 때 보안 조치로 "ACCESS CONTROL"을 활용하는 방법을 설명합니다.
ACCESS CONTROL이란?
Twilio는 Functions뿐만 아니라 Twilio의 공식 요청임을 증명하기 위해 유효성 검증 요청이라는 메커니즘을 제공합니다. 구체적으로는 Twilio의 요청 URL과 매개 변수에 대해 사용자 만 알 수있는 Auth Token에서 해시 값을 취하여 X-Twilio-Signature라는 HTTP 헤더 옵션을 넣습니다.
사용자 측은 이 헤더 값을 스스로 검증하는 것으로, 정말로 Twilio로부터의 리퀘스트인 것, 파라미터를 포함해 변조되어 있지 않은 것을 보증할 수 있습니다.
Twilio Functions에는 Functions를 생성할 때 다음과 같은 ACCESS CONTROL 옵션이 있습니다.
이 확인란을 켜면 위의 유효성 검사 요청이 Functions 런타임에 확인됩니다.
즉, Twilio 내부로부터의 액세스에 제한하는 경우(예를 들어, 전화 번호의 착신 설정시의 URL로서 Functions를 지정하는 경우 등)는, 체크를 ON으로 해 두는 것이 추천됩니다.
외부에서 Functions 호출에서 유효성 검사 요청 사용
위와 같이 X-Twilio-Signature를 검증하는 것이 ACCESS CONTROL의 목적이므로 외부 서버에서 Functions를 호출하는 경우에도 Twilio로부터의 요청과 마찬가지로 X-Twilio-Signature를 생성하여 헤더 에 부여하는 것으로, ACCESS CONTROL을 ON으로 하면서 시큐어한 액세스가 가능해집니다.
X-Twilio-Signature의 생성 예
다음 코드는 Node.js를 사용하여 X-Twilio-Signature를 생성하는 샘플입니다.
Node.js// Get twilio-node from twilio.com/docs/libraries/node
const crypto = require('crypto');
// Your Auth Token from twilio.com/console
const authToken = 'YOUR_AUTH_TOKEN';
// FunctionsのURL
let url = '呼び出したいFunctionsのURL';
// POSTパラメータ
const params = {
test: 'hogehoge'
};
// パラメータを並び替えて、URLに連結した文字列を生成
Object.keys(params).sort().forEach(function(key) {
url = url + key + params[key];
});
// X-Twilio-Signatureの生成
const signature = crypto.createHmac('sha1', authToken).update(Buffer.from(url, 'utf-8')).digest('base64')
console.log(signature);
이렇게 하여 생성한 X-Twilio-Signature를 Functions의 호출시에 POST 헤더에 넣어 주는 것으로, 외부로부터 호출할 때의 보안 대책이 됩니다. 덧붙여서 Signature가 다른 경우는, 호출이 403 에러가 됩니다.
Reference
이 문제에 관하여(Twilio Functions를 외부에서 안전하게 호출), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/mobilebiz/items/f8a8c795d5187e67166a
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
// Get twilio-node from twilio.com/docs/libraries/node
const crypto = require('crypto');
// Your Auth Token from twilio.com/console
const authToken = 'YOUR_AUTH_TOKEN';
// FunctionsのURL
let url = '呼び出したいFunctionsのURL';
// POSTパラメータ
const params = {
test: 'hogehoge'
};
// パラメータを並び替えて、URLに連結した文字列を生成
Object.keys(params).sort().forEach(function(key) {
url = url + key + params[key];
});
// X-Twilio-Signatureの生成
const signature = crypto.createHmac('sha1', authToken).update(Buffer.from(url, 'utf-8')).digest('base64')
console.log(signature);
Reference
이 문제에 관하여(Twilio Functions를 외부에서 안전하게 호출), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/mobilebiz/items/f8a8c795d5187e67166a텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)