デジタル署名と認証ドキュメント

Signatureサービスについて

Signatureサービスを使用すると、組織は、配布および受信するAdobe PDFドキュメントのセキュリティとプライバシーを保護できます。 このサービスでは、電子署名と認証を使用して、意図した受信者だけがドキュメントを変更できるようにします。 セキュリティ機能はドキュメント自体に適用されるので、ドキュメントはライフサイクル全体にわたって安全で制御された状態を保ちます。 ドキュメントは、ファイアウォールの外部、オフラインでダウンロードされた場合、および組織に送り返された場合に、セキュリティで保護された状態のままとなります。

メモ

PDFドキュメントへの署名など、特定の操作が呼び出されたときに呼び出されるSignatureサービス用のカスタム署名ハンドラーを作成できます。

署名フィールド名

一部のSignatureサービス操作では、操作を実行する署名フィールドの名前を指定する必要があります。 例えば、PDFドキュメントに署名する場合、署名する署名フィールドの名前を指定します。 署名フィールドのフルネームがform1[0].Form1[0].SignatureField1[0]であるとします。 form1[0].Form1[0].SignatureField1[0]の代わりにSignatureField1[0]を指定できます。

競合が原因でSignatureサービスが誤ったフィールドに署名する(または、署名フィールド名を必要とする別の操作を実行する)場合があります。 この競合は、同じPDFドキュメント内の複数の場所にSignatureField1[0]という名前が表示された結果です。 例えば、form1[0].Form1[0].SignatureField1[0]form1[0].Form1[0].SubForm1[0].SignatureField1[0]という2つの署名フィールドが含まれるPDFドキュメントで、SignatureField1[0]を指定したとします。 この場合、Signatureサービスは、ドキュメント内のすべての署名フィールドを反復する際に、検出された最初の署名フィールドに署名します。

1つのPDFドキュメント内に複数の署名フィールドがある場合は、署名フィールドの完全な名前を指定することをお勧めします。 つまり、SignatureField1[0]の代わりにform1[0].Form1[0].SignatureField1[0]を指定します。

Signatureサービスを使用して、次のタスクを実行できます。

メモ

Signatureサービスについて詳しくは、「AEM Formsのサービスリファレンス」を参照してください。

署名フィールドの追加

電子署名は、署名のグラフィック表現を含むフォームフィールドである署名フィールドに表示されます。 署名フィールドは、表示または非表示に設定することができます。署名者は、既存の署名フィールドを使用することも、プログラムを使用して署名フィールドを追加することもできます。 どちらの場合においても、PDF ドキュメントに署名できるようにするには、署名フィールドが存在している必要があります。

プログラムによって署名フィールドを追加するには、Signature サービス Java API や 署名 Web サービス API を使用します。1つのPDFドキュメントに複数の署名フィールドを追加できます。ただし、各署名フィールド名は一意である必要があります。

メモ

一部のPDFドキュメントタイプでは、プログラムによって署名フィールドを追加できません。 Signatureサービスと署名フィールドの追加について詳しくは、『AEM Forms向けサービスリファレンス』を参照してください。

手順の概要

署名フィールドをPDFドキュメントに追加するには、次のタスクを実行します。

  1. プロジェクトファイルを含めます。
  2. 署名クライアントを作成します。
  3. 署名フィールドが追加されるPDFドキュメントを取得します。
  4. 追加署名フィールドです。
  5. PDFドキュメントをPDFファイルとして保存します。

プロジェクトファイルを含める

必要なファイルを開発プロジェクトに含めます。 Javaを使用してクライアントアプリケーションを作成する場合は、必要なJARファイルを含めます。 Webサービスを使用している場合は、プロキシファイルを必ず含めてください。

次のJARファイルをプロジェクトのクラスパスに追加する必要があります。

  • adobe-livecycle-client.jar
  • adobe-usermanager-client.jar
  • adobe-signatures-client.jar
  • adobe-utilities.jar(AEM FormsがJBossにデプロイされている場合に必要)
  • jbossall-client.jar(AEM FormsがJBossにデプロイされている場合に必要)

署名クライアントの作成

プログラムを使用してSignatureサービスの操作を実行する前に、Signatureサービスクライアントを作成する必要があります。

署名フィールドが追加されたPDFドキュメントの取得

署名フィールドを追加するPDFドキュメントを取得する必要があります。

追加署名フィールド

署名フィールドをPDFドキュメントに正しく追加するには、署名フィールドの場所を識別する座標値を指定します。 (非表示の署名フィールドを追加する場合、これらの値は不要です)。 また、署名フィールドに署名が適用された後にロックするPDFドキュメントのフィールドを指定することもできます。

PDFドキュメントをPDFファイルとして保存

SignatureサービスがPDFドキュメントに署名フィールドを追加した後、ドキュメントをPDFファイルとして保存し、AcrobatまたはAdobe Readerで開くことができるようにすることができます。

関連トピック

AEM Forms Java ライブラリファイルを含める

接続プロパティの設定

PDFドキュメントへのデジタル署名

Java API <a0追加/>を使用した署名フィールド

署名API追加 (Java)を使用した署名フィールド:

  1. プロジェクトファイルを含める

    Javaプロジェクトのクラスパスに、adobe-signatures-client.jarなどのクライアントJARファイルを含めます。

  2. 署名クライアントの作成

    • 接続プロパティを含む ServiceClientFactory オブジェクトを作成します。
    • コンストラクタを使用して SignatureServiceClient オブジェクトを渡すことによって、ServiceClientFactory オブジェクトを作成します。
  3. 署名フィールドが追加されたPDFドキュメントの取得

    • 署名フィールドの追加先のPDFドキュメントを表すjava.io.FileInputStreamオブジェクトを作成します。そのためには、コンストラクターを使用し、PDFドキュメントの場所を指定する文字列値を渡します。
    • コンストラクタを使用して com.adobe.idp.Document オブジェクトを渡すことによって、java.io.FileInputStream オブジェクトを作成します。
  4. 追加署名フィールド

    • コンストラクターを使用して、署名フィールドの場所を指定するPositionRectangleオブジェクトを作成します。 コンストラクタ内で、座標値を指定します。

    • 必要に応じて、電子署名が署名フィールドに適用されたときにロックされるフィールドを指定するFieldMDPOptionsオブジェクトを作成します。

    • 追加SignatureServiceClientオブジェクトのaddSignatureFieldメソッドを呼び出し、次の値を渡すことによって、PDFドキュメントに署名フィールドを挿入します。

      • A com.adobe.idp. Document 署名フィールドを追加するPDFドキュメントを表すオブジェクトです。
      • 署名フィールドの名前を指定するstring値です。
      • 署名フィールドを追加するページ番号を表すjava.lang.Integer値です。
      • 署名フィールドの場所を指定するPositionRectangleオブジェクトです。
      • 電子署名が署名フィールドに適用された後にロックされるPDFドキュメントのフィールドを指定するFieldMDPOptionsオブジェクトです。 このパラメーターの値はオプションで、nullを渡すことができます。
    • 様々な実行時値を指定するPDFSeedValueOptionsオブジェクト。 このパラメーターの値はオプションで、nullを渡すことができます。

      addSignatureFieldメソッドはcom.adobe.idpを返します。 Document 署名フィールドが含まれるPDFドキュメントを表すオブジェクトです。

    メモ

    SignatureServiceClientオブジェクトのaddInvisibleSignatureFieldメソッドを呼び出して、非表示の署名フィールドを追加できます。

  5. PDFドキュメントをPDFファイルとして保存

    • java.io.File オブジェクトを作成し、ファイル拡張子が .pdf であることを確認します。
    • com.adobe.idpを呼び出します。 Document オブジェクトの copyToFile メソッドを使用して、 Document オブジェクトの内容をファイルにコピーします。com.adobe.idpを使用していることを確認します。 Document メソッドによって返されたオブ addSignatureField ジェクト。

関連トピック

SignatureサービスAPIのクイック開始

web追加サービスAPIを使用した署名フィールド

