Company/Classroom/Enterprise 設定 - Webhook
のみ利用可能
管理者は Webhook を使用してデータアクセスの整合性をチェックし、通知が実際に Onshape から送信されたこと、および送信中に改ざんされていないことを確認できます。Webhook の基本認証を有効にすると、すべての Webhook リクエストで Authorization ヘッダーが入力されます。
Onshape の Webhook 設定に移動するには、Onshape ウィンドウの右上隅にあるアカウントユーザーアイコン () をクリックします。ドロップダウンメニューが開きます。Company/Classroom/Enterprise の [設定] をクリックします。
ページ左側のリストの [Webhook] をクリックします。
管理者は Webhook を使用してデータアクセスの整合性をチェックし、通知が確実に Onshape によって送信されたこと、および送信中に改ざんされていないことを確認できます。Webhook の基本認証を有効にすると、すべての Webhook リクエストで Authorization ヘッダーが入力されます。Webhook シグニチャは、攻撃から保護するためにシグニチャを使用するように Webhook を設定します。本番アプリケーションのキーをローテーションするには、プライマリキーとセカンダリキーを生成します。これにより、管理者は現在の接続を切断せずに、キーを非推奨にしたり交換したりできます。いずれかのキーが一致すると、Onshape によって有効なキーとして受け入れられます。クリップボードにコピーすると、関連するキーがクリップボードに送信されます。リセットすると、関連フィールドからキーが削除されます。プライマリキーを生成したら、[変更を保存] をクリックしてエントリを受け入れます。
このデータは暗号化されないため、管理者はすべての Webhook が安全なエンドポイントロケーション (https) にあることを確認する必要があります。
シグニチャ値は、次の構造を使用して Webhook ターゲットと照合できます。
Signature = <Base64<HMAC256-digest<<timestamp header value>.<webhook payload>>>
Onshape の Webhook には、次の追加ヘッダーが含まれます。
-
X-onshape-webhook-timestamp - Webhook の送信時刻を示すタイムスタンプ
-
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
}