Company/Classroom/Enterprise 設定 - Webhook
                                            
                                        
のみ利用可能
管理者は Webhook を使用してデータアクセスの整合性をチェックし、通知が実際に Onshape から送信されたこと、および送信中に改ざんされていないことを確認できます。Webhook の基本認証を有効にすると、すべての Webhook リクエストで Authorization ヘッダーが入力されます。
Onshape の Webhook 設定に移動するには、Onshape ウィンドウの右上隅にあるアカウントユーザーアイコン (
) をクリックします。ドロップダウンメニューが開きます。Company/Classroom/Enterprise の [設定] をクリックします。
ページ左側のリストの [Webhook] をクリックします。
                                            
                                        
Company 設定 > Webhook
                                            
                                        
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
                    
                    }