この文章は Salesforce 機械翻訳システムを使用して翻訳されました。詳細はこちらをご参照ください。
英語に切り替える

署名付き要求の検証および復号化

署名付き要求を使用している場合、Salesforce はユーザコンテキストと認証情報をキャンバスアプリケーションの URL に送信します。署名付き要求を有効にするには、キャンバスアプリケーションの特定のコンシューマの秘密を使用して、署名付き要求が署名されたことを確認する必要があります。正しいコンシューマの秘密が使用されていた場合はそのコンテキストを信頼できますが、そうでない場合、その要求が Salesforce によって開始されなかったと想定できます。署名付き要求を検証および復号化するには、アプリケーションで次の操作を行う必要があります。
  1. Salesforce からの最初の署名付き要求を含む POST メッセージを受信します。
  2. 最初の期間で、署名付き要求を分割します。この結果、コンシューマの秘密で署名されたハッシュ済み Based64 コンテキストと、Base64 で符号化されたコンテキスト自体という 2 つの文字列が生成されます。
  3. HMAC SHA-256 アルゴリズムを使用して、Base64 で符号化されたコンテキストをハッシュし、コンシューマの秘密を使用してそれに署名します。
  4. 前のステップで作成した文字列を Base64 で符号化します。
  5. Base64 で符号化された文字列と、ステップ 2 で受け取ったコンシューマの秘密で署名されたハッシュ済み Base64 コンテキストを比較します。

2 つの値が同じである場合、署名付き要求は自分のコンシューマの秘密で署名されたものであり、信頼できることがわかります。これで、符号化されたコンテキストを Base64 で復号化し、必要な値を解析できるようになります。これらの値についての詳細は、「CanvasRequest」を参照してください。2 つの文字列が異なる場合、その要求は自分のコンシューマの秘密を使用してハッシュおよび署名されていなかったことになります。この場合、ユーザに適切なメッセージを返す必要があります。

検証および復号化用の関数

Canvas SDK (SalesforceCanvasFrameworkSDK\src\main\java\canvas\SignedRequest.java 内) にある次のいずれかの関数をコールして、署名付き要求を検証できます。
  • verifyAndDecode — Java オブジェクトとして、検証および復号化されたバージョンの署名付き要求を返します。
  • verifyAndDecodeAsJson — JSON 形式の文字列として、検証および復号化されたバージョンの署名付き要求を返します。

次のコード例に、SDK の関数を使用して署名付き要求を検証および復号化する方法を示します。このコードは、署名された秘密と Base64 JSON 文字列を解析するときに、署名付き要求の文字列を分割します。次に、HMAC SHA-256 アルゴリズムを使用して署名されたキャンバスアプリケーションのコンシューマの秘密を暗号化し、その暗号化された値と、Salesforce によって送信された、暗号化された値を比較します。

2 つの値が同じである場合、そのコンテキストは有効で、Salesforce から生成されたことがわかります。2 つの値が異なる場合、その要求は Salesforce から行われたものではありません。

verifyAndDecode 関数のコール

次のコードに、署名付き要求を取得し、verifyAndDecode 関数を使用して要求を検証および復号化する例を示します。

verifyAndDecodeAsJson 関数のコール

次のコードに、署名付き要求を取得し、verifyAndDecodeAsJson 関数を使用して要求を検証および復号化して、返された JSON 結果を解析する例を示します。