Company/클래스룸/엔터프라이즈 설정 - 웹훅
다음 용도로만 사용 가능
관리자는 웹후크를 사용해 데이터 액세스 무결성을 검사하여 알림이 실제로 Onshape에서 전송된 것인지, 전송 중 조작되지 않았는지를 확인할 수 있습니다. 웹후크 기본 인증을 활성화하면 모든 웹후크 요청에서 인증 헤더가 채워집니다.
Onshape에서 웹훅 설정으로 이동하려면 Onshape 창의 오른쪽 상단 코너에 있는 계정 사용자 아이콘 을 클릭합니다. 이렇게 하면 드롭다운 메뉴가 열립니다. Company/클래스룸/엔터프라이즈 설정을 클릭합니다.
페이지 왼쪽의 목록에서 웹후크를 클릭합니다.
관리자는 웹후크를 사용해 데이터 액세스 무결성을 검사하여 알림이 실제로 Onshape에서 전송된 것인지, 전송 중 조작되지 않았는지를 확인할 수 있습니다. 웹후크 기본 인증을 활성화하면 모든 웹후크 요청에서 인증 헤더가 채워집니다. 웹후크 서명은 공격으로부터 보호하기 위해 서명을 사용하도록 웹후크를 구성합니다. 프로덕션 애플리케이션에서 키를 돌아가며 사용하도록 기본 및 보조 키를 생성합니다. 이렇게 하면 관리자가 현재 연결을 끊지 않고 키를 중단하거나 교환할 수 있습니다. 키가 일치하면 Onshape에서 유효한 것으로 허용됩니다. 클립보드로 복사는 관련 키를 클립보드로 전송합니다. 재설정은 관련 필드에서 키를 제거합니다. 기본 키가 생성되면 변경 내용 저장을 클릭하여 항목을 수락합니다.
이 데이터는 암호화도지 않으므로 관리자는 모든 웹후크가 끝점 위치(https)에 고정되었는지 확인해야 합니다.
서명 값은 다음 구조를 사용해 웹후크 대상과 일치시킬 수 있습니다.
Signature = <Base64<HMAC256-digest<<timestamp header value>.<webhook payload>>>
Onshape 웹후크에는 다음의 추가 헤더가 포함되어 있습니다.
-
X-onshape-webhook-timestamp - 웹후크가 전송된 때를 나타내는 타임스탬프
-
X-onshape-webhook-signature-primary - Company 설정에 기본 서명 키가 지정된 경우 나타납니다.
-
X-onshape-webhook-signature-secondary - Company 설정에 보조 서명 키가 지정된 경우 나타납니다.
JAVA
void matchSignatureHeader(String messageBody, String timestamp, String signatureKey, String signature) throws Exception {
String payload = timestamp + "." + messageBody;
String algorithm = "HmacSHA256";
Mac mac = Mac.getInstance(algorithm);
mac.init(new SecretKeySpec(signatureKey.getBytes(), algorithm));
byte[] payloadBytes = mac.doFinal(payload.getBytes());
Assert.assertArrayEquals(payloadBytes, Base64.decodeBase64(signature.getBytes()));
}
NODE.JS
const crypto = require('crypto');
……
var signatureKey; // The primary or secondary key
var message = timestampHeader + "." + rawPayload; // The timestamp header and the webhook payload
var hashValue = crypto.createHmac('SHA256', signatureKey).update(message).digest('base64');
if (hashValue === signatureHeader) { // signatureHeader is the primary or secondary signature header received with the webhook
// Signatures match
}