SOAP サービスでの証明書の使用
Salesforce で証明書を生成した後、証明書を使用して SOAP Web サービスへのコールアウトの双方向認証をサポートできます。
証明書を Apex と統合する手順は、次のとおりです。
- サードパーティから Web サービスの WSDL を受け取るか、接続するアプリケーションから生成します。
- Web サービスの WSDL から Apex クラスを生成します。「SOAP サービス: WSDL ドキュメントからのクラスの定義」を参照してください。
- 生成される Apex クラスには、WSDL ドキュメントで示される、サードパーティの Web サービスをコールするスタブが含まれています。Apex クラスを編集し、スタブクラスのインスタンスの clientCertName_x 変数に値を割り当てます。この値は、[証明書と鍵の管理] ページで生成した証明書の [一意の名前] と一致する必要があります。
次の例では、「生成される WSDL2Apex コード」のサンプル WSDL ファイルを使用して前の手順の最後のステップを説明します。この例では、DocSampleCert の [一意の名前] で証明書を生成したと想定しています。
1docSample.DocSamplePort stub = new docSample.DocSamplePort();
2stub.clientCertName_x = 'DocSampleCert';
3String input = 'This is the input string';
4String output = stub.EchoString(input);サードパーティから取得した組織用の証明書を使用する従来のプロセスがあります。base64 でクライアント証明書の鍵を符号化し、スタブの clientCert_x 変数に割り当てます。これは、非公開鍵を保護するセキュリティのベストプラクティスには従わないため、本質的に、Salesforce 証明書を使用する場合よりセキュリティは低くなります。Salesforce 証明書を使用する場合、非公開鍵は Salesforce 外では共有されません。
次の例では、「生成される WSDL2Apex コード」のサンプル WSDL ファイルを使用して、従来のプロセスを説明しています。
1docSample.DocSamplePort stub = new docSample.DocSamplePort();
2stub.clientCert_x =
3'MIIGlgIBAzCCBlAGCSqGSIb3DQEHAaCCBkEEggY9MIIGOTCCAe4GCSqGSIb3DQEHAaCCAd8EggHb'+
4'MIIB1zCCAdMGCyqGSIb3DQEMCgECoIIBgjCCAX4wKAYKKoZIhvcNAQwBAzAaBBSaUMlXnxjzpfdu'+
5'6YFwZgJFMklDWFyvCnQeuZpN2E+Rb4rf9MkJ6FsmPDA9MCEwCQYFKw4DAhoFAAQU4ZKBfaXcN45w'+
6'9hYm215CcA4n4d0EFJL8jr68wwKwFsVckbjyBz/zYHO6AgIEAA==';
7
8// Password for the keystore
9stub.clientCertPasswd_x = 'passwd';
10
11String input = 'This is the input string';
12String output = stub.EchoString(input);