署名API(Webサービス)を使用して署名フィールドを追加するには:

  1. プロジェクトファイルを含める

    MTOMを使用するMicrosoft .NETプロジェクトを作成します。 次のWSDL定義を使用していることを確認します。http://localhost:8080/soap/services/SignatureService?WSDL&lc_version=9.0.1.

    メモ

    localhostを、AEM FormsをホストするサーバーのIPアドレスに置き換えます。

  2. 署名クライアントの作成

    • SignatureServiceClientオブジェクトを作成するには、そのデフォルトのコンストラクタを使用します。

    • System.ServiceModel.EndpointAddressコンストラクターを使用してSignatureServiceClient.Endpoint.Addressオブジェクトを作成します。 WSDLをAEM Formsサービスに指定するstring値を渡します(例:http://localhost:8080/soap/services/SignatureService?WSDL)。 lc_version属性を使用する必要はありません。 この属性は、サービス参照を作成する場合に使用されます)。

    • SignatureServiceClient.Endpoint.Bindingフィールドの値を取得してSystem.ServiceModel.BasicHttpBindingオブジェクトを作成します。 戻り値を BasicHttpBinding にキャストします。

    • System.ServiceModel.BasicHttpBindingオブジェクトのMessageEncodingフィールドをWSMessageEncoding.Mtomに設定します。 この値により、MTOMが使用されます。

    • 次のタスクを実行して、基本的なHTTP認証を有効にします。

      • AEM formsユーザー名をフィールドSignatureServiceClient.ClientCredentials.UserName.UserNameに割り当てます。
      • 対応するパスワード値をフィールドSignatureServiceClient.ClientCredentials.UserName.Passwordに割り当てます。
      • 定数値HttpClientCredentialType.BasicをフィールドBasicHttpBindingSecurity.Transport.ClientCredentialTypeに割り当てます。
      • 定数値BasicHttpSecurityMode.TransportCredentialOnlyをフィールドBasicHttpBindingSecurity.Security.Modeに割り当てます。
  3. 署名フィールドが追加されたPDFドキュメントの取得

    • コンストラクタを使用して BLOB オブジェクトを作成します。BLOBオブジェクトは、署名フィールドを含むPDFドキュメントを保存するために使用します。
    • コンストラクターを呼び出し、PDFドキュメントーのファイルの場所とファイルを開くモードを表す文字列値を渡して、System.IO.FileStreamオブジェクトを作成します。
    • System.IO.FileStreamオブジェクトの内容を格納するバイト配列を作成します。 System.IO.FileStreamオブジェクトのLengthプロパティを取得して、バイト配列のサイズを決定できます。
    • System.IO.FileStreamオブジェクトのReadメソッドを呼び出し、読み取るバイト配列、開始位置、ストリーム長を渡すことで、バイト配列にストリームデータを入力します。
    • BLOBオブジェクトにMTOMプロパティを割り当て、バイト配列の内容を指定します。
  4. 追加署名フィールド

    追加SignatureServiceClientオブジェクトのaddSignatureFieldメソッドを呼び出し、次の値を渡すことによって、PDFドキュメントに署名フィールドを挿入します。

    • 署名フィールドを追加するPDFドキュメントを表すBLOBオブジェクトです。
    • 署名フィールド名を指定するstring値です。
    • 署名フィールドを追加するページ番号を表すinteger値です。
    • 署名フィールドの場所を指定するPositionRectオブジェクトです。
    • 電子署名が署名フィールドに適用された後にロックされるPDFドキュメントのフィールドを指定するFieldMDPOptionsオブジェクトです。 このパラメーターの値はオプションで、nullを渡すことができます。
    • 様々な実行時値を指定するPDFSeedValueOptionsオブジェクト。 このパラメーターの値はオプションで、nullを渡すことができます。

    addSignatureFieldメソッドは、署名フィールドを含むPDFドキュメントを表すBLOBオブジェクトを返します。

  5. PDFドキュメントをPDFファイルとして保存

    • コンストラクターを呼び出し、署名フィールドとファイルを開くモードを含むPDFドキュメントのファイルの場所を表すstring値を渡して、System.IO.FileStreamオブジェクトを作成します。
    • addSignatureFieldメソッドから返されたBLOBオブジェクトの内容を格納するバイト配列を作成します。 BLOBオブジェクトのbinaryDataデータメンバの値を取得して、バイト配列を入力します。
    • コンストラクターを呼び出してSystem.IO.FileStreamオブジェクトを渡し、System.IO.BinaryWriterオブジェクトを作成します。
    • System.IO.BinaryWriterオブジェクトのWriteメソッドを呼び出し、バイト配列を渡すことで、バイト配列の内容をPDFファイルに書き込みます。

関連トピック

MTOMを使用したAEM Formsの呼び出し

SwaRefを使用したAEM Formsの呼び出し

署名フィールド名の取得

署名または認証する PDF ドキュメント内のすべての署名フィールドの名前を取得できます。PDF ドキュメント内の署名フィールド名が分からない場合や、名前を検証したい場合に、プログラムによって名前を取得することができます。Signatureサービスは、form1[0].grantApplication[0].page1[0].SignatureField1[0]などの署名フィールドの完全修飾名を返します。

メモ

Signatureサービスについて詳しくは、『AEM Forms用サービスリファレンス』を参照してください。

手順の概要

署名フィールド名を取得するには、次のタスクを実行します。

  1. プロジェクトファイルを含めます。
  2. 署名クライアントを作成します。
  3. 署名フィールドを含むPDFドキュメントを取得します。
  4. 署名フィールド名を取得します。

プロジェクトファイルを含める

必要なファイルを開発プロジェクトに含めます。 Javaを使用してクライアントアプリケーションを作成する場合は、必要なJARファイルを含めます。 Webサービスを使用している場合は、プロキシファイルを必ず含めてください。

次のJARファイルをプロジェクトのクラスパスに追加する必要があります。

  • adobe-livecycle-client.jar
  • adobe-usermanager-client.jar
  • adobe-signatures-client.jar
  • adobe-utilities.jar(AEM FormsがJBossにデプロイされている場合に必要)
  • jbossall-client.jar(AEM FormsがJBossにデプロイされている場合に必要)

これらのJARファイルの場所について詳しくは、「AEM FormsJavaライブラリファイルを含める」を参照してください。

署名クライアントの作成

プログラムを使用してSignatureサービスの操作を実行する前に、Signatureサービスクライアントを作成する必要があります。

署名フィールドを含むPDFドキュメントの取得

署名フィールドを含むPDFドキュメントを取得します。

署名フィールド名の取得

1つ以上の署名フィールドを含むPDFドキュメントを取得した後に、署名フィールド名を取得できます。

関連トピック

Java APIを使用した署名フィールド名の取得

WebサービスAPIを使用した署名フィールドの取得

AEM Forms Java ライブラリファイルを含める

接続プロパティの設定

署名フィールドの追加

Java APIを使用した署名フィールド名の取得

署名API(Java)を使用して署名フィールド名を取得します。

  1. プロジェクトファイルを含める

    Javaプロジェクトのクラスパスに、adobe-signatures-client.jarなどのクライアントJARファイルを含めます。

  2. 署名クライアントの作成

    • 接続プロパティを含む ServiceClientFactory オブジェクトを作成します。
    • コンストラクタを使用して SignatureServiceClient オブジェクトを渡すことによって、ServiceClientFactory オブジェクトを作成します。
  3. 署名フィールドを含むPDFドキュメントの取得

    • 署名フィールドを含むPDFドキュメントを表すjava.io.FileInputStreamオブジェクトを作成します。そのためには、コンストラクターを使用し、PDFドキュメントの場所を指定する文字列値を渡します。
    • コンストラクタを使用して com.adobe.idp.Document オブジェクトを渡すことによって、java.io.FileInputStream オブジェクトを作成します。
  4. 署名フィールド名の取得

    • SignatureServiceClientオブジェクトのgetSignatureFieldListメソッドを呼び出し、署名フィールドを含むPDFドキュメントを含むcom.adobe.idp.Documentオブジェクトを渡して、署名フィールド名を取得します。 このメソッドは、java.util.Listオブジェクトを返します。このオブジェクト内の各要素にはPDFSignatureFieldオブジェクトが含まれます。 このオブジェクトを使用すると、署名フィールドが表示されているかどうかなど、署名フィールドに関する追加情報を取得できます。
    • java.util.Listオブジェクトを繰り返し処理して、署名フィールド名があるかどうかを確認します。 PDFドキュメントの各署名フィールドに対して、個別のPDFSignatureFieldオブジェクトを取得できます。 署名フィールドの名前を取得するには、PDFSignatureFieldオブジェクトのgetNameメソッドを呼び出します。 このメソッドは、署名フィールド名を指定するstring値を返します。

関連トピック

署名フィールド名の取得

クイック開始(SOAPモード):Java APIを使用した署名フィールド名の取得

AEM Forms Java ライブラリファイルを含める

接続プロパティの設定

WebサービスAPIを使用して署名フィールドを取得する

署名API(Webサービス)を使用して署名フィールド名を取得します。

  1. プロジェクトファイルを含める

    MTOMを使用するMicrosoft .NETプロジェクトを作成します。 次のWSDL定義を使用していることを確認します。http://localhost:8080/soap/services/SignatureService?WSDL&lc_version=9.0.1.

    メモ

    localhostを、AEM FormsをホストするサーバーのIPアドレスに置き換えます。

  2. 署名クライアントの作成

    • SignatureServiceClientオブジェクトを作成するには、そのデフォルトのコンストラクタを使用します。

    • System.ServiceModel.EndpointAddressコンストラクターを使用してSignatureServiceClient.Endpoint.Addressオブジェクトを作成します。 WSDLをAEM Formsサービスに指定するstring値を渡します(例:http://localhost:8080/soap/services/SignatureService?WSDL)。 lc_version属性を使用する必要はありません。 この属性は、サービス参照を作成する場合に使用されます)。

    • SignatureServiceClient.Endpoint.Bindingフィールドの値を取得してSystem.ServiceModel.BasicHttpBindingオブジェクトを作成します。 戻り値を BasicHttpBinding にキャストします。

    • System.ServiceModel.BasicHttpBindingオブジェクトのMessageEncodingフィールドをWSMessageEncoding.Mtomに設定します。 この値により、MTOMが使用されます。

    • 次のタスクを実行して、基本的なHTTP認証を有効にします。

      • AEM formsユーザー名をフィールドSignatureServiceClient.ClientCredentials.UserName.UserNameに割り当てます。
      • 対応するパスワード値をフィールドSignatureServiceClient.ClientCredentials.UserName.Passwordに割り当てます。
      • 定数値HttpClientCredentialType.BasicをフィールドBasicHttpBindingSecurity.Transport.ClientCredentialTypeに割り当てます。
      • 定数値BasicHttpSecurityMode.TransportCredentialOnlyをフィールドBasicHttpBindingSecurity.Security.Modeに割り当てます。
  3. 署名フィールドを含むPDFドキュメントの取得

    • コンストラクタを使用して BLOB オブジェクトを作成します。BLOBオブジェクトは、署名フィールドを含むPDFドキュメントを保存するために使用します。
    • コンストラクターを呼び出し、PDFドキュメントーのファイルの場所とファイルを開くモードを表す文字列値を渡して、System.IO.FileStreamオブジェクトを作成します。
    • System.IO.FileStreamオブジェクトの内容を格納するバイト配列を作成します。 System.IO.FileStreamオブジェクトのLengthプロパティを取得して、バイト配列のサイズを決定できます。
    • System.IO.FileStreamオブジェクトのReadメソッドを呼び出し、読み取るバイト配列、開始位置、ストリーム長を渡すことで、バイト配列にストリームデータを入力します。
    • BLOBオブジェクトにバイト配列の内容をMTOMフィールドに割り当てて入力します。
  4. 署名フィールド名の取得

    • SignatureServiceClientオブジェクトのgetSignatureFieldListメソッドを呼び出し、署名フィールドを含むPDFドキュメントを含むBLOBオブジェクトを渡して、署名フィールド名を取得します。 このメソッドは、MyArrayOfPDFSignatureFieldコレクションオブジェクトを返します。各要素にはPDFSignatureFieldオブジェクトが含まれます。
    • MyArrayOfPDFSignatureFieldオブジェクトを繰り返し処理して、署名フィールド名があるかどうかを判断します。 PDFドキュメントの各署名フィールドに対して、PDFSignatureFieldオブジェクトを取得できます。 署名フィールドの名前を取得するには、PDFSignatureFieldオブジェクトのgetNameメソッドを呼び出します。 このメソッドは、署名フィールド名を指定するstring値を返します。

関連トピック

署名フィールド名の取得

MTOMを使用したAEM Formsの呼び出し

SwaRefを使用したAEM Formsの呼び出し

署名フィールドの変更

Java APIとWebサービスAPIを使用して、PDFドキュメント内の署名フィールドを変更できます。 署名フィールドの署名フィールドロックディクショナリまたはシード値ディクショナリの値を操作することで署名フィールドを変更します。

フィールドロックディクショナリ​は、署名フィールドが署名されたときにロックされるフィールドのリストを指定します。 フィールドがロックされると、ユーザーはフィールドを変更できません。シード値ディクショナリ​には、署名の適用時に使用される制約情報が含まれています。 例えば、署名を無効にすることなく実行できるアクションを制御する権限設定を変更することができます。

既存の署名フィールドを変更すると、PDFドキュメントに変更を加え、ビジネス要件の変更を反映させることができます。 例えば、新しいビジネス要件では、ドキュメントの署名後にすべてのドキュメントフィールドのロックが必要になる場合があります。

この節では、フィールドロックディクショナリとシード値ディクショナリの両方の値を変更して、署名フィールドを変更する方法について説明します。 署名フィールドロックディクショナリに変更を加えると、署名フィールドへの署名時に、PDFドキュメント内のすべてのフィールドがロックされます。 シード値ディクショナリに変更を加えると、ドキュメントに対する特定の種類の変更が禁止されます。

メモ

Signatureサービスと署名フィールドの変更について詳しくは、『AEM Forms向けサービスリファレンス』を参照してください。

手順の概要

PDFドキュメント内の署名フィールドを変更するには、次のタスクを実行します。

  1. プロジェクトファイルを含めます。
  2. 署名クライアントを作成します。
  3. 変更する署名フィールドが含まれているPDFドキュメントを取得します。
  4. 辞書の値を設定します。
  5. 署名フィールドを変更します。
  6. PDFドキュメントをPDFファイルとして保存します。

プロジェクトファイルを含める

開発プロジェクトに必要なファイルを含めます。 Javaを使用してクライアントアプリケーションを作成する場合は、必要なJARファイルを含めます。 Webサービスを使用している場合は、プロキシファイルを必ず含めてください。

次のJARファイルをプロジェクトのクラスパスに追加する必要があります。

  • adobe-livecycle-client.jar
  • adobe-usermanager-client.jar
  • adobe-signatures-client.jar
  • adobe-utilities.jar(AEM FormsがJBossにデプロイされている場合に必要)
  • jbossall-client.jar(AEM FormsがJBossにデプロイされている場合に必要)

これらのJARファイルの場所について詳しくは、「LiveCycleJavaライブラリファイルを含める」を参照してください。

署名クライアントの作成

プログラムを使用してSignatureサービスの操作を実行する前に、Signatureサービスクライアントを作成する必要があります。

変更する署名フィールドが含まれているPDFドキュメントの取得

変更する署名フィールドが含まれているPDFドキュメントを取得します。

ディクショナリ値の設定

署名フィールドを変更するには、フィールドロックディクショナリまたはシード値ディクショナリに値を割り当てます。 署名フィールドロックディクショナリ値を指定するには、ドキュメントフィールドの署名時にロックされるPDF署名フィールドを指定する必要があります。 (この節では、すべてのフィールドをロックする方法について説明します)。

次のシード値ディクショナリ値を設定できます。

  • リビジョンの確認:署名フィールドに署名が適用された場合に失効確認を実行するかどうかを指定します。

  • 証明書のオプション:証明書のシード値ディクショナリに値を割り当てます。証明書のオプションを指定する前に、証明書のシード値ディクショナリについて理解することをお勧めします。 (「PDFリファレンス」を参照)。

  • ダイジェストオプション:署名に使用するダイジェストアルゴリズムを割り当てます。有効な値はSHA1、SHA256、SHA384、SHA512およびRIPEMD160です。

  • フィルタ:署名フィールドで使用するフィルターを指定します。例えば、Adobe.PPKLiteフィルターを使用できます。 (「PDFリファレンス」を参照)。

  • フラグのオプション:この署名フィールドに関連付けられているフラグ値を指定します。値が1の場合、署名者は指定された値のみをエントリに使用する必要があります。 値が0の場合、他の値も許可されます。 ビット位置は次のとおりです。

    • 1(Filter):署名フィ ールドへの署名に使用する署名ハンドラーです
    • 2(SubFilter):署名時 に使用する有効なエンコーディングを示す名前の配列
    • 3(V):署名フィールドへの署名に使用する署名ハンドラーの必要最小限のバージョン番号です
    • 4(Reasons):ドキュメント に署名する理由を指定する文字列の配列です
    • 5(PDFLegalWarnings):考えら れる法的証明を指定する文字列の配列です
  • 法的証明:ドキュメントを認証すると、ドキュメントの表示されるコンテンツをあいまいにしたり誤解を招く可能性のある、特定の種類のコンテンツを自動的にスキャンします。例えば、注釈によって、認証対象を把握するために重要なテキストが隠される場合があります。 スキャン処理では、この種類のコンテンツの存在を示す警告が生成されます。 また、警告を生成した可能性のあるコンテンツに関する追加の説明も提供します。

  • 権限:署名を無効にすることなく、PDFドキュメントで使用できる権限を指定します。

  • 理由:このドキュメントに署名が必要な理由を指定します。

  • タイムスタンプ:タイムスタンプオプションを指定します。例えば、使用するタイムスタンプサーバーのURLを設定できます。

  • バージョン:署名フィールドへの署名に使用する署名ハンドラーの最小バージョン番号を指定します。

署名フィールドの変更

Signatureサービスクライアントを作成した後、変更する署名フィールドを含むPDFドキュメントを取得し、Dictionary値を設定した後、Signatureサービスに対して署名フィールドを変更するよう指示できます。 次に、Signatureサービスは、変更された署名フィールドを含むPDFドキュメントを返します。 元のPDFドキュメントは影響を受けません。

PDFドキュメントをPDFファイルとして保存

変更した署名フィールドを含むPDFドキュメントをPDFファイルとして保存し、ユーザーがAcrobatまたはAdobe Readerで開けるようにします。

関連トピック

AEM Forms Java ライブラリファイルを含める

接続プロパティの設定

SignatureサービスAPIのクイック開始

PDFドキュメントへのデジタル署名

Java APIを使用した署名フィールドの変更

署名API (Java)を使用して署名フィールドを変更します。

  1. プロジェクトファイルを含める

    Javaプロジェクトのクラスパスに、adobe-signatures-client.jarなどのクライアントJARファイルを含めます。

  2. 署名クライアントの作成

    • 接続プロパティを含む ServiceClientFactory オブジェクトを作成します。
    • コンストラクタを使用して SignatureServiceClient オブジェクトを渡すことによって、ServiceClientFactory オブジェクトを作成します。
  3. 変更する署名フィールドが含まれているPDFドキュメントの取得

    • コンストラクターを使用し、PDFドキュメントの場所を指定する文字列値を渡して、変更する署名フィールドを含むPDFドキュメントを表すjava.io.FileInputStreamオブジェクトを作成します。
    • コンストラクタを使用して com.adobe.idp.Document オブジェクトを渡すことによって、java.io.FileInputStream オブジェクトを作成します。
  4. ディクショナリ値の設定

    • コンストラクタを使用して PDFSignatureFieldProperties オブジェクトを作成します。PDFSignatureFieldPropertiesオブジェクトは、署名フィールドロックディクショナリとシード値ディクショナリ情報を格納します。
    • コンストラクタを使用して PDFSeedValueOptionSpec オブジェクトを作成します。このオブジェクトを使用すると、シード値ディクショナリの値を設定できます。
    • PDFSeedValueOptionSpecオブジェクトのsetMdpValueメソッドを呼び出し、MDPPermissions.NoChanges定義済みリスト値を渡すことで、PDFドキュメントの変更を許可しない。
    • コンストラクタを使用して FieldMDPOptionSpec オブジェクトを作成します。このオブジェクトを使用すると、署名フィールドロックディクショナリの値を設定できます。
    • FieldMDPOptionSpecオブジェクトのsetMdpValueメソッドを呼び出し、FieldMDPAction.ALL定義済みリスト値を渡すことで、PDFドキュメント内のすべてのフィールドをロックします。
    • PDFSignatureFieldPropertiesオブジェクトのsetSeedValueメソッドを呼び出し、PDFSeedValueOptionSpecオブジェクトを渡して、シード値ディクショナリ情報を設定します。
    • PDFSignatureFieldPropertiesオブジェクトのsetFieldMDPメソッドを呼び出し、FieldMDPOptionSpecオブジェクトを渡して、署名フィールドロックディクショナリ情報を設定します。
    メモ

    設定可能なシード値ディクショナリの値をすべて表示するには、PDFSeedValueOptionSpecクラス参照を参照してください。 (「AEM FormsAPIリファレンス」を参照)。

  5. 署名フィールドの変更

    SignatureServiceClientオブジェクトのmodifySignatureFieldメソッドを呼び出し、次の値を渡して、署名フィールドを変更します。

    • 変更する署名フィールドを含むPDFドキュメントを格納するcom.adobe.idp.Documentオブジェクトです
    • 署名フィールドの名前を指定するstring値です
    • 署名フィールドロックディクショナリとシード値ディクショナリ情報を格納するPDFSignatureFieldPropertiesオブジェクト

    modifySignatureFieldメソッドは、変更された署名フィールドを含むPDFドキュメントを格納するcom.adobe.idp.Documentオブジェクトを返します。

  6. PDFドキュメントをPDFファイルとして保存

    • java.io.Fileオブジェクトを作成し、ファイル名の拡張子が.pdfであることを確認します。
    • com.adobe.idp.DocumentオブジェクトのcopyToFileメソッドを呼び出して、com.adobe.idp.Documentオブジェクトの内容をファイルにコピーします。 modifySignatureFieldメソッドが返したcom.adobe.idp.Documentオブジェクトを使用していることを確認してください。

WebサービスAPIを使用して署名フィールドを変更する

Signature API(Webサービス)を使用して署名フィールドを変更します。

  1. プロジェクトファイルを含める

    MTOMを使用するMicrosoft .NETプロジェクトを作成します。 次のWSDL定義を使用していることを確認します。http://localhost:8080/soap/services/SignatureService?WSDL&lc_version=9.0.1.

    メモ

    localhostを、AEM FormsをホストするサーバーのIPアドレスに置き換えます。

  2. 署名クライアントの作成

    • SignatureServiceClientオブジェクトを作成するには、そのデフォルトのコンストラクタを使用します。

    • System.ServiceModel.EndpointAddressコンストラクターを使用してSignatureServiceClient.Endpoint.Addressオブジェクトを作成します。 WSDLをAEM Formsサービスに指定するstring値を渡します(例:http://localhost:8080/soap/services/SignatureService?WSDL)。 lc_version属性を使用する必要はありません。 この属性は、サービス参照を作成する場合に使用されます)。

    • SignatureServiceClient.Endpoint.Bindingフィールドの値を取得してSystem.ServiceModel.BasicHttpBindingオブジェクトを作成します。 戻り値を BasicHttpBinding にキャストします。

    • System.ServiceModel.BasicHttpBindingオブジェクトのMessageEncodingフィールドをWSMessageEncoding.Mtomに設定します。 この値により、MTOMが使用されます。

    • 次のタスクを実行して、基本的なHTTP認証を有効にします。

      • AEM formsユーザー名をフィールドSignatureServiceClient.ClientCredentials.UserName.UserNameに割り当てます。
      • 対応するパスワード値をフィールドSignatureServiceClient.ClientCredentials.UserName.Passwordに割り当てます。
      • 定数値HttpClientCredentialType.BasicをフィールドBasicHttpBindingSecurity.Transport.ClientCredentialTypeに割り当てます。
      • 定数値BasicHttpSecurityMode.TransportCredentialOnlyをフィールドBasicHttpBindingSecurity.Security.Modeに割り当てます。
  3. 変更する署名フィールドが含まれているPDFドキュメントの取得

    • コンストラクタを使用して BLOB オブジェクトを作成します。BLOBオブジェクトは、変更する署名フィールドを含むPDFドキュメントを保存するために使用します。
    • コンストラクターを呼び出し、PDFドキュメントーのファイルの場所とファイルを開くモードを表す文字列値を渡して、System.IO.FileStreamオブジェクトを作成します。
    • System.IO.FileStreamオブジェクトの内容を格納するバイト配列を作成します。 System.IO.FileStreamオブジェクトのLengthプロパティを取得して、バイト配列のサイズを決定できます。
    • System.IO.FileStreamオブジェクトのReadメソッドを呼び出し、読み取るバイト配列、開始位置、ストリーム長を渡すことで、バイト配列にストリームデータを入力します。
    • BLOBオブジェクトに、MTOMプロパティにバイト配列の内容を割り当てて入力します。
  4. ディクショナリ値の設定

    • コンストラクタを使用して PDFSignatureFieldProperties オブジェクトを作成します。このオブジェクトは、署名フィールドロックディクショナリとシード値ディクショナリの情報を格納します。
    • コンストラクタを使用して PDFSeedValueOptionSpec オブジェクトを作成します。このオブジェクトを使用すると、シード値ディクショナリの値を設定できます。
    • MDPPermissions.NoChanges定義済みリスト値をPDFSeedValueOptionSpecオブジェクトのmdpValueデータメンバに割り当てて、PDFドキュメントの変更を許可しない。
    • コンストラクタを使用して FieldMDPOptionSpec オブジェクトを作成します。このオブジェクトを使用すると、署名フィールドロックディクショナリの値を設定できます。
    • FieldMDPAction.ALL定義済みリスト値をFieldMDPOptionSpecオブジェクトのmdpValueデータメンバに割り当てて、PDFドキュメント内のすべてのフィールドをロックします。
    • シード値ディクショナリ情報を設定するには、PDFSeedValueOptionSpecオブジェクトをPDFSignatureFieldPropertiesオブジェクトのseedValueデータメンバに割り当てます。
    • FieldMDPOptionSpecオブジェクトをPDFSignatureFieldPropertiesオブジェクトのfieldMDPデータメンバに割り当てて、署名フィールドロックディクショナリ情報を設定します。
    メモ

    設定可能なシード値ディクショナリの値をすべて表示するには、PDFSeedValueOptionSpecクラス参照を参照してください。 (「AEM FormsAPIリファレンス」を参照)。

  5. 署名フィールドの変更

    SignatureServiceClientオブジェクトのmodifySignatureFieldメソッドを呼び出し、次の値を渡して、署名フィールドを変更します。

    • 変更する署名フィールドを含むPDFドキュメントを格納するBLOBオブジェクトです
    • 署名フィールドの名前を指定するstring値です
    • 署名フィールドロックディクショナリとシード値ディクショナリ情報を格納するPDFSignatureFieldPropertiesオブジェクト

    modifySignatureFieldメソッドは、変更された署名フィールドを含むPDFドキュメントを格納するBLOBオブジェクトを返します。

  6. PDFドキュメントをPDFファイルとして保存

    • コンストラクターを呼び出し、署名フィールドを含むPDFドキュメントのファイルの場所、およびファイルを開くモードを表すstring値を渡して、System.IO.FileStreamオブジェクトを作成します。
    • addSignatureFieldメソッドが返すBLOBオブジェクトの内容を格納するバイト配列を作成します。 BLOBオブジェクトのMTOMデータメンバの値を取得して、バイト配列を入力します。
    • コンストラクターを呼び出してSystem.IO.FileStreamオブジェクトを渡し、System.IO.BinaryWriterオブジェクトを作成します。
    • System.IO.BinaryWriterオブジェクトのWriteメソッドを呼び出し、バイト配列を渡すことで、バイト配列の内容をPDFファイルに書き込みます。

関連トピック

MTOMを使用したAEM Formsの呼び出し

SwaRefを使用したAEM Formsの呼び出し

PDFドキュメントへのデジタル署名

セキュリティレベルの提供のため、PDF に電子署名を適用することができます。手書き署名のような電子署名は、署名者を識別したり、ドキュメントに関するステートメントを作成する手段として使用できます。ドキュメントの電子署名に使用されている技術は、署名者と受信者の両方が、何に署名されているのかを明確にし、その署名によりドキュメントに変更がないことを確認するのに役立ちます。

PDF ドキュメントは、公開鍵を用いて署名されます。署名者は公開鍵と秘密鍵の 2 つの鍵を持っています。秘密鍵はユーザーの秘密鍵証明書に保存されます。この資格情報は署名時に使用可能にする必要があります。 公開鍵はユーザーの証明書に保存されます。受信者が署名を検証するには、この証明書を使用できる必要があります。 失効した証明書に関する情報は、認証機関から配布される証明書失効リスト(CRL)およびオンライン証明書ステータスプロトコル(OCSP)応答内にあります。署名が行われた時間は、タイムスタンプ局として知られる信頼できるソースから取得されます。

メモ

PDFドキュメントに電子署名する前に、証明書がAEM Formsに追加されていることを確認する必要があります。 証明書は、管理コンソールを使用して、またはTrust Manager APIをプログラムで使用して追加します。 (「Trust Manager APIを使用した秘密鍵証明書の読み込み」を参照)。

PDFドキュメントにプログラムによってデジタル署名を行うことができます。 PDFドキュメントに電子署名する場合は、AEM Formsに存在するセキュリティ証明書を参照する必要があります。 証明書は署名に使用する秘密鍵となります。

Signatureサービスは、PDFドキュメントが署名されるときに次の手順を実行します。

  1. Signatureサービスは、要求で指定されたエイリアスを渡すことで、Truststoreから秘密鍵証明書を取得します。
  2. Truststoreは、指定した秘密鍵証明書を検索します。
  3. 秘密鍵証明書がSignatureサービスに返され、ドキュメントへの署名に使用されます。 証明書は、後で要求を行う場合にエイリアスに対してもキャッシュされます。

セキュリティ証明書の処理について詳しくは、使用しているアプリケーションサーバー版の『* Installing and Deploying Server*』ガイドを参照してください。

メモ

署名ドキュメントと認証ユーザーには違いがあります。 (PDFドキュメントの認証を参照)。

メモ

PDFドキュメントによっては、署名がサポートされていない場合があります。 Signatureサービスとデジタル署名ドキュメントの詳細については、『AEM Forms向けサービスリファレンス』を参照してください。

メモ

Signatureサービスは、ドキュメントの認証など、操作への入力としてPDFデータが埋め込まれたXDPファイルをサポートしません。 この操作により、SignatureサービスはPDFOperationExceptionをスローします。 この問題を解決するには、PDF Utilitiesサービスを使用してXDPファイルをPDFファイルに変換し、変換したPDFファイルをSignatureサービス操作に渡します。 (「PDFユーティリティの操作」を参照)。

nCipher nShield HSM秘密鍵証明書

PDFドキュメントの署名や認証にnCipher nShield HSM秘密鍵証明書を使用する場合、AEM FormsがデプロイされているJ2EEアプリケーションサーバーを再起動するまで、新しい秘密鍵証明書は使用できません。 ただし、設定値を設定すると、J2EEアプリケーションサーバーを再起動しなくても、署名または認証の操作が動作します。

次の設定値をcknfastrcファイルに追加できます。このファイルは/opt/nfast/cknfastrc(またはc:\nfast\cknfastrc)にあります。

 CKNFAST_ASSUME_SINGLE_PROCESS=0

この設定値をcknfastrcファイルに追加すると、J2EEアプリケーションサーバーを再起動しなくても、新しい秘密鍵証明書を使用できます。

署名は信頼されていません

同じPDFドキュメントの認証および署名時に、認証署名が信頼されていない場合、AcrobatまたはAdobe ReaderでPDFドキュメントを開くときに、最初の署名に対して黄色い三角形が表示されます。 この状況を回避するには、認証署名を信頼する必要があります。

XFAベースのフォームである署名ドキュメント

SignatureサービスAPIを使用してXFAベースのフォームに署名しようとすると、AcrobatにあるView Signed Versionにデータがない可能性があります。 例えば、次のワークフローを考えてみましょう。

  • Designerを使用して作成したXDPファイルを使用して、署名フィールドを含むフォームデザインと、フォームデータを含むXMLデータを結合します。 インタラクティブPDFドキュメントを生成するには、Formsサービスを使用します。
  • SignatureサービスAPIを使用してPDFドキュメントに署名します。

手順の概要

PDFドキュメントに電子署名するには、次のタスクを実行します。

  1. プロジェクトファイルを含めます。
  2. Signatureサービスクライアントを作成します。
  3. 署名するPDFドキュメントを取得します。
  4. PDFドキュメントに署名します。
  5. 署名済みPDFドキュメントをPDFファイルとして保存します。

プロジェクトファイルを含める

必要なファイルを開発プロジェクトに含めます。 Javaを使用してクライアントアプリケーションを作成する場合は、必要なJARファイルを含めます。 Webサービスを使用している場合は、プロキシファイルを必ず含めてください。

次のJARファイルをプロジェクトのクラスパスに追加する必要があります。

  • adobe-livecycle-client.jar
  • adobe-usermanager-client.jar
  • adobe-signatures-client.jar
  • adobe-utilities.jar(AEM FormsがJBossにデプロイされている場合に必要)
  • jbossall-client.jar(AEM FormsがJBossにデプロイされている場合に必要)

Signaturesクライアントの作成

プログラムを使用してSignatureサービスの操作を実行する前に、Signatureサービスクライアントを作成する必要があります。

PDFドキュメントに署名を依頼する

PDFドキュメントに署名するには、署名フィールドを含むPDFドキュメントを取得する必要があります。 PDFドキュメントに署名フィールドが含まれていない場合、署名を行うことはできません。 署名フィールドは、Designerを使用して追加することも、プログラムを使用して追加することもできます。

PDFドキュメントへの署名

PDFドキュメントに署名する場合、Signatureサービスで使用する実行時オプションを設定できます。 以下のオプションを設定できます。

  • 外観オプション
  • 失効確認
  • タイムスタンプ値

PDFSignatureAppearanceOptionSpecオブジェクトを使用して外観のオプションを設定します。 例えば、PDFSignatureAppearanceOptionSpecオブジェクトのsetShowDateメソッドを呼び出してtrueを渡すことで、署名内に日付を表示できます。

PDFドキュメントのデジタル署名に使用される証明書が失効したかどうかを判定する失効確認を実行するかどうかを指定することもできます。 失効確認を実行するには、次のいずれかの値を指定します。

  • NoCheck:失効確認を実行しません。
  • BestEffort:常に、チェーン内のすべての証明書の失効を確認しようとします。チェックで何らかの問題が発生した場合、失効は有効であると見なされます。 エラーが発生した場合は、証明書が失効していないと想定します。
  • CheckIfAvailable:失効情報が利用可能な場合に、チェーン内のすべての証明書の失効を 確認します。チェックで問題が発生した場合、失効は無効であると見なされます。 エラーが発生した場合は、証明書が失効し、無効であると仮定します。 (これがデフォルト値です)。
  • AlwaysCheck:チェーン内のすべての証明書の失効を確認します。どの証明書にも失効情報が存在しない場合、失効は無効であると見なされます。

証明書に対して失効確認を実行するには、CRLOptionSpecオブジェクトを使用して、証明書失効リスト(CRL)サーバーへのURLを指定します。 ただし、失効確認を実行する場合で、CRLサーバーへのURLを指定しない場合は、Signatureサービスは証明書からURLを取得します。

失効確認を実行する際は、CRLサーバーを使用する代わりに、オンライン証明書ステータスプロトコル(OCSP)サーバーを使用できます。 通常、CRLサーバーとは異なり、OCSPサーバーを使用する場合は、失効確認の実行が高速になります。 (https://tools.ietf.org/html/rfc2560の「Online Certificate Status Protocol」を参照)。

SignatureサービスでAdobeのアプリケーションおよびサービスを使用するCRLおよびOCSPサーバーの順序を設定できます。 例えば、「Adobeアプリケーションおよびサービス」でOCSPサーバーを最初に設定した場合、OCSPサーバーを確認し、次にCRLサーバーを確認します。 (AACヘルプの「Trust Storeを使用した証明書と秘密鍵証明書の管理」を参照)。

失効確認を実行しないように指定した場合、Signatureサービスは、ドキュメントの署名または認証に使用された証明書が失効したかどうかを確認しません。 つまり、CRLおよびOCSPサーバー情報は無視されます。

メモ

証明書にはCRLまたはOCSPサーバーが指定されている場合がありますが、CRLOptionSpecおよびOCSPOptionSpecオブジェクトを使用して、証明書で指定されているURLを上書きできます。 例えば、CRLサーバーを上書きするには、CRLOptionSpecオブジェクトのsetLocalURIメソッドを呼び出します。

タイムスタンプとは、署名済みまたは認証済みのドキュメントが変更された時間を追跡するプロセスを指します。 ドキュメントの署名後は、ドキュメントの所有者によっても、署名を変更しないでください。 タイムスタンプ機能を使用すると、署名済みまたは認証済みのドキュメントの有効性を強化できます。 TSPOptionSpecオブジェクトを使用して、タイムスタンプオプションを設定できます。 例えば、タイムスタンププロバイダー(TSP)サーバーのURLを指定できます。

メモ

JavaおよびWebサービスのセクションや対応するクイック開始のウォークスルーでは、失効確認が使用されます。 CRLまたはOCSPサーバー情報が指定されていないので、サーバー情報は、PDFドキュメントのデジタル署名に使用される証明書から取得されます。

PDFドキュメントに正しく署名するには、form1[0].#subform[1].SignatureField3[3]など、電子署名を含む署名フィールドの完全修飾名を指定します。 XFAフォームフィールドを使用する場合は、署名フィールドの名前の一部を使用することもできます。SignatureField3[3].

また、PDFドキュメントに電子署名するためのセキュリティ証明書を参照する必要もあります。 セキュリティ証明書を参照するには、エイリアスを指定します。 エイリアスは、PKCS#12ファイル(拡張子.pfx付き)またはハードウェアセキュリティモジュール(HSM)内の実際の秘密鍵証明書への参照です。 セキュリティ証明書について詳しくは、ご使用のアプリケーションサーバー版の『AEM Forms*のインストールとデプロイ』ガイドを参照してください。

署名済みPDFドキュメントの保存

SignatureサービスがPDFドキュメントに電子署名した後、その画像をPDFファイルとして保存して、ユーザーがAcrobatまたはAdobe Readerで開けるようにすることができます。

関連トピック

Java APIを使用したPDFドキュメントへのデジタル署名

WebサービスAPIを使用したPDFドキュメントへのデジタル署名

AEM Forms Java ライブラリファイルを含める

接続プロパティの設定

署名フィールドの追加

署名フィールド名の取得

Java APIを使用したPDFドキュメントへのデジタル署名

署名API(Java)を使用してPDFドキュメントに電子署名する:

  1. プロジェクトファイルを含める

    Javaプロジェクトのクラスパスに、adobe-signatures-client.jarなどのクライアントJARファイルを含めます。

  2. Signaturesクライアントの作成

    • 接続プロパティを含む ServiceClientFactory オブジェクトを作成します。
    • コンストラクタを使用して SignatureServiceClient オブジェクトを渡すことによって、ServiceClientFactory オブジェクトを作成します。
  3. PDFドキュメントに署名を依頼する

    • コンストラクターを使用し、PDFドキュメントの場所を指定する文字列値を渡して、デジタル署名するPDFドキュメントを表すjava.io.FileInputStreamオブジェクトを作成します。
    • コンストラクタを使用して com.adobe.idp.Document オブジェクトを渡すことによって、java.io.FileInputStream オブジェクトを作成します。
  4. PDFドキュメントへの署名

    SignatureServiceClientオブジェクトのsignメソッドを呼び出し、次の値を渡して、PDFドキュメントに署名します。

    • 署名するPDFドキュメントを表すcom.adobe.idp.Documentオブジェクトです。
    • 電子署名を含む署名フィールドの名前を表すstring値です。
    • PDFドキュメントのデジタル署名に使用される秘密鍵証明書を表すCredentialオブジェクトです。 Credentialオブジェクトの静的なgetInstanceメソッドを呼び出し、セキュリティ証明書に対応するエイリアス値を指定する文字列値を渡して、Credentialオブジェクトを作成します。
    • PDFドキュメントのダイジェストの作成に使用するハッシュアルゴリズムを表す静的データメンバーを指定するHashAlgorithmオブジェクトです。 例えば、HashAlgorithm.SHA1にSHA1アルゴリズムを使用するよう指定できます。
    • PDFドキュメントがデジタル署名された理由を表すstring値です。
    • 署名者の連絡先情報を表すstring値です。
    • 電子署名の外観を制御するPDFSignatureAppearanceOptionsオブジェクトです。 例えば、このオブジェクトを使用して、電子署名にカスタムロゴを追加できます。
    • 署名者の証明書に対して失効確認を実行するかどうかを指定するjava.lang.Booleanオブジェクトです。
    • オンライン証明書ステータスプロトコル(OCSP)サポートの環境設定を格納するOCSPOptionSpecオブジェクトです。 失効確認が実行されない場合、このパラメーターは使用されず、nullを指定できます。
    • 証明書失効リスト(CRL)の環境設定を格納するCRLPreferencesオブジェクトです。 失効確認が実行されない場合、このパラメーターは使用されず、nullを指定できます。
    • タイムスタンププロバイダー(TSP)サポートの環境設定を格納するTSPPreferencesオブジェクトです。 このパラメーターはオプションで、nullにすることができます。 詳しくは、AEM FormsAPIリファレンスを参照してください。

    signメソッドは、署名済みPDFドキュメントを表すcom.adobe.idp.Documentオブジェクトを返します。

  5. 署名済みPDFドキュメントの保存

    • java.io.File オブジェクトを作成し、ファイル拡張子が .pdf であることを確認します。
    • com.adobe.idp.DocumentオブジェクトのcopyToFileメソッドを呼び出し、java.io.Fileを渡してDocumentオブジェクトの内容をファイルにコピーします。 com.adobe.idp.Document メソッドから返された sign オブジェクトを必ず使用してください。

関連トピック

PDFドキュメントへのデジタル署名

クイック開始(SOAPモード):Java APIを使用したPDFドキュメントへのデジタル署名

AEM Forms Java ライブラリファイルを含める

接続プロパティの設定

WebサービスAPIを使用したPDFドキュメントへのデジタル署名

Signature API(Webサービス)を使用してPDFドキュメントに電子署名するには:

  1. プロジェクトファイルを含める

    MTOMを使用するMicrosoft .NETプロジェクトを作成します。 次のWSDL定義を使用していることを確認します。http://localhost:8080/soap/services/SignatureService?WSDL&lc_version=9.0.1.

    メモ

    localhostを、AEM FormsをホストするサーバーのIPアドレスに置き換えます。

  2. Signaturesクライアントの作成

    • SignatureServiceClientオブジェクトを作成するには、そのデフォルトのコンストラクタを使用します。

    • System.ServiceModel.EndpointAddressコンストラクターを使用してSignatureServiceClient.Endpoint.Addressオブジェクトを作成します。 WSDLをAEM Formsサービスに指定するstring値を渡します(例:http://localhost:8080/soap/services/SignatureService?WSDL)。 lc_version属性を使用する必要はありません。 この属性は、サービス参照を作成する場合に使用されます)。

    • SignatureServiceClient.Endpoint.Bindingフィールドの値を取得してSystem.ServiceModel.BasicHttpBindingオブジェクトを作成します。 戻り値を BasicHttpBinding にキャストします。

    • System.ServiceModel.BasicHttpBindingオブジェクトのMessageEncodingフィールドをWSMessageEncoding.Mtomに設定します。 この値により、MTOMが使用されます。

    • 次のタスクを実行して、基本的なHTTP認証を有効にします。

      • AEM formsユーザー名をフィールドSignatureServiceClient.ClientCredentials.UserName.UserNameに割り当てます。
      • 対応するパスワード値をフィールドSignatureServiceClient.ClientCredentials.UserName.Passwordに割り当てます。
      • 定数値HttpClientCredentialType.BasicをフィールドBasicHttpBindingSecurity.Transport.ClientCredentialTypeに割り当てます。
      • 定数値BasicHttpSecurityMode.TransportCredentialOnlyをフィールドBasicHttpBindingSecurity.Security.Modeに割り当てます。
  3. PDFドキュメントに署名を依頼する

    • コンストラクタを使用して BLOB オブジェクトを作成します。BLOBオブジェクトは、署名されたPDFドキュメントの保存に使用されます。
    • コンストラクターを呼び出し、署名するPDFドキュメントのファイルの場所とファイルを開くモードを表すstring値を渡して、System.IO.FileStreamオブジェクトを作成します。
    • System.IO.FileStreamオブジェクトの内容を格納するバイト配列を作成します。 System.IO.FileStreamオブジェクトのLengthプロパティを取得して、バイト配列のサイズを決定できます。
    • System.IO.FileStreamオブジェクトのReadメソッドを呼び出し、読み取るバイト配列、開始位置、ストリーム長を渡すことで、バイト配列にストリームデータを入力します。
    • BLOBオブジェクトに、MTOMプロパティにバイト配列の内容を割り当てて入力します。
  4. PDFドキュメントへの署名

    SignatureServiceClientオブジェクトのsignメソッドを呼び出し、次の値を渡して、PDFドキュメントに署名します。

    • 署名するPDFドキュメントを表すBLOBオブジェクトです。
    • 電子署名を含む署名フィールドの名前を表すstring値です。
    • PDFドキュメントのデジタル署名に使用される秘密鍵証明書を表すCredentialオブジェクトです。 Credentialオブジェクトを作成するには、コンストラクターを使用します。また、Credentialオブジェクトのaliasプロパティに値を割り当ててエイリアスを指定します。
    • PDFドキュメントのダイジェストの作成に使用するハッシュアルゴリズムを表す静的データメンバーを指定するHashAlgorithmオブジェクトです。 例えば、HashAlgorithm.SHA1にSHA1アルゴリズムを使用するよう指定できます。
    • ハッシュアルゴリズムを使用するかどうかを指定するBoolean値です。
    • PDFドキュメントがデジタル署名された理由を表すstring値です。
    • 署名者の場所を表すstring値です。
    • 署名者の連絡先情報を表すstring値です。
    • 電子署名の外観を制御するPDFSignatureAppearanceOptionsオブジェクトです。 例えば、このオブジェクトを使用して、電子署名にカスタムロゴを追加できます。
    • 署名者の証明書に対して失効確認を実行するかどうかを指定するSystem.Booleanオブジェクトです。 この失効確認が行われると、署名に埋め込まれます。 デフォルトは、false です。
    • オンライン証明書ステータスプロトコル(OCSP)サポートの環境設定を格納するOCSPOptionSpecオブジェクトです。 失効確認が実行されない場合、このパラメーターは使用されず、nullを指定できます。 このオブジェクトについて詳しくは、AEM FormsAPIリファレンスを参照してください。
    • 証明書失効リスト(CRL)の環境設定を格納するCRLPreferencesオブジェクトです。 失効確認が実行されない場合、このパラメーターは使用されず、nullを指定できます。
    • タイムスタンププロバイダー(TSP)サポートの環境設定を格納するTSPPreferencesオブジェクトです。 このパラメーターはオプションで、nullにすることができます。

    signメソッドは、署名済みPDFドキュメントを表すBLOBオブジェクトを返します。

  5. 署名済みPDFドキュメントの保存

    • コンストラクターを呼び出して、System.IO.FileStreamオブジェクトを作成します。 署名済みPDFドキュメントーのファイルの場所とファイルを開くモードを表すstring値を渡します。
    • signメソッドから返されたBLOBオブジェクトの内容を格納するバイト配列を作成します。 BLOBオブジェクトのMTOMデータメンバの値を取得して、バイト配列を入力します。
    • コンストラクターを呼び出してSystem.IO.FileStreamオブジェクトを渡し、System.IO.BinaryWriterオブジェクトを作成します。
    • System.IO.BinaryWriterオブジェクトのWriteメソッドを呼び出し、バイト配列を渡すことで、バイト配列の内容をPDFファイルに書き込みます。

関連トピック

PDFドキュメントへのデジタル署名

MTOMを使用したAEM Formsの呼び出し

SwaRefを使用したAEM Formsの呼び出し

デジタル署名インタラクティブForms

Formsサービスが作成するインタラクティブフォームに署名できます。 例えば、次のワークフローを考えてみましょう。

  • Designerを使用して作成されたXFAベースのPDFフォームと、Formsサービスを使用してXMLドキュメント内のフォームデータを結合します。 Formsサーバーはインタラクティブフォームをレンダリングします。
  • インタラクティブフォームにはSignatureサービスAPIを使用して署名します。

この結果、デジタル署名されたインタラクティブPDFフォームが生成されます。 XFAフォームに基づくPDFフォームに署名する場合は、PDFファイルをAdobeスタティックPDFフォームとして保存する必要があります。 AdobeダイナミックPDFフォームとして保存されたPDFフォームに署名しようとすると、例外が発生します。 Formsサービスから返されるフォームに署名するので、フォームに署名フィールドが含まれていることを確認してください。

メモ

インタラクティブフォームに電子署名する前に、証明書をAEM Formsに追加しておく必要があります。 証明書は、管理コンソールを使用して、またはTrust Manager APIをプログラムで使用して追加します。 (「Trust Manager APIを使用した秘密鍵証明書の読み込み」を参照)。

FormsサービスAPIを使用する場合は、GenerateServerAppearanceランタイムオプションをtrueに設定します。 この実行時オプションを使用すると、サーバーで生成されたフォームの外観を、AcrobatまたはAdobe Readerで開いたときにも有効なままにすることができます。 FormsAPIを使用して署名するインタラクティブフォームを生成する場合は、このランタイムオプションを設定することをお勧めします。

メモ

「デジタル署名のインタラクティブForms」を読む前に、PDFドキュメントの署名について理解しておくことをお勧めします。 (「PDFドキュメントのデジタル署名」を参照)。

手順の概要

Formsサービスが返すインタラクティブフォームに電子署名するには、次のタスクを実行します。

  1. プロジェクトファイルを含めます。
  2. Formsおよび署名クライアントを作成します。
  3. Formsサービスを使用してインタラクティブフォームを取得します。
  4. インタラクティブフォームに署名します。
  5. 署名済みPDFドキュメントをPDFファイルとして保存します。

プロジェクトファイルを含める

必要なファイルを開発プロジェクトに含めます。 Javaを使用してクライアントアプリケーションを作成する場合は、必要なJARファイルを含めます。 Webサービスを使用している場合は、プロキシファイルを必ず含めてください。

次のJARファイルをプロジェクトのクラスパスに追加する必要があります。

  • adobe-livecycle-client.jar
  • adobe-usermanager-client.jar
  • adobe-signatures-client.jar
  • adobe-forms-client.jar
  • adobe-utilities.jar(AEM FormsがJBossにデプロイされている場合に必要)
  • jbossall-client.jar(AEM FormsがJBossにデプロイされている場合に必要)

これらのJARファイルの場所について詳しくは、「AEM FormsJavaライブラリファイルを含める」を参照してください。

Formsおよび署名クライアントの作成

このワークフローは、FormsサービスとSignatureサービスの両方を呼び出すので、FormsサービスクライアントとSignatureサービスクライアントの両方を作成します。

Formsサービスを使用してインタラクティブフォームを取得する

Formsサービスを使用して、署名するインタラクティブPDFフォームを取得できます。 AEM Forms時点では、レンダリングするフォームを含むFormsサービスにcom.adobe.idp.Documentオブジェクトを渡すことができます。 このメソッドの名前はrenderPDFForm2です。 このメソッドは、署名するフォームを含むcom.adobe.idp.Documentオブジェクトを返します。 このcom.adobe.idp.DocumentインスタンスをSignatureサービスに渡すことができます。

同様に、Webサービスを使用している場合は、Formsサービスが返すBLOBインスタンスをSignatureサービスに渡すことができます。

メモ

[デジタル署名のインタラクティブなForms]セクションに関連付けられたクイック開始は、renderPDFForm2メソッドを呼び出します。

インタラクティブフォームに署名する

PDFドキュメントに署名する場合、Signatureサービスで使用する実行時オプションを設定できます。 以下のオプションを設定できます。

  • 外観オプション
  • 失効確認
  • タイムスタンプ値

PDFSignatureAppearanceOptionSpecオブジェクトを使用して外観のオプションを設定します。 例えば、PDFSignatureAppearanceOptionSpecオブジェクトのsetShowDateメソッドを呼び出してtrueを渡すことで、署名内に日付を表示できます。

署名済みPDFドキュメントの保存

SignatureサービスがPDFドキュメントに電子署名した後、その画像をPDFファイルとして保存できます。 PDFファイルは、AcrobatまたはAdobe Readerで開くことができます。

関連トピック

Java APIを使用したインタラクティブフォームへの電子署名

WebサービスAPIを使用したインタラクティブフォームへの電子署名

AEM Forms Java ライブラリファイルを含める

接続プロパティの設定

PDFドキュメントへのデジタル署名

インタラクティブPDF formsのレンダリング

Java APIを使用したインタラクティブフォームへのデジタル署名

Formsおよび署名API(Java)を使用して、インタラクティブフォームに電子署名する:

  1. プロジェクトファイルを含める

    Javaプロジェクトのクラスパスに、adobe-signatures-client.jarやadobe-forms-client.jarなどのクライアントJARファイルを含めます。

  2. Formsおよび署名クライアントの作成

    • 接続プロパティを含む ServiceClientFactory オブジェクトを作成します。
    • コンストラクタを使用して SignatureServiceClient オブジェクトを渡すことによって、ServiceClientFactory オブジェクトを作成します。
    • コンストラクタを使用して FormsServiceClient オブジェクトを渡すことによって、ServiceClientFactory オブジェクトを作成します。
  3. Formsサービスを使用してインタラクティブフォームを取得する

    • コンストラクターを使用して、Formsサービスに渡すPDFドキュメントを表すjava.io.FileInputStreamオブジェクトを作成します。 PDFドキュメントの場所を指定するstring値を渡します。

    • コンストラクタを使用して com.adobe.idp.Document オブジェクトを渡すことによって、java.io.FileInputStream オブジェクトを作成します。

    • コンストラクターを使用して、Formsサービスに渡すフォームデータを含むXMLドキュメントを表すjava.io.FileInputStreamオブジェクトを作成します。 XMLファイルの場所を指定するstring値を渡します。

    • コンストラクタを使用して com.adobe.idp.Document オブジェクトを渡すことによって、java.io.FileInputStream オブジェクトを作成します。

    • 実行時オプションの設定に使用するPDFFormRenderSpecオブジェクトを作成します。 PDFFormRenderSpecオブジェクトのsetGenerateServerAppearanceメソッドを呼び出し、trueを渡します。

    • FormsServiceClientオブジェクトのrenderPDFForm2メソッドを呼び出し、次の値を渡します。

      • レンダリングするPDFフォームを含むcom.adobe.idp.Documentオブジェクト。
      • フォームとマージするデータを含むcom.adobe.idp.Documentオブジェクト。
      • 実行時オプションを格納するPDFFormRenderSpecオブジェクト。
      • Formsサービスに必要なURI値を含むURLSpecオブジェクト。 このパラメーター値にはnullを指定できます。
      • 添付ファイルを格納するjava.util.HashMapオブジェクト。 これはオプションのパラメーターです。フォームにファイルを添付しない場合は、nullを指定できます。

      renderPDFForm2メソッドは、フォームデータストリームを含むFormsResultオブジェクトを返します

    • FormsResultオブジェクトのgetOutputContentメソッドを呼び出して、PDFフォームを取得します。 このメソッドは、インタラクティブフォームを表すcom.adobe.idp.Documentオブジェクトを返します。

  4. インタラクティブフォームに署名する

    SignatureServiceClientオブジェクトのsignメソッドを呼び出し、次の値を渡して、PDFドキュメントに署名します。

    • 署名するPDFドキュメントを表すcom.adobe.idp.Documentオブジェクトです。 このオブジェクトが、Formsサービスから取得したcom.adobe.idp.Documentオブジェクトであることを確認します。
    • 署名された署名フィールドの名前を表すstring値です。
    • PDFドキュメントのデジタル署名に使用される秘密鍵証明書を表すCredentialオブジェクトです。 Credentialオブジェクトの静的getInstanceメソッドを呼び出して、Credentialオブジェクトを作成します。 セキュリティ秘密鍵証明書に対応するエイリアス値を指定するstring値を渡します。
    • PDFドキュメントのダイジェストの作成に使用するハッシュアルゴリズムを表す静的データメンバーを指定するHashAlgorithmオブジェクトです。 例えば、HashAlgorithm.SHA1にSHA1アルゴリズムを使用するよう指定できます。
    • PDFドキュメントがデジタル署名された理由を表すstring値です。
    • 署名者の連絡先情報を表すstring値です。
    • 電子署名の外観を制御するPDFSignatureAppearanceOptionsオブジェクトです。 例えば、このオブジェクトを使用して、電子署名にカスタムロゴを追加できます。
    • 署名者の証明書に対して失効確認を実行するかどうかを指定するjava.lang.Booleanオブジェクトです。
    • オンライン証明書ステータスプロトコル(OCSP)サポートの環境設定を格納するOCSPPreferencesオブジェクトです。 失効確認が実行されない場合、このパラメーターは使用されず、nullを指定できます。
    • 証明書失効リスト(CRL)の環境設定を格納するCRLPreferencesオブジェクトです。 失効確認が実行されない場合、このパラメーターは使用されず、nullを指定できます。
    • タイムスタンププロバイダー(TSP)サポートの環境設定を格納するTSPPreferencesオブジェクトです。 このパラメーターはオプションで、nullにすることができます。

    signメソッドは、署名済みPDFドキュメントを表すcom.adobe.idp.Documentオブジェクトを返します。

  5. 署名済みPDFドキュメントの保存

    • java.io.Fileオブジェクトを作成し、ファイル名の拡張子が.pdfであることを確認します。
    • com.adobe.idp.DocumentオブジェクトのcopyToFileメソッドを呼び出し、java.io.Fileを渡してDocumentオブジェクトの内容をファイルにコピーします。 signメソッドが返したcom.adobe.idp.Documentオブジェクトを使用していることを確認してください。

関連トピック

デジタル署名インタラクティブForms

クイック開始(SOAPモード):Java APIを使用したPDFドキュメントへのデジタル署名

AEM Forms Java ライブラリファイルを含める

接続プロパティの設定

WebサービスAPIを使用してインタラクティブフォームにデジタル署名する

Formsおよび署名API(Webサービス)を使用して、インタラクティブフォームに電子署名する:

  1. プロジェクトファイルを含める

    MTOMを使用するMicrosoft .NETプロジェクトを作成します。 このクライアントアプリケーションは2つのAEM Formsサービスを呼び出すので、2つのサービス参照を作成します。 Signatureサービスに関連付けられたサービス参照には、次のWSDL定義を使用します。http://localhost:8080/soap/services/SignatureService?WSDL&lc_version=9.0.1.

    Formsサービスに関連付けられたサービス参照には、次のWSDL定義を使用します。http://localhost:8080/soap/services/FormsService?WSDL&lc_version=9.0.1.

    BLOBデータ型は両方のサービス参照に共通なので、BLOBデータ型を使用する場合は完全に修飾します。 対応するWebサービスクイック開始では、すべてのBLOBインスタンスが完全修飾されます。

    メモ

    localhostを、AEM FormsをホストするサーバーのIPアドレスに置き換えます。

  2. Formsおよび署名クライアントの作成

    • SignatureServiceClientオブジェクトを作成するには、そのデフォルトのコンストラクタを使用します。

    • System.ServiceModel.EndpointAddressコンストラクターを使用してSignatureServiceClient.Endpoint.Addressオブジェクトを作成します。 WSDLをAEM Formsサービスに指定するstring値を渡します(例:http://localhost:8080/soap/services/SignatureService?WSDL)。 lc_version属性を使用する必要はありません。 この属性は、サービス参照を作成する場合に使用されます)。

    • SignatureServiceClient.Endpoint.Bindingフィールドの値を取得してSystem.ServiceModel.BasicHttpBindingオブジェクトを作成します。 戻り値を BasicHttpBinding にキャストします。

    • System.ServiceModel.BasicHttpBindingオブジェクトのMessageEncodingフィールドをWSMessageEncoding.Mtomに設定します。 この値により、MTOMが使用されます。

    • 次のタスクを実行して、基本的なHTTP認証を有効にします。

      • AEM formsユーザー名をフィールドSignatureServiceClient.ClientCredentials.UserName.UserNameに割り当てます。
      • 対応するパスワード値をフィールドSignatureServiceClient.ClientCredentials.UserName.Passwordに割り当てます。
      • 定数値HttpClientCredentialType.BasicをフィールドBasicHttpBindingSecurity.Transport.ClientCredentialTypeに割り当てます。
    • 定数値BasicHttpSecurityMode.TransportCredentialOnlyをフィールドBasicHttpBindingSecurity.Security.Modeに割り当てます。

    メモ

    Formsサービスクライアントに対して、この手順を繰り返します。

  3. Formsサービスを使用してインタラクティブフォームを取得する

    • コンストラクタを使用して BLOB オブジェクトを作成します。BLOBオブジェクトは、署名されたPDFドキュメントの保存に使用されます。

    • コンストラクターを呼び出し、署名するPDFドキュメントのファイルの場所とファイルを開くモードを表すstring値を渡して、System.IO.FileStreamオブジェクトを作成します。

    • System.IO.FileStreamオブジェクトの内容を格納するバイト配列を作成します。 System.IO.FileStreamオブジェクトのLengthプロパティを取得して、バイト配列のサイズを決定できます。

    • System.IO.FileStreamオブジェクトのReadメソッドを呼び出し、読み取るバイト配列、開始位置、ストリーム長を渡すことで、バイト配列にストリームデータを入力します。

    • BLOBオブジェクトに、MTOMプロパティにバイト配列の内容を割り当てて入力します。

    • コンストラクタを使用して BLOB オブジェクトを作成します。BLOBオブジェクトは、フォームデータの格納に使用されます。

    • コンストラクターを呼び出し、フォームデータを含むXMLファイルのファイル位置、およびファイルを開くモードを表す文字列値を渡して、System.IO.FileStreamオブジェクトを作成します。

    • System.IO.FileStreamオブジェクトの内容を格納するバイト配列を作成します。 System.IO.FileStreamオブジェクトのLengthプロパティを取得して、バイト配列のサイズを決定できます。

    • System.IO.FileStreamオブジェクトのReadメソッドを呼び出し、読み取るバイト配列、開始位置、ストリーム長を渡すことで、バイト配列にストリームデータを入力します。

    • BLOBオブジェクトに、MTOMプロパティにバイト配列の内容を割り当てて入力します。

    • 実行時オプションの設定に使用するPDFFormRenderSpecオブジェクトを作成します。 値truePDFFormRenderSpecオブジェクトのgenerateServerAppearanceフィールドに割り当てます。

    • FormsServiceClientオブジェクトのrenderPDFForm2メソッドを呼び出し、次の値を渡します。

      • レンダリングするPDFフォームを含むBLOBオブジェクト。
      • フォームとマージするデータを含むBLOBオブジェクト。
      • 実行時オプションを格納するPDFFormRenderSpecオブジェクト。
      • Formsサービスに必要なURI値を含むURLSpecオブジェクト。 このパラメーター値にはnullを指定できます。
      • 添付ファイルを格納するjava.util.HashMapオブジェクト。 これはオプションのパラメーターです。フォームにファイルを添付しない場合は、nullを指定できます。
      • フォーム内のページ数を保存するために使用される長い出力パラメーター。
      • ロケール値に使用される文字列出力パラメーターです。
      • インタラクティブフォームの保存に使用される出力パラメーターであるFormResult値。
    • FormsResultオブジェクトのoutputContentフィールドを呼び出して、PDFフォームを取得します。 このフィールドには、インタラクティブフォームを表すBLOBオブジェクトが格納されます。

  4. インタラクティブフォームに署名する

    SignatureServiceClientオブジェクトのsignメソッドを呼び出し、次の値を渡して、PDFドキュメントに署名します。

    • 署名するPDFドキュメントを表すBLOBオブジェクトです。 Formsサービスから返されるBLOBインスタンスを使用します。
    • 署名された署名フィールドの名前を表すstring値です。
    • PDFドキュメントのデジタル署名に使用される秘密鍵証明書を表すCredentialオブジェクトです。 Credentialオブジェクトを作成するには、コンストラクターを使用します。また、Credentialオブジェクトのaliasプロパティに値を割り当ててエイリアスを指定します。
    • PDFドキュメントのダイジェストの作成に使用するハッシュアルゴリズムを表す静的データメンバーを指定するHashAlgorithmオブジェクトです。 例えば、HashAlgorithm.SHA1にSHA1アルゴリズムを使用するよう指定できます。
    • ハッシュアルゴリズムを使用するかどうかを指定するBoolean値です。
    • PDFドキュメントがデジタル署名された理由を表すstring値です。
    • 署名者の場所を表すstring値です。
    • 署名者の連絡先情報を表すstring値です。
    • 電子署名の外観を制御するPDFSignatureAppearanceOptionsオブジェクトです。 例えば、このオブジェクトを使用して、電子署名にカスタムロゴを追加できます。
    • 署名者の証明書に対して失効確認を実行するかどうかを指定するSystem.Booleanオブジェクトです。 この失効確認が行われると、署名に埋め込まれます。 デフォルトは、false です。
    • オンライン証明書ステータスプロトコル(OCSP)サポートの環境設定を格納するOCSPPreferencesオブジェクトです。 失効確認が実行されない場合、このパラメーターは使用されず、nullを指定できます。 このオブジェクトについて詳しくは、AEM FormsAPIリファレンスを参照してください。
    • 証明書失効リスト(CRL)の環境設定を格納するCRLPreferencesオブジェクトです。 失効確認が実行されない場合、このパラメーターは使用されず、nullを指定できます。
    • タイムスタンププロバイダー(TSP)サポートの環境設定を格納するTSPPreferencesオブジェクトです。 このパラメーターはオプションで、nullにすることができます。

    signメソッドは、署名済みPDFドキュメントを表すBLOBオブジェクトを返します。

  5. 署名済みPDFドキュメントの保存

    • コンストラクターを呼び出して、System.IO.FileStreamオブジェクトを作成します。 署名済みPDFドキュメントーのファイルの場所とファイルを開くモードを表すstring値を渡します。
    • signメソッドから返されたBLOBオブジェクトの内容を格納するバイト配列を作成します。 BLOBオブジェクトのMTOMデータメンバの値を取得して、バイト配列を入力します。
    • コンストラクターを呼び出してSystem.IO.FileStreamオブジェクトを渡し、System.IO.BinaryWriterオブジェクトを作成します。
    • System.IO.BinaryWriterオブジェクトのWriteメソッドを呼び出し、バイト配列を渡すことで、バイト配列の内容をPDFファイルに書き込みます。

関連トピック

デジタル署名インタラクティブForms

MTOMを使用したAEM Formsの呼び出し

PDF ドキュメントの認証

認証署名と呼ばれる特定のタイプの署名によって PDF ドキュメントを認証することで、PDF ドキュメントを保護することができます。認証署名は、以下の方法で電子署名と区別されます。

  • 認証署名は PDF ドキュメントに適用される最初の署名です。つまり、認証署名が適用されるときは、ドキュメント内の他の署名フィールドは未署名でなければいけません。認証署名は 1 つの PDF ドキュメントにつき 1 つです。PDF ドキュメントを署名および認証するには、署名の前に認証を行う必要があります。PDF ドキュメントの認証後、他の署名フィールドに電子署名を行うことができます。
  • ドキュメントの作成者または発信者は、認証署名を無効にすることなく、特定の方法でドキュメントの変更が可能になるように指定することができます。例えば、フォームへの入力やコメント入力を許可するドキュメントなどがあります。作成者が特定の変更を許可しないように設定を行った場合は、Acrobat はユーザーのその方法によるドキュメントの変更を制限します。別のアプリケーションを使用するなどしてそのような変更が行われた場合は、認証署名は無効となり、Acrobat はユーザーがドキュメントを開いた際に警告を発します。(未認証の署名では、変更を防ぐことはできません。また、通常の編集操作では元の署名は無効になりません。)
  • 署名時に、ドキュメントのコンテンツにあいまいさや誤解をもたらす可能性のある、特定の種類のコンテンツをスキャンします。例えば、注釈により、認証される対象を把握するために重要なページ上のテキストが隠れてしまう場合があります。そのようなコンテンツに関する、説明(法的証明)を提供することができます。

SignatureサービスJava APIまたはSignature WebサービスAPIを使用して、PDFドキュメントをプログラムで認証できます。 PDFドキュメントを認証する場合は、秘密鍵証明書サービスに存在するセキュリティ秘密鍵証明書を参照する必要があります。 セキュリティ証明書について詳しくは、使用しているアプリケーションサーバー版の『AEM Forms​のインストールおよびデプロイ』ガイドを参照してください。

メモ

同じPDFドキュメントの認証および署名時に、認証署名が信頼されていない場合、AcrobatまたはAdobe ReaderでPDFドキュメントを開くと、最初の署名の横に黄色い三角形が表示されます。 この状況を回避するには、認証署名を信頼する必要があります。

メモ

PDFドキュメントの署名や認証にnCipher nShield HSM秘密鍵証明書を使用する場合、AEM FormsがデプロイされているJ2EEアプリケーションサーバーを再起動するまで、新しい秘密鍵証明書は使用できません。 ただし、設定値を設定すると、J2EEアプリケーションサーバーを再起動しなくても、署名または認証の操作が動作します。

次の設定値をcknfastrcファイルに追加できます。このファイルは/opt/nfast/cknfastrc(またはc:\nfast\cknfastrc)にあります。

             CKNFAST_ASSUME_SINGLE_PROCESS=0

この設定値をcknfastrcファイルに追加すると、J2EEアプリケーションサーバーを再起動しなくても、新しい秘密鍵証明書を使用できます。

メモ

Signatureサービスとドキュメントの認証について詳しくは、『AEM Forms向けサービスリファレンス』を参照してください。

手順の概要

PDFドキュメントを認証するには、次のタスクを実行します。

  1. プロジェクトファイルを含めます。
  2. 署名クライアントを作成します。
  3. 認証するPDFドキュメントを取得します。
  4. PDFドキュメントを認証します。
  5. 認証済みPDFドキュメントをPDFファイルとして保存します。

プロジェクトファイルを含める

必要なファイルを開発プロジェクトに含めます。 Javaを使用してクライアントアプリケーションを作成する場合は、必要なJARファイルを含めます。 Webサービスを使用している場合は、プロキシファイルを必ず含めてください。

次のJARファイルをプロジェクトのクラスパスに追加する必要があります。

  • adobe-livecycle-client.jar
  • adobe-usermanager-client.jar
  • adobe-signatures-client.jar
  • adobe-utilities.jar(AEM FormsがJBossにデプロイされている場合に必要)
  • jbossall-client.jar(AEM FormsがJBossにデプロイされている場合に必要)

これらのJARファイルの場所について詳しくは、「AEM FormsJavaライブラリファイルを含める」を参照してください。

署名クライアントの作成

プログラムによってSignature操作を実行する前に、Signatureクライアントを作成する必要があります。

認証用のPDFドキュメントの取得

PDFドキュメントを認証するには、署名フィールドを含むPDFドキュメントを取得する必要があります。 PDFドキュメントに署名フィールドが含まれていない場合は、認証できません。 署名フィールドは、Designerを使用して追加することも、プログラムを使用して追加することもできます。 プログラムによる署名フィールドの追加について詳しくは、「署名フィールドの追加」を参照してください。

PDFドキュメントの認証

PDFドキュメントを正常に認証するには、SignatureサービスでPDFドキュメントの認証に使用される次の入力値が必要です。

  • PDFドキュメント:署名フィールドを含むPDFドキュメントです。署名フィールドは、認証署名のグラフィック表現を含むフォームフィールドです。PDFドキュメントを認証するには、その前に署名フィールドがPDF署名に含まれている必要があります。 署名フィールドは、Designerを使用して追加することも、プログラムを使用して追加することもできます。 (「署名フィールドの追加」を参照)。
  • 署名フィールド名:認証される署名フィールドの完全修飾名です。次の値は例です。form1[0].#subform[1].SignatureField3[3]. XFAフォームフィールドを使用する場合は、署名フィールドの名前の一部を使用することもできます。SignatureField3[3]. フィールド名にnull値が渡されると、非表示の署名フィールドが動的に作成され、認証されます。
  • セキュリティ証明書:PDFドキュメントの認証に使用する秘密鍵証明書です。このセキュリティ証明書には、パスワードとエイリアスが含まれています。これは、Credentialサービス内の秘密鍵証明書に表示されるエイリアスと一致する必要があります。 エイリアスは、PKCS#12ファイル(拡張子.pfx付き)またはハードウェアセキュリティモジュール(HSM)内の実際の秘密鍵証明書への参照です。
  • ハッシュアルゴリズム:PDFドキュメントのダイジェストの作成に使用するハッシュアルゴリズムです。
  • 署名の理由:PDFドキュメントが認証された理由を他のユーザーが把握できるように、AcrobatまたはAdobe Readerに表示される値です。
  • 署名者の場所:秘密鍵証明書で指定された署名者の場所です。
  • 連絡先情報:署名者の住所や電話番号などの連絡先情報。
  • 権限情報:認証署名を無効にすることなく、エンドユーザーがドキュメントに対して実行できる操作を制御する権限です。例えば、権限を設定して、PDFドキュメントを変更すると認証署名が無効になるようにすることができます。
  • 法的説明:ドキュメントを認証すると、ドキュメントのコンテンツをあいまいにしたり誤解を招く可能性のある、特定のタイプのコンテンツを自動的にスキャンします。例えば、注釈により、認証される対象を把握するために重要なページ上のテキストが隠れてしまう場合があります。スキャン処理では、この種のコンテンツに関する警告が生成されます。 この値は、警告が生成された可能性のあるコンテンツに関する追加の説明を提供します。
  • 外観オプション:認証署名の外観を制御するオプションです。例えば、認証署名には日付情報を表示できます。
  • 失効確認:この値は、署名者の証明書に対して失効確認を行うかどうかを指定します。デフォルト設定のfalseでは、失効確認は実行されません。
  • OCSP settings:PDFドキュメントの認証に使用される秘密鍵証明書のステータスに関する情報を提供する、オンライン証明書ステータスプロトコル(OCSP)サポートの設定です。例えば、PDFドキュメントへのサインオンに使用する秘密鍵証明書に関する情報を提供するサーバーのURLを指定できます。
  • CRL settings:失効確認が行われた場合の証明書失効リスト(CRL)の環境設定です。例えば、秘密鍵証明書が失効したかどうかを常に確認するように指定できます。
  • タイムスタンプ:認証署名に適用されるタイムスタンプ情報を定義する設定です。タイムスタンプは、特定のデータが特定の時間の前に確立されたことを示します。 この情報は、署名者と検証者の間に信頼関係を構築するのに役立ちます。

認証済みPDFドキュメントをPDFファイルとして保存する

SignatureサービスがPDFドキュメントを認証した後、その画像をPDFファイルとして保存し、ユーザーがAcrobatまたはAdobe Readerで開けるようにできます。

関連トピック

Java APIを使用したPDFドキュメントの認証

WebサービスAPIを使用したPDFドキュメントの認証

AEM Forms Java ライブラリファイルを含める

接続プロパティの設定

署名フィールドの追加

Java APIを使用してPDFドキュメントを認証する

Signature API(Java)を使用してPDFドキュメントを認証します。

  1. プロジェクトファイルを含める

    Javaプロジェクトのクラスパスに、adobe-signatures-client.jarなどのクライアントJARファイルを含めます。

  2. 署名クライアントの作成

    • 接続プロパティを含む ServiceClientFactory オブジェクトを作成します。
    • コンストラクタを使用して SignatureServiceClient オブジェクトを渡すことによって、ServiceClientFactory オブジェクトを作成します。
  3. 認証用のPDFドキュメントの取得

    • コンストラクターを使用し、PDFドキュメントの場所を指定するstring値を渡して、認証するPDFドキュメントを表すjava.io.FileInputStreamオブジェクトを作成します。
    • コンストラクタを使用して com.adobe.idp.Document オブジェクトを渡すことによって、java.io.FileInputStream オブジェクトを作成します。
  4. PDFドキュメントの認証

    SignatureServiceClientオブジェクトのcertifyメソッドを呼び出し、次の値を渡して、PDFドキュメントを認証します。

    • 認証するPDFドキュメントを表すcom.adobe.idp.Documentオブジェクトです。
    • 署名を含む署名フィールドの名前を表すstring値です。
    • PDFドキュメントの認証に使用される秘密鍵証明書を表すCredentialオブジェクトです。 Credentialオブジェクトの静的なgetInstanceメソッドを呼び出し、セキュリティ証明書に対応するエイリアス値を指定する文字列値を渡して、Credentialオブジェクトを作成します。
    • PDFドキュメントのダイジェストの作成に使用されるハッシュアルゴリズムを表す静的データメンバーを指定するHashAlgorithmオブジェクトです。 例えば、HashAlgorithm.SHA1にSHA1アルゴリズムを使用するよう指定できます。
    • PDFドキュメントが認証された理由を表すstring値です。
    • 署名者の連絡先情報を表すstring値です。
    • 署名を無効にするPDFドキュメントで実行できるアクションを指定するMDPPermissionsオブジェクトです。
    • 認証署名の外観を制御するPDFSignatureAppearanceOptionsオブジェクトです。 必要に応じて、setShowDateなどのメソッドを呼び出して、署名の外観を変更します。
    • 署名を無効にするアクションについての説明を提供するstring値です。
    • 署名者の証明書に対して失効確認を実行するかどうかを指定するjava.lang.Booleanオブジェクトです。 この失効確認が行われると、署名に埋め込まれます。 デフォルトは、false です。
    • 認証する署名フィールドがロックされているかどうかを指定するjava.lang.Booleanオブジェクトです。 フィールドをロックすると、署名フィールドは読み取り専用としてマークされ、プロパティを変更できなくなり、必要な権限を持たないユーザーはこのフィールドをクリアできなくなります。 デフォルトは、false です。
    • オンライン証明書ステータスプロトコル(OCSP)サポートの環境設定を格納するOCSPPreferencesオブジェクトです。 失効確認が実行されない場合、このパラメーターは使用されず、nullを指定できます。 このオブジェクトについて詳しくは、「AEM FormsAPIリファレンス」を参照してください。
    • 証明書失効リスト(CRL)の環境設定を格納するCRLPreferencesオブジェクトです。 失効確認が実行されない場合、このパラメーターは使用されず、nullを指定できます。
    • タイムスタンププロバイダー(TSP)サポートの環境設定を格納するTSPPreferencesオブジェクトです。 例えば、TSPPreferencesオブジェクトを作成した後、TSPPreferencesオブジェクトのsetTspServerURLメソッドを呼び出して、TSPサーバーのURLを設定できます。 このパラメーターはオプションで、nullにすることができます。 詳しくは、『AEM Formsサービスリファレンス』を参照してください。

    certifyメソッドは、認証済みPDFドキュメントを表すcom.adobe.idp.Documentオブジェクトを返します。

  5. 認証済みPDFドキュメントをPDFファイルとして保存する

    • java.io.File オブジェクトを作成し、ファイル拡張子が .pdf であることを確認します。
    • com.adobe.idp.DocumentオブジェクトのcopyToFileメソッドを呼び出して、com.adobe.idp.Documentオブジェクトの内容をファイルにコピーします。

関連トピック

PDF ドキュメントの認証

クイック開始(SOAPモード):Java APIを使用したPDFドキュメントの認証

AEM Forms Java ライブラリファイルを含める

接続プロパティの設定

WebサービスAPIを使用してPDFドキュメントを認証する

Signature API(Webサービス)を使用してPDFドキュメントを認証します。

  1. プロジェクトファイルを含める

    MTOMを使用するMicrosoft .NETプロジェクトを作成します。 次のWSDL定義を使用していることを確認します。http://localhost:8080/soap/services/SignatureService?WSDL&lc_version=9.0.1.

    メモ

    localhostを、AEM FormsをホストするサーバーのIPアドレスに置き換えます。

  2. 署名クライアントの作成

    • SignatureServiceClientオブジェクトを作成するには、そのデフォルトのコンストラクタを使用します。

    • System.ServiceModel.EndpointAddressコンストラクターを使用してSignatureServiceClient.Endpoint.Addressオブジェクトを作成します。 WSDLをAEM Formsサービスに指定するstring値を渡します(例:http://localhost:8080/soap/services/SignatureService?WSDL)。 lc_version属性を使用する必要はありません。 この属性は、サービス参照を作成する場合に使用されます)。

    • SignatureServiceClient.Endpoint.Bindingフィールドの値を取得してSystem.ServiceModel.BasicHttpBindingオブジェクトを作成します。 戻り値を BasicHttpBinding にキャストします。

    • System.ServiceModel.BasicHttpBindingオブジェクトのMessageEncodingフィールドをWSMessageEncoding.Mtomに設定します。 この値により、MTOMが使用されます。

    • 次のタスクを実行して、基本的なHTTP認証を有効にします。

      • AEM formsユーザー名をフィールドSignatureServiceClient.ClientCredentials.UserName.UserNameに割り当てます。
      • 対応するパスワード値をフィールドSignatureServiceClient.ClientCredentials.UserName.Passwordに割り当てます。
      • 定数値HttpClientCredentialType.BasicをフィールドBasicHttpBindingSecurity.Transport.ClientCredentialTypeに割り当てます。
      • 定数値BasicHttpSecurityMode.TransportCredentialOnlyをフィールドBasicHttpBindingSecurity.Security.Modeに割り当てます。
  3. 認証用のPDFドキュメントの取得

    • コンストラクタを使用して BLOB オブジェクトを作成します。BLOBオブジェクトは、認証済みのPDFドキュメントを保存するために使用します。
    • コンストラクターを呼び出し、認証するPDFドキュメントのファイルの場所とファイルを開くモードを表すstring値を渡して、System.IO.FileStreamオブジェクトを作成します。
    • System.IO.FileStreamオブジェクトの内容を格納するバイト配列を作成します。 System.IO.FileStreamオブジェクトのLengthプロパティを取得して、バイト配列のサイズを決定できます。
    • System.IO.FileStreamオブジェクトのReadメソッドを呼び出し、読み取るバイト配列、開始位置、ストリーム長を渡すことで、バイト配列にストリームデータを入力します。
    • BLOBオブジェクトに、MTOMデータメンバにバイト配列の内容を割り当てて、<a0/>オブジェクトを入力します。
  4. PDFドキュメントの認証

    SignatureServiceClientオブジェクトのcertifyメソッドを呼び出し、次の値を渡して、PDFドキュメントを認証します。

    • 認証するPDFドキュメントを表すBLOBオブジェクトです。
    • 署名を含む署名フィールドの名前を表すstring値です。
    • PDFドキュメントの認証に使用される秘密鍵証明書を表すCredentialオブジェクトです。 Credentialオブジェクトを作成するには、コンストラクターを使用します。エイリアスを指定するには、Credentialオブジェクトのaliasプロパティに値を割り当てます。
    • PDFドキュメントのダイジェストの作成に使用されるハッシュアルゴリズムを表す静的データメンバーを指定するHashAlgorithmオブジェクトです。 例えば、HashAlgorithm.SHA1にSHA1アルゴリズムを使用するよう指定できます。
    • ハッシュアルゴリズムを使用するかどうかを指定するBoolean値です。
    • PDFドキュメントが認証された理由を表すstring値です。
    • 署名者の場所を表すstring値です。
    • 署名者の連絡先情報を表すstring値です。
    • 署名を無効にするPDFドキュメントで実行できるアクションを指定するMDPPermissionsオブジェクトの静的データメンバーです。
    • 前のパラメーター値として渡されたMDPPermissionsオブジェクトを使用するかどうかを指定するBoolean値。
    • 署名を無効にするアクションを説明するstring値です。
    • 認証署名の外観を制御するPDFSignatureAppearanceOptionsオブジェクトです。 コンストラクタを使用して PDFSignatureAppearanceOptions オブジェクトを作成します。データメンバーの1つを設定して、署名の外観を変更できます。
    • 署名者の証明書に対して失効確認を実行するかどうかを指定するSystem.Booleanオブジェクトです。 この失効確認が行われると、署名に埋め込まれます。 デフォルトは、false です。
    • 認証する署名フィールドがロックされているかどうかを指定するSystem.Booleanオブジェクトです。 フィールドをロックすると、署名フィールドは読み取り専用としてマークされ、プロパティを変更できなくなり、必要な権限を持たないユーザーはこのフィールドをクリアできなくなります。 デフォルトは、false です。
    • 署名フィールドをロックするかどうかを指定するSystem.Booleanオブジェクトです。 つまり、前のパラメーターにtrueを渡す場合は、このパラメーターにtrueを渡します。
    • オンライン証明書ステータスプロトコル(OCSP)サポートの環境設定を格納するOCSPPreferencesオブジェクトです。PDFドキュメントの認証に使用される秘密鍵証明書のステータスに関する情報を提供します。 失効確認が実行されない場合、このパラメーターは使用されず、nullを指定できます。
    • 証明書失効リスト(CRL)の環境設定を格納するCRLPreferencesオブジェクトです。 失効確認が実行されない場合、このパラメーターは使用されず、nullを指定できます。
    • タイムスタンププロバイダー(TSP)サポートの環境設定を格納するTSPPreferencesオブジェクトです。 例えば、TSPPreferencesオブジェクトを作成した後、TSPPreferencesオブジェクトのtspServerURLデータメンバーを設定することで、TSPのURLを設定できます。 このパラメーターはオプションで、nullにすることができます。

    certifyメソッドは、認証済みPDFドキュメントを表すBLOBオブジェクトを返します。

  5. 認証済みPDFドキュメントをPDFファイルとして保存する

    • コンストラクターを呼び出し、認証済みのPDFドキュメントーとファイルを開くモードを含むPDFドキュメントーのファイルの場所を表すstring値を渡して、System.IO.FileStreamオブジェクトを作成します。
    • certifyメソッドから返されたBLOBオブジェクトの内容を格納するバイト配列を作成します。 BLOBオブジェクトのbinaryDataデータメンバの値を取得して、バイト配列を入力します。
    • コンストラクターを呼び出してSystem.IO.FileStreamオブジェクトを渡し、System.IO.BinaryWriterオブジェクトを作成します。
    • System.IO.BinaryWriterオブジェクトのWriteメソッドを呼び出し、バイト配列を渡すことで、バイト配列の内容をPDFファイルに書き込みます。

関連トピック

PDF ドキュメントの認証

MTOMを使用したAEM Formsの呼び出し

SwaRefを使用したAEM Formsの呼び出し

デジタル署名の検証

電子署名を検証することで、署名された PDF ドキュメントに変更がなく、電子署名が有効であることを確認することができます。電子署名を検証する際に、署名のステータスや、署名者のIDなどの署名のプロパティを確認できます。 電子署名を信用する前に、検証することをおすすめします。電子署名を検証する際、電子署名を含む PDF ドキュメントを参照します。

署名者のIDが不明であるとします。 AcrobatでPDFドキュメントを開くと、次の図に示すように、署名者のIDが不明であることを示す警告メッセージが表示されます。

vd_vd_verifysig

同様に、プログラムで電子署名を検証する場合、署名者のIDのステータスを判断できます。 例えば、前の図に示すドキュメントで電子署名を検証すると、署名者のIDが不明になります。

メモ

Signatureサービスと電子署名の検証について詳しくは、『AEM Formsのサービスリファレンス』を参照してください。

手順の概要

電子署名を検証するには、次のタスクを実行します。

  1. プロジェクトファイルを含めます。
  2. 署名クライアントを作成します。
  3. 検証する署名が含まれているPDFドキュメントを取得します。
  4. PKIランタイムオプションを設定します。
  5. 電子署名を検証します。
  6. 署名のステータスを決定します。
  7. 署名者のIDを決定します。

プロジェクトファイルを含める

必要なファイルを開発プロジェクトに含めます。 Javaを使用してクライアントアプリケーションを作成する場合は、必要なJARファイルを含めます。 Webサービスを使用している場合は、プロキシファイルを含めます。

次のJARファイルをプロジェクトのクラスパスに追加する必要があります。

  • adobe-livecycle-client.jar
  • adobe-usermanager-client.jar
  • adobe-signatures-client.jar
  • adobe-utilities.jar(AEM FormsがJBossにデプロイされている場合に必要)
  • jbossall-client.jar(AEM FormsがJBossにデプロイされている場合に必要)

これらのJARファイルの場所について詳しくは、「AEM FormsJavaライブラリファイルを含める」を参照してください。

署名クライアントの作成

プログラムを使用してSignatureサービス操作を実行する前に、Signatureサービスクライアントを作成します。

検証する署名が含まれているPDFドキュメントを取得します

PDF署名のデジタル署名や認証に使用されるドキュメントを検証するには、署名が含まれるPDFドキュメントを取得します。

PKIランタイムオプションの設定

PDFドキュメントの署名を検証する際にSignatureサービスで使用する次のPKIランタイムオプションを設定します。

  • 検証時刻
  • 失効確認
  • タイムスタンプ値

これらのオプションの設定の一環として、検証時刻を指定できます。 例えば、現在の時間(バリデーターのコンピューター上の時間)を選択できます。これは現在の時間を使用することを示します。 異なる時間値について詳しくは、AEM FormsAPIリファレンスVerificationTime定義済みリスト値を参照してください。

検証プロセスの一環として失効確認を実行するかどうかを指定することもできます。 例えば、失効確認を実行して、証明書が失効したかどうかを判断できます。 失効確認オプションについて詳しくは、『AEM FormsAPIリファレンス』のRevocationCheckStyle定義済みリスト値を参照してください。

証明書に対して失効確認を実行するには、CRLOptionSpecオブジェクトを使用して、証明書失効リスト(CRL)サーバーへのURLを指定します。 ただし、URLをCRLサーバーに指定しない場合、Signatureサービスは証明書からURLを取得します。

失効確認を実行する際は、CRLサーバーを使用する代わりに、オンライン証明書ステータスプロトコル(OCSP)サーバーを使用できます。 通常、CRLサーバーとは異なるOCSPサーバーを使用する場合、失効確認は高速に実行されます。 (オンライン証明書ステータスプロトコルを参照)。

Signatureサービスで使用するCRLおよびOCSPAdobeの順序は、「Applications and Services」を使用して設定できます。 例えば、「Adobeアプリケーションおよびサービス」でOCSPサーバーを最初に設定した場合、OCSPサーバーを確認し、次にCRLサーバーを確認します。

失効確認を実行しない場合、Signatureサービスでは、証明書が失効したかどうかを確認しません。 つまり、CRLおよびOCSPサーバー情報は無視されます。

メモ

CRLOptionSpecおよびOCSPOptionSpecオブジェクトを使用して、証明書で指定されたURLを上書きできます。 例えば、CRLサーバーを上書きするには、CRLOptionSpecオブジェクトのsetLocalURIメソッドを呼び出します。

タイムスタンプとは、署名済みまたは認証済みのドキュメントが変更された時間を追跡するプロセスです。 ドキュメントに署名した後は、誰もその署名を変更できません。 タイムスタンプ機能を使用すると、署名済みまたは認証済みのドキュメントの有効性を強化できます。 TSPOptionSpecオブジェクトを使用して、タイムスタンプオプションを設定できます。 例えば、タイムスタンププロバイダー(TSP)サーバーのURLを指定できます。

メモ

JavaおよびWebサービスのクイック開始では、検証時刻はVerificationTime.CURRENT_TIMEに、失効確認はRevocationCheckStyle.BestEffortに設定されます。 CRLまたはOCSPサーバー情報が指定されていないので、サーバー情報は証明書から取得されます。

電子署名の検証

署名を正しく検証するには、署名が含まれる署名フィールドの完全修飾名を指定します(例:form1[0].#subform[1].SignatureField3[3])。 XFAフォームフィールドを使用する場合は、署名フィールドの名前の一部を使用することもできます。SignatureField3.

デフォルトでは、Signatureサービスでは、検証後にドキュメントに署名できる時間が65分に制限されます。 ユーザーが現在の時刻に署名を検証しようとしたときに、署名時刻が現在の時刻より後で65分以内になった場合、Signatureサービスでは検証エラーは作成されません。

メモ

署名を検証する際に必要なその他の値については、『AEM FormsAPIリファレンス』を参照してください。

署名のステータスの確認

電子署名の検証中に、署名のステータスを確認できます。

署名者のIDの確認

署名者のIDを特定できます。次の値のいずれかになります。

  • 不明:署名者の検証を実行できないため、署名者が不明です。
  • 信頼済み:この署名者は信頼されています。
  • 信頼できません:この署名者は信頼されていません。

関連トピック

Java APIを使用した電子署名の検証

WebサービスAPIを使用した電子署名の検証

AEM Forms Java ライブラリファイルを含める

接続プロパティの設定

Java APIを使用した電子署名の検証

Signature Service API(Java)を使用して電子署名を検証します。

  1. プロジェクトファイルを含める

    Javaプロジェクトのクラスパスに、adobe-signatures-client.jarなどのクライアントJARファイルを含めます。

  2. 署名クライアントの作成

    • 接続プロパティを含む ServiceClientFactory オブジェクトを作成します。
    • コンストラクタを使用して SignatureServiceClient オブジェクトを渡すことによって、ServiceClientFactory オブジェクトを作成します。
  3. 検証する署名が含まれているPDFドキュメントを取得します

    • 検証する署名が含まれているPDFドキュメントを表すjava.io.FileInputStreamオブジェクトを、コンストラクターを使用して作成します。 PDFドキュメントの場所を指定するstring値を渡します。
    • コンストラクタを使用して com.adobe.idp.Document オブジェクトを渡すことによって、java.io.FileInputStream オブジェクトを作成します。
  4. PKIランタイムオプションの設定

    • コンストラクタを使用して PKIOptions オブジェクトを作成します。
    • PKIOptionsオブジェクトのsetVerificationTimeメソッドを呼び出し、検証時刻を指定するVerificationTime定義済みリスト値を渡して、検証時刻を設定します。
    • PKIOptionsオブジェクトのsetRevocationCheckStyleメソッドを呼び出し、失効確認を実行するかどうかを指定するRevocationCheckStyle定義済みリスト値を渡して、失効確認オプションを設定します。
  5. 電子署名の検証

    SignatureServiceClientオブジェクトのverify2メソッドを呼び出し、次の値を渡して、署名を検証します。

    • デジタル署名された、または認証されたPDFドキュメントを含むcom.adobe.idp.Documentオブジェクトです。
    • 検証する署名が含まれている署名フィールド名を表すstring値です。
    • PKIランタイムオプションを含むPKIOptionsオブジェクト。
    • SPI情報を含むVerifySPIOptionsインスタンスです。 このパラメーターにはnullを指定できます。

    verify2メソッドは、デジタル署名の検証に使用できる情報を含むPDFSignatureVerificationInfoオブジェクトを返します。

  6. 署名のステータスの確認

    • PDFSignatureVerificationInfoオブジェクトのgetStatusメソッドを呼び出して、署名のステータスを判断します。 このメソッドは、署名の状態を指定するSignatureStatusオブジェクトを返します。 例えば、署名済みPDFのドキュメントが変更されていない場合、このメソッドはSignatureStatus.DocumentSigNoChangesを返します。
  7. 署名者のIDの確認

    • PDFSignatureVerificationInfoオブジェクトのgetSignerメソッドを呼び出して、署名者のIDを特定します。 このメソッドは、IdentityInformationオブジェクトを返します。
    • IdentityInformationオブジェクトのgetStatusメソッドを呼び出して、署名者のIDを特定します。 このメソッドは、IDを指定するIdentityStatus定義済みリスト値を返します。 例えば、署名者が信頼できる場合、このメソッドはIdentityStatus.TRUSTEDを返します。

関連トピック

電子署名の検証

クイック開始(SOAPモード):Java APIを使用したデジタル署名の検証

AEM Forms Java ライブラリファイルを含める

接続プロパティの設定

WebサービスAPIを使用した電子署名の検証

Signature Service API(Webサービス)を使用して電子署名を検証します。

  1. プロジェクトファイルを含める

    MTOMを使用するMicrosoft .NETプロジェクトを作成します。 次のWSDL定義を使用していることを確認します。http://localhost:8080/soap/services/SignatureService?WSDL&lc_version=9.0.1.

    メモ

    localhostを、AEM FormsをホストするサーバーのIPアドレスに置き換えます。

  2. 署名クライアントの作成

    • SignatureServiceClientオブジェクトを作成するには、そのデフォルトのコンストラクタを使用します。

    • System.ServiceModel.EndpointAddressコンストラクターを使用してSignatureServiceClient.Endpoint.Addressオブジェクトを作成します。 WSDLをAEM Formsサービスに指定するstring値を渡します(例:http://localhost:8080/soap/services/SignatureService?WSDL)。 lc_version属性を使用する必要はありません。 この属性は、サービス参照を作成する場合に使用されます)。

    • SignatureServiceClient.Endpoint.Bindingフィールドの値を取得してSystem.ServiceModel.BasicHttpBindingオブジェクトを作成します。 戻り値を BasicHttpBinding にキャストします。

    • System.ServiceModel.BasicHttpBindingオブジェクトのMessageEncodingフィールドをWSMessageEncoding.Mtomに設定します。 この値により、MTOMが使用されます。

    • 次のタスクを実行して、基本的なHTTP認証を有効にします。

      • AEM formsユーザー名をフィールドSignatureServiceClient.ClientCredentials.UserName.UserNameに割り当てます。
      • 対応するパスワード値をフィールドSignatureServiceClient.ClientCredentials.UserName.Passwordに割り当てます。
      • 定数値HttpClientCredentialType.BasicをフィールドBasicHttpBindingSecurity.Transport.ClientCredentialTypeに割り当てます。
      • 定数値BasicHttpSecurityMode.TransportCredentialOnlyをフィールドBasicHttpBindingSecurity.Security.Modeに割り当てます。
  3. 検証する署名が含まれているPDFドキュメントを取得します

    • コンストラクタを使用して BLOB オブジェクトを作成します。BLOBオブジェクトは、検証するデジタル署名または認証署名が含まれるPDFドキュメントを保存するために使用します。
    • コンストラクターを呼び出して、System.IO.FileStreamオブジェクトを作成します。 署名済みPDFドキュメントーのファイルの場所とファイルを開くモードを表すstring値を渡します。
    • System.IO.FileStreamオブジェクトの内容を格納するバイト配列を作成します。 System.IO.FileStreamオブジェクトのLengthプロパティを取得して、バイト配列のサイズを決定できます。
    • System.IO.FileStreamオブジェクトのReadメソッドを呼び出して、バイト配列にストリームデータを入力します。 読み取るバイト配列、開始位置、ストリーム長を渡します。
    • BLOBオブジェクトに、MTOMプロパティにバイト配列の内容を割り当てて入力します。
  4. PKIランタイムオプションの設定

    • コンストラクタを使用して PKIOptions オブジェクトを作成します。
    • PKIOptionsオブジェクトのverificationTimeデータメンバに検証時刻を指定するVerificationTime定義済みリスト値を割り当てて、検証時刻を設定します。
    • 失効確認オプションを設定するには、PKIOptionsオブジェクトのrevocationCheckStyleデータメンバに失効確認を実行するかどうかを指定するRevocationCheckStyle定義済みリスト値を割り当てます。
  5. 電子署名の検証

    SignatureServiceClientオブジェクトのverify2メソッドを呼び出し、次の値を渡して、署名を検証します。

    • デジタル署名された、または認証されたPDFドキュメントを含むBLOBオブジェクトです。
    • 検証する署名が含まれている署名フィールド名を表すstring値です。
    • PKIランタイムオプションを含むPKIOptionsオブジェクト。
    • SPI情報を含むVerifySPIOptionsインスタンスです。 このパラメーターにはnullを指定できます。

    verify2メソッドは、デジタル署名の検証に使用できる情報を含むPDFSignatureVerificationInfoオブジェクトを返します。

  6. 署名のステータスの確認

    PDFSignatureVerificationInfoオブジェクトのstatusデータメンバーの値を取得して、署名のステータスを決定します。 このデータメンバーには、署名のステータスを指定するSignatureStatusオブジェクトが格納されます。 例えば、署名済みPDFドキュメントが変更された場合、statusデータメンバーに値SignatureStatus.DocumentSigNoChangesが格納されます。

  7. 署名者のIDの確認

    • PDFSignatureVerificationInfoオブジェクトのsignerデータメンバの値を取得して、署名者のIDを特定します。 このメンバはIdentityInformationオブジェクトを返します。
    • IdentityInformationオブジェクトのstatusデータメンバーを取得して、署名者のIDを特定します。 このデータメンバは、IDを指定するIdentityStatus定義済みリスト値を返します。 例えば、署名者が信頼できる場合、このメンバーはIdentityStatus.TRUSTEDを返します。

関連トピック

電子署名の検証

MTOMを使用したAEM Formsの呼び出し

SwaRefを使用したAEM Formsの呼び出し

複数の電子署名の検証

AEM Formsは、PDFドキュメント内のすべての電子署名を検証する手段を提供します。 複数の署名者からの署名が必要なビジネスプロセスの結果として、PDFドキュメントに複数の電子署名が含まれているとします。 例えば、融資担当者の署名と管理者の署名の両方が必要な金融トランザクションについて考えてみましょう。 SignatureサービスのJava APIまたはWebサービスのAPIを使用して、PDFドキュメント内のすべての署名を検証できます。 複数の署名を検証する際は、それぞれの署名のステータスやプロパティを確認できます。電子署名を信頼する前に、検証することをお勧めします。 単一の電子署名の検証について詳しく知ることをお勧めします。

メモ

Signatureサービスと電子署名の検証について詳しくは、『AEM Formsのサービスリファレンス』を参照してください。

手順の概要

複数の電子署名を検証するには、次のタスクを実行します。

  1. プロジェクトファイルを含めます。
  2. 署名クライアントを作成します。
  3. 検証する署名が含まれているPDFドキュメントを取得します。
  4. PKIランタイムオプションを設定します。
  5. すべての電子署名を取得します。
  6. すべての署名を繰り返し実行します。

プロジェクトファイルを含める

必要なファイルを開発プロジェクトに含めます。 Javaを使用してクライアントアプリケーションを作成する場合は、必要なJARファイルを含めます。 Webサービスを使用している場合は、プロキシファイルを含めます。

次のJARファイルをプロジェクトのクラスパスに追加する必要があります。

  • adobe-livecycle-client.jar
  • adobe-usermanager-client.jar
  • adobe-signatures-client.jar
  • adobe-utilities.jar(AEM FormsがJBossにデプロイされている場合に必要)
  • jbossall-client.jar(AEM FormsがJBossにデプロイされている場合に必要)

これらのJARファイルの場所について詳しくは、「AEM FormsJavaライブラリファイルを含める」を参照してください。

署名クライアントの作成

プログラムを使用してSignatureサービス操作を実行する前に、Signatureサービスクライアントを作成します。

検証する署名が含まれているPDFドキュメントを取得します

PDF署名のデジタル署名や認証に使用されるドキュメントを検証するには、署名が含まれるPDFドキュメントを取得します。

PKIランタイムオプションの設定

PDFドキュメントのすべての署名を検証する際にSignatureサービスで使用する次のPKIランタイムオプションを設定します。

  • 検証時刻
  • 失効確認
  • タイムスタンプ値

これらのオプションの設定の一環として、検証時刻を指定できます。 例えば、現在の時間(バリデーターのコンピューター上の時間)を選択できます。これは現在の時間を使用することを示します。 異なる時間値について詳しくは、AEM FormsAPIリファレンスVerificationTime定義済みリスト値を参照してください。

検証プロセスの一環として失効確認を実行するかどうかを指定することもできます。 例えば、失効確認を実行して、証明書が失効したかどうかを判断できます。 失効確認オプションについて詳しくは、『AEM FormsAPIリファレンス』のRevocationCheckStyle定義済みリスト値を参照してください。

証明書に対して失効確認を実行するには、CRLOptionSpecオブジェクトを使用して、証明書失効リスト(CRL)サーバーへのURLを指定します。 ただし、CRLサーバーへのURLを指定しない場合、Signatureサービスは証明書からURLを取得します。

失効確認を実行する際は、CRLサーバーを使用する代わりに、オンライン証明書ステータスプロトコル(OCSP)サーバーを使用できます。 通常、CRLサーバーではなくOCSPサーバーを使用する場合は、失効確認の実行が高速になります。 (オンライン証明書ステータスプロトコルを参照)。

Signatureサービスで使用するCRLおよびOCSPAdobeの順序は、「Applications and Services」を使用して設定できます。 例えば、「Adobeアプリケーションおよびサービス」でOCSPサーバーが最初に設定されている場合、OCSPサーバーがチェックされ、次にCRLサーバーがチェックされます。

失効確認を実行しない場合、Signatureサービスでは、証明書が失効したかどうかを確認しません。 つまり、CRLおよびOCSPサーバー情報は無視されます。

メモ

CRLOptionSpecおよびOCSPOptionSpecオブジェクトを使用して、証明書で指定されたURLを上書きできます。 例えば、CRLサーバーを上書きするには、CRLOptionSpecオブジェクトのsetLocalURIメソッドを呼び出します。

タイムスタンプとは、署名済みまたは認証済みのドキュメントが変更された時間を追跡するプロセスです。 ドキュメントに署名した後は、誰もその署名を変更できません。 タイムスタンプ機能を使用すると、署名済みまたは認証済みのドキュメントの有効性を強化できます。 タイムスタンプオプションは、TSPOptionSpecオブジェクトを使用して設定できます。 例えば、タイムスタンププロバイダー(TSP)サーバーのURLを指定できます。

メモ

JavaおよびWebサービスのクイック開始では、検証時刻はVerificationTime.CURRENT_TIMEに、失効確認はRevocationCheckStyle.BestEffortに設定されます。 CRLまたはOCSPサーバー情報が指定されていないので、サーバー情報は証明書から取得されます。

すべての電子署名を取得する

PDFドキュメント内のすべての電子署名を検証するには、PDFドキュメントから電子署名を取得します。 すべての署名がリストで返されます。 電子署名の検証の一環として、署名のステータスを確認します。

メモ

1つの電子署名を検証する場合とは異なり、複数の署名を検証する場合は、署名フィールド名を指定する必要はありません。

すべての署名を繰り返し実行

各署名を繰り返し処理します。 つまり、各署名について、デジタル署名を検証し、署名者のIDと各署名のステータスを確認します。 (電子署名の検証を参照)。

メモ

ドキュメント全体が要件の場合は、すべての署名を繰り返し実行する必要はありません。

関連トピック

Java APIを使用した複数の電子署名の検証

WebサービスAPIを使用した複数の電子署名の検証

AEM Forms Java ライブラリファイルを含める

接続プロパティの設定

Java APIを使用した複数の電子署名の検証

Signature Service API(Java)を使用して複数の電子署名を検証します。

  1. プロジェクトファイルを含める

    Javaプロジェクトのクラスパスに、adobe-signatures-client.jarなどのクライアントJARファイルを含めます。

  2. 署名クライアントの作成

    • 接続プロパティを含む ServiceClientFactory オブジェクトを作成します。
    • コンストラクタを使用して SignatureServiceClient オブジェクトを渡すことによって、ServiceClientFactory オブジェクトを作成します。
  3. 検証する署名が含まれているPDFドキュメントを取得します

    • 複数の電子署名を含むPDFドキュメントを表すjava.io.FileInputStreamオブジェクトを作成し、そのコンストラクターを使用して検証します。 PDFドキュメントの場所を指定するstring値を渡します。
    • コンストラクタを使用して com.adobe.idp.Document オブジェクトを渡すことによって、java.io.FileInputStream オブジェクトを作成します。
  4. PKIランタイムオプションの設定

    • コンストラクタを使用して PKIOptions オブジェクトを作成します。
    • PKIOptionsオブジェクトのsetVerificationTimeメソッドを呼び出し、検証時刻を指定するVerificationTime定義済みリスト値を渡して、検証時刻を設定します。
    • PKIOptionsオブジェクトのsetRevocationCheckStyleメソッドを呼び出し、失効確認を実行するかどうかを指定するRevocationCheckStyle定義済みリスト値を渡して、失効確認オプションを設定します。
  5. すべての電子署名を取得する

    SignatureServiceClientオブジェクトのverifyPDFDocumentメソッドを呼び出し、次の値を渡します。

    • 複数の電子署名を含むPDFドキュメントを含むcom.adobe.idp.Documentオブジェクトです。
    • PKIランタイムオプションを含むPKIOptionsオブジェクト。
    • SPI情報を含むVerifySPIOptionsインスタンスです。 このパラメーターにはnullを指定できます。

    verifyPDFDocumentメソッドは、PDFドキュメント内のすべての電子署名に関する情報を含むPDFDocumentVerificationInfoオブジェクトを返します。

  6. すべての署名を繰り返し実行

    • PDFDocumentVerificationInfoオブジェクトのgetVerificationInfosメソッドを呼び出すことで、すべての署名を繰り返します。 このメソッドは、java.util.Listオブジェクトを返します。各要素はPDFSignatureVerificationInfoオブジェクトです。 署名のリストを繰り返すには、java.util.Iteratorオブジェクトを使用します。
    • PDFSignatureVerificationInfoオブジェクトを使用すると、PDFSignatureVerificationInfoオブジェクトのgetStatusメソッドを呼び出して、署名のステータスを特定するなどのタスクを実行できます。 このメソッドは、署名の状態を通知する静的データメンバーのSignatureStatusオブジェクトを返します。 例えば、署名が不明な場合、このメソッドはSignatureStatus.DocumentSignatureUnknownを返します。

関連トピック

複数の電子署名の検証

クイック開始(SOAPモード):Java APIを使用した複数の電子署名の検証

AEM Forms Java ライブラリファイルを含める

電子署名の検証

接続プロパティの設定

WebサービスAPIを使用した複数の電子署名の検証

Signature Service API(Webサービス)を使用して複数の電子署名を検証します。

  1. プロジェクトファイルを含める

    MTOMを使用するMicrosoft .NETプロジェクトを作成します。 次のWSDL定義を使用していることを確認します。http://localhost:8080/soap/services/SignatureService?WSDL&lc_version=9.0.1.

    メモ

    localhostを、AEM FormsをホストするサーバーのIPアドレスに置き換えます。

  2. 署名クライアントの作成

    • SignatureServiceClientオブジェクトを作成するには、そのデフォルトのコンストラクタを使用します。

    • System.ServiceModel.EndpointAddressコンストラクターを使用してSignatureServiceClient.Endpoint.Addressオブジェクトを作成します。 WSDLをAEM Formsサービスに指定するstring値を渡します(例:http://localhost:8080/soap/services/SignatureService?WSDL)。 lc_version属性を使用する必要はありません。 この属性は、サービス参照を作成する場合に使用されます)。

    • SignatureServiceClient.Endpoint.Bindingフィールドの値を取得してSystem.ServiceModel.BasicHttpBindingオブジェクトを作成します。 戻り値を BasicHttpBinding にキャストします。

    • System.ServiceModel.BasicHttpBindingオブジェクトのMessageEncodingフィールドをWSMessageEncoding.Mtomに設定します。 この値により、MTOMが使用されます。

    • 次のタスクを実行して、基本的なHTTP認証を有効にします。

      • AEM formsユーザー名をフィールドSignatureServiceClient.ClientCredentials.UserName.UserNameに割り当てます。
      • 対応するパスワード値をフィールドSignatureServiceClient.ClientCredentials.UserName.Passwordに割り当てます。
      • 定数値HttpClientCredentialType.BasicをフィールドBasicHttpBindingSecurity.Transport.ClientCredentialTypeに割り当てます。
      • 定数値BasicHttpSecurityMode.TransportCredentialOnlyをフィールドBasicHttpBindingSecurity.Security.Modeに割り当てます。
  3. 検証する署名が含まれているPDFドキュメントを取得します

    • コンストラクタを使用して BLOB オブジェクトを作成します。BLOBオブジェクトは、検証する複数の電子署名を含むPDFドキュメントを保存します。
    • コンストラクターを呼び出して、System.IO.FileStreamオブジェクトを作成します。 PDFドキュメントーのファイルの場所とファイルを開くモードを表すstring値を渡します。
    • System.IO.FileStreamオブジェクトの内容を格納するバイト配列を作成します。 System.IO.FileStreamオブジェクトのLengthプロパティを取得して、バイト配列のサイズを決定できます。
    • System.IO.FileStreamオブジェクトのReadメソッドを呼び出して、バイト配列にストリームデータを入力します。 読み取るバイト配列、開始位置、ストリーム長を渡します。
    • BLOBオブジェクトに、MTOMプロパティにバイト配列の内容を割り当てて入力します。
  4. PKIランタイムオプションの設定

    • コンストラクタを使用して PKIOptions オブジェクトを作成します。
    • PKIOptionsオブジェクトのverificationTimeデータメンバに検証時刻を指定するVerificationTime定義済みリスト値を割り当てて、検証時刻を設定します。
    • 失効確認オプションを設定するには、PKIOptionsオブジェクトのrevocationCheckStyleデータメンバに失効確認を実行するかどうかを指定するRevocationCheckStyle定義済みリスト値を割り当てます。
  5. すべての電子署名を取得する

    SignatureServiceClientオブジェクトのverifyPDFDocumentメソッドを呼び出し、次の値を渡します。

    • 複数の電子署名を含むPDFドキュメントを含むBLOBオブジェクトです。
    • PKIランタイムオプションを含むPKIOptionsオブジェクト。
    • SPI情報を含むVerifySPIOptionsインスタンスです。 このパラメーターにはnullを指定できます。

    verifyPDFDocumentメソッドは、PDFドキュメント内のすべての電子署名に関する情報を含むPDFDocumentVerificationInfoオブジェクトを返します。

  6. すべての署名を繰り返し実行

    • PDFDocumentVerificationInfoオブジェクトのverificationInfosデータメンバーを取得して、すべての署名を繰り返します。 このデータメンバは、Object配列を返します。各要素はPDFSignatureVerificationInfoオブジェクトです。
    • PDFSignatureVerificationInfoオブジェクトを使用すると、PDFSignatureVerificationInfoオブジェクトのstatusデータメンバを取得して、署名のステータスの特定などのタスクを実行できます。 このデータメンバは、SignatureStatusオブジェクトを返します。このオブジェクトの静的データメンバは、署名の状態を通知します。 例えば、署名が不明な場合、このメソッドはSignatureStatus.DocumentSignatureUnknownを返します。

関連トピック

複数の電子署名の検証

MTOMを使用したAEM Formsの呼び出し

SwaRefを使用したAEM Formsの呼び出し

電子署名の削除

新しい電子署名を適用する前に、電子署名を署名フィールドから削除する必要があります。 電子署名は上書きできません。 署名が含まれる署名フィールドに電子署名を適用しようとすると、例外が発生します。

メモ

Signatureサービスについて詳しくは、「AEM Formsのサービスリファレンス」を参照してください。

手順の概要

署名フィールドから電子署名を削除するには、次のタスクを実行します。

  1. プロジェクトファイルを含めます。
  2. 署名クライアントを作成します。
  3. 削除する署名が含まれているPDFドキュメントを取得します。
  4. 署名フィールドから電子署名を削除します。
  5. PDFドキュメントをPDFファイルとして保存します。

プロジェクトファイルを含める

必要なファイルを開発プロジェクトに含めます。 Javaを使用してクライアントアプリケーションを作成する場合は、必要なJARファイルを含めます。 Webサービスを使用している場合は、プロキシファイルを必ず含めます。

次のJARファイルをプロジェクトのクラスパスに追加する必要があります。

  • adobe-livecycle-client.jar
  • adobe-usermanager-client.jar
  • adobe-signatures-client.jar
  • adobe-utilities.jar(AEM FormsがJBossにデプロイされている場合に必要)
  • jbossall-client.jar(AEM FormsがJBossにデプロイされている場合に必要)

これらのJARファイルの場所について詳しくは、「AEM FormsJavaライブラリファイルを含める」を参照してください。

署名クライアントの作成

プログラムを使用してSignatureサービスの操作を実行する前に、Signatureサービスクライアントを作成する必要があります。

削除する署名が含まれているPDFドキュメントの取得

PDFドキュメントから署名を削除するには、署名が含まれるPDFドキュメントを取得する必要があります。

署名フィールドからの電子署名の削除

PDFドキュメントから電子署名を正しく削除するには、電子署名が含まれる署名フィールドの名前を指定する必要があります。 また、電子署名を削除する権限が必要です。それ以外の場合は、例外が発生します。

PDFドキュメントをPDFファイルとして保存

Signatureサービスで署名フィールドから電子署名を削除した後、PDFドキュメントをPDFファイルとして保存し、ユーザーがAcrobatまたはAdobe Readerで開けるようにすることができます。

関連トピック

Java APIを使用した電子署名の削除

WebサービスAPIを使用した電子署名の削除

AEM Forms Java ライブラリファイルを含める

接続プロパティの設定

署名フィールドの追加

Java APIを使用した電子署名の削除

署名API(Java)を使用して電子署名を削除します。

  1. プロジェクトファイルを含める

    Javaプロジェクトのクラスパスに、adobe-signatures-client.jarなどのクライアントJARファイルを含めます。

  2. 署名クライアントを作成します。

    • 接続プロパティを含む ServiceClientFactory オブジェクトを作成します。
    • コンストラクタを使用して SignatureServiceClient オブジェクトを渡すことによって、ServiceClientFactory オブジェクトを作成します。
  3. 削除する署名が含まれているPDFドキュメントの取得

    • コンストラクターを使用し、PDFドキュメントの場所を指定する文字列値を渡して、削除するドキュメントが含まれるPDF署名を表すjava.io.FileInputStreamオブジェクトを作成します。
    • コンストラクタを使用して com.adobe.idp.Document オブジェクトを渡すことによって、java.io.FileInputStream オブジェクトを作成します。
  4. 署名フィールドからの電子署名の削除

    SignatureServiceClientオブジェクトのclearSignatureFieldメソッドを呼び出し、次の値を渡して、署名フィールドから電子署名を削除します。

    • 削除する署名が含まれているPDFドキュメントを表すcom.adobe.idp.Documentオブジェクトです。
    • 電子署名が含まれる署名フィールドの名前を指定するstring値です。

    clearSignatureFieldメソッドは、電子署名が削除されたPDFドキュメントを表すcom.adobe.idp.Documentオブジェクトを返します。

  5. PDFドキュメントをPDFファイルとして保存

    • java.io.File オブジェクトを作成し、ファイル拡張子が .pdf であることを確認します。
    • com.adobe.idp.DocumentオブジェクトのcopyToFileメソッドを呼び出します。 java.io.Fileオブジェクトを渡して、com.adobe.idp.Documentオブジェクトの内容をファイルにコピーします。 Document メソッドから返された clearSignatureField オブジェクトを必ず使用してください。

関連トピック

電子署名の削除

クイック開始(SOAPモード):Java APIを使用した電子署名の削除

AEM Forms Java ライブラリファイルを含める

接続プロパティの設定

WebサービスAPIを使用した電子署名の削除

Signature API(Webサービス)を使用して電子署名を削除します。

  1. プロジェクトファイルを含める

    MTOMを使用するMicrosoft .NETプロジェクトを作成します。 次のWSDL定義を使用していることを確認します。http://localhost:8080/soap/services/SignatureService?WSDL&lc_version=9.0.1.

    メモ

    localhostを、AEM FormsをホストするサーバーのIPアドレスに置き換えます。

  2. 署名クライアントの作成

    • SignatureServiceClientオブジェクトを作成するには、そのデフォルトのコンストラクタを使用します。

    • System.ServiceModel.EndpointAddressコンストラクターを使用してSignatureServiceClient.Endpoint.Addressオブジェクトを作成します。 WSDLをAEM Formsサービスに指定するstring値を渡します(例:http://localhost:8080/soap/services/SignatureService?WSDL)。 lc_version属性を使用する必要はありません。 この属性は、サービス参照を作成する場合に使用されます)。

    • SignatureServiceClient.Endpoint.Bindingフィールドの値を取得してSystem.ServiceModel.BasicHttpBindingオブジェクトを作成します。 戻り値を BasicHttpBinding にキャストします。

    • System.ServiceModel.BasicHttpBindingオブジェクトのMessageEncodingフィールドをWSMessageEncoding.Mtomに設定します。 この値により、MTOMが使用されます。

    • 次のタスクを実行して、基本的なHTTP認証を有効にします。

      • AEM formsユーザー名をフィールドSignatureServiceClient.ClientCredentials.UserName.UserNameに割り当てます。
      • 対応するパスワード値をフィールドSignatureServiceClient.ClientCredentials.UserName.Passwordに割り当てます。
      • 定数値HttpClientCredentialType.BasicをフィールドBasicHttpBindingSecurity.Transport.ClientCredentialTypeに割り当てます。
      • 定数値BasicHttpSecurityMode.TransportCredentialOnlyをフィールドBasicHttpBindingSecurity.Security.Modeに割り当てます。
  3. 削除する署名が含まれているPDFドキュメントの取得

    • コンストラクタを使用して BLOB オブジェクトを作成します。BLOBオブジェクトは、削除する電子署名を含むPDFドキュメントを保存するために使用します。
    • コンストラクターを呼び出し、署名済みPDFドキュメントーのファイルの場所とファイルを開くモードを表すstring値を渡して、System.IO.FileStreamオブジェクトを作成します。
    • System.IO.FileStreamオブジェクトの内容を格納するバイト配列を作成します。 System.IO.FileStreamオブジェクトのLengthプロパティを取得して、バイト配列のサイズを決定できます。
    • System.IO.FileStreamオブジェクトのReadメソッドを呼び出して、バイト配列にストリームデータを入力します。 読み取るバイト配列、開始位置、ストリーム長を渡します。
    • BLOBオブジェクトにMTOMプロパティを割り当て、バイト配列の内容を指定します。
  4. 署名フィールドからの電子署名の削除

    SignatureServiceClientオブジェクトのclearSignatureFieldメソッドを呼び出し、次の値を渡して、デジタル署名を削除します。

    • 署名済みPDFドキュメントを含むBLOBオブジェクトです。
    • 削除する電子署名が含まれている署名フィールドの名前を表すstring値です。

    clearSignatureFieldメソッドは、電子署名が削除されたPDFドキュメントを表すBLOBオブジェクトを返します。

  5. PDFドキュメントをPDFファイルとして保存

    • コンストラクターを呼び出し、空の署名フィールドとファイルを開くモードを含むPDFドキュメントのファイルの場所を表すstring値を渡して、System.IO.FileStreamオブジェクトを作成します。
    • signメソッドから返されたBLOBオブジェクトの内容を格納するバイト配列を作成します。 BLOBオブジェクトのMTOMデータメンバの値を取得して、バイト配列を入力します。
    • コンストラクターを呼び出してSystem.IO.FileStreamオブジェクトを渡し、System.IO.BinaryWriterオブジェクトを作成します。
    • System.IO.BinaryWriterオブジェクトのWriteメソッドを呼び出し、バイト配列を渡すことで、バイト配列の内容をPDFファイルに書き込みます。

関連トピック

電子署名の削除

MTOMを使用したAEM Formsの呼び出し

SwaRefを使用したAEM Formsの呼び出し

このページ