PDFドキュメントの暗号化と復号化

このドキュメントのサンプルと例は、JEE上のAEM Forms環境に限られています。

Encryptionサービスについて

Encryptionサービスを使用すると、ドキュメントの暗号化と復号化をおこなえます。 ドキュメントを暗号化すると、その内容は判読できなくなります。許可されたユーザーはドキュメントを復号化して、コンテンツにアクセスできます。PDF ドキュメントがパスワードで暗号化されている場合、ユーザーは開くためのパスワードを指定しないと、Adobe Reader または Adobe Acrobat でドキュメントを表示できません。同じように、PDF ドキュメントが証明書で暗号化されている場合も、ユーザーが PDF ドキュメントを復号化するには、その PDF ドキュメントの暗号化に使用された証明書(秘密鍵)に対応した公開鍵が必要です。

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

メモ

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

パスワードによるPDFドキュメントの暗号化

PDF ドキュメントをパスワードで暗号化する場合、ユーザーは Adobe Reader または Acrobat で PDF ドキュメントを開くためのパスワードを指定する必要があります。また、PDFドキュメントへの電子署名など、別のAEM Forms操作をドキュメントで実行する前に、パスワードで暗号化されたPDFドキュメントのロックを解除する必要があります。

メモ

暗号化されたPDFドキュメントをAEM Formsリポジトリにアップロードすると、そのPDFドキュメントを復号化してXDPコンテンツを抽出することはできません。 ドキュメントをAEM Formsリポジトリにアップロードする前に、ドキュメントを暗号化しないことをお勧めします。 (リソースの書き込みを参照)。

メモ

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

手順の概要

PDFドキュメントをパスワードで暗号化するには、次の手順を実行します。

  1. プロジェクトファイルを含めます。
  2. 暗号化クライアントAPIオブジェクトを作成します。
  3. 暗号化するPDFドキュメントを取得します。
  4. 暗号化の実行時オプションを設定します。
  5. パスワードを追加します。
  6. 暗号化されたPDFドキュメントをPDFファイルとして保存します。

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

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

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

  • adobe-livecycle-client.jar
  • adobe-usermanager-client.jar
  • adobe-encryption-client.jar
  • adobe-utilities.jar(AEM FormsをJBossにデプロイする場合に必要)
  • jbossall-client.jar(AEM FormsをJBossにデプロイする場合に必要)

暗号化クライアントAPIオブジェクトの作成

プログラムによってEncryptionサービス操作を実行するには、Encryptionサービスクライアントを作成する必要があります。

暗号化するPDFドキュメントの取得

ドキュメントをパスワードで暗号化するには、暗号化されていないPDFドキュメントを取得する必要があります。 既に暗号化されているPDFドキュメントを保護しようとすると、例外が発生します。

暗号化の実行時オプションの設定

PDFドキュメントをパスワードで暗号化するには、2つのパスワード値を含む4つの値を指定します。 最初のパスワード値はPDFドキュメントの暗号化に使用され、PDFドキュメントを開く際に指定する必要があります。 2つ目のパスワード値(マスターパスワード値)は、PDFドキュメントから暗号化を削除するために使用されます。 パスワード値では大文字と小文字が区別され、これら2つのパスワード値を同じ値にすることはできません。

暗号化するPDFドキュメントリソースを指定する必要があります。 PDFドキュメント全体、ドキュメントのメタデータを除くすべてのもの、またはドキュメントの添付ファイルのみを暗号化できます。 ドキュメントの添付ファイルのみを暗号化する場合、ユーザーは添付ファイルにアクセスしようとすると、パスワードの入力を求められます。

PDFドキュメントを暗号化する場合は、保護されたドキュメントに関連付ける権限を指定できます。 権限を指定することで、パスワードで暗号化されたPDFドキュメントを開くユーザーが実行できるアクションを制御できます。 例えば、フォームデータを正常に抽出するには、次の権限を設定する必要があります。

  • PASSWORD_EDIT_ADD
  • PASSWORD_EDIT_MODIFY
メモ

権限は、PasswordEncryptionPermission列挙値として指定します。

パスワードの追加

保護されていないPDFドキュメントを取得し、暗号化の実行時の値を設定した後、PDFドキュメントにパスワードを追加できます。

暗号化されたPDFドキュメントをPDFファイルとして保存します

パスワードで暗号化されたPDFドキュメントをPDFファイルとして保存できます。

関連トピック

Java APIを使用したPDFドキュメントの暗号化

WebサービスAPIを使用したPDFドキュメントの暗号化

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

接続プロパティの設定

EncryptionサービスAPIのクイックスタート

PDFドキュメントの証明書による暗号化

Java APIを使用してPDFドキュメントを暗号化します

暗号化API(Java)を使用して、PDFドキュメントをパスワードで暗号化します。

  1. プロジェクトファイルを含めます。

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

  2. 暗号化クライアントAPIを作成します。

    • 接続プロパティを含む ServiceClientFactory オブジェクトを作成します。
    • コンストラクターを使用してEncryptionServiceClientオブジェクトを渡し、ServiceClientFactoryオブジェクトを作成します。
  3. 暗号化するPDFドキュメントを取得します。

    • 暗号化するPDFドキュメントを表すjava.io.FileInputStreamオブジェクトを作成します。その際、コンストラクターを使用し、PDFドキュメントの場所を指定するstring値を渡します。
    • コンストラクタを使用して com.adobe.idp.Document オブジェクトを渡すことによって、java.io.FileInputStream オブジェクトを作成します。
  4. 暗号化の実行時オプションを設定します。

    • コンストラクターを呼び出して、PasswordEncryptionOptionSpecオブジェクトを作成します。
    • PasswordEncryptionOptionSpecオブジェクトのsetEncryptOptionメソッドを呼び出し、暗号化するドキュメントリソースを指定するPasswordEncryptionOption列挙値を渡すことで、暗号化するPDFドキュメントリソースを指定します。 例えば、PDFドキュメント全体(メタデータと添付ファイルを含む)を暗号化するには、PasswordEncryptionOption.ALLと指定します。
    • ArrayListコンストラクターを使用して、暗号化権限を格納するjava.util.Listオブジェクトを作成します。
    • java.util.Listオブジェクトのaddメソッドを呼び出し、設定する権限に対応する列挙値を渡して、権限を指定します。 例えば、PDFドキュメント内のデータをユーザーがコピーできる権限を設定するには、PasswordEncryptionPermission.PASSWORD_EDIT_COPYと指定します。 (設定する権限ごとに、この手順を繰り返します)。
    • PasswordEncryptionOptionSpecオブジェクトのsetCompatabilityメソッドを呼び出し、Acrobatの互換性レベルを指定する列挙値を渡すことで、Acrobatの互換性オプションを指定します。 例えば、PasswordEncryptionCompatability.ACRO_7を指定できます。
    • PasswordEncryptionOptionSpecオブジェクトのsetDocumentOpenPasswordメソッドを呼び出し、開いているパスワードを表す文字列値を渡すことで、暗号化されたPDFドキュメントをユーザーが開くためのパスワード値を指定します。
    • PasswordEncryptionOptionSpecオブジェクトのsetPermissionPasswordメソッドを呼び出し、マスターパスワードを表す文字列値を渡すことで、ユーザーがPDFドキュメントの暗号化を削除できるマスターパスワード値を指定します。
  5. パスワードを追加します。

    EncryptionServiceClientオブジェクトのencryptPDFUsingPasswordメソッドを呼び出し、次の値を渡すことで、PDFドキュメントを暗号化します。

    • パスワードで暗号化するPDFドキュメントを含むcom.adobe.idp.Documentオブジェクト。
    • 暗号化ランタイムオプションを含むPasswordEncryptionOptionSpecオブジェクト。

    encryptPDFUsingPasswordメソッドは、パスワードで暗号化されたPDFドキュメントを含むcom.adobe.idp.Documentオブジェクトを返します。

  6. 暗号化されたPDFドキュメントをPDFファイルとして保存します。

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

関連トピック

手順の概要

クイックスタート(SOAPモード):Java APIを使用したPDFドキュメントの暗号化

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

接続プロパティの設定

WebサービスAPIを使用したPDFドキュメントの暗号化

Encryption API(Webサービス)を使用して、PDFドキュメントをパスワードで暗号化します。

  1. プロジェクトファイルを含めます。

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

    メモ

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

  2. 暗号化クライアントAPIオブジェクトを作成します。

    • デフォルトのコンストラクターを使用してEncryptionServiceClientオブジェクトを作成します。

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

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

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

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

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

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

    • コンストラクタを使用して PasswordEncryptionOptionSpec オブジェクトを作成します。
    • PasswordEncryptionOptionSpecオブジェクトのencryptOptionデータメンバーにPasswordEncryptionOption列挙値を割り当てて、暗号化するPDFドキュメントリソースを指定します。 PDF全体(メタデータと添付ファイルを含む)を暗号化するには、このデータメンバーにPasswordEncryptionOption.ALLを割り当てます。
    • PasswordEncryptionCompatability列挙値をPasswordEncryptionOptionSpecオブジェクトのcompatabilityデータメンバーに割り当てて、Acrobatの互換性オプションを指定します。 例えば、PasswordEncryptionCompatability.ACRO_7をこのデータメンバーに割り当てます。
    • ユーザーが暗号化されたPDFドキュメントを開くためのパスワード値を指定します。そのためには、PasswordEncryptionOptionSpecオブジェクトのdocumentOpenPasswordデータメンバーに、開いたパスワードを表す文字列値を割り当てます。
    • ユーザーがPasswordEncryptionOptionSpecオブジェクトのpermissionPasswordデータメンバーにマスターパスワードを表す文字列値を割り当てることで、PDFドキュメントから暗号化を削除できるパスワード値を指定します。
  5. パスワードを追加します。

    EncryptionServiceClientオブジェクトのencryptPDFUsingPasswordメソッドを呼び出し、次の値を渡すことで、PDFドキュメントを暗号化します。

    • パスワードで暗号化するPDFドキュメントを含むBLOBオブジェクト。
    • 暗号化ランタイムオプションを含むPasswordEncryptionOptionSpecオブジェクト。

    encryptPDFUsingPasswordメソッドは、パスワードで暗号化されたPDFドキュメントを含むBLOBオブジェクトを返します。

  6. 暗号化されたPDFドキュメントをPDFファイルとして保存します。

    • コンストラクターを呼び出し、保護されたPDFドキュメントのファイルの場所を表す文字列値を渡して、System.IO.FileStreamオブジェクトを作成します。
    • encryptPDFUsingPasswordメソッドで返されたBLOBオブジェクトのデータ内容を格納するバイト配列を作成します。 BLOBオブジェクトのMTOMデータメンバーの値を取得して、バイト配列を設定します。
    • コンストラクターを呼び出し、System.IO.FileStreamオブジェクトを渡して、System.IO.BinaryWriterオブジェクトを作成します。
    • System.IO.BinaryWriterオブジェクトのWriteメソッドを呼び出し、バイト配列を渡すことにより、バイト配列の内容をPDFファイルに書き込みます。

関連トピック

手順の概要

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

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

PDFドキュメントの証明書による暗号化

証明書ベースの暗号化では、公開鍵によって特定の受信者向けにドキュメントを暗号化できます。 それぞれの受信者に、異なる権限を与えることができます。公開鍵によって、さまざまな暗号化を行うことができます。アルゴリズムは、keys​と呼ばれる、次のプロパティを持つ大きな2つの数値を生成するために使用します。

  • 鍵のうち 1 つは、一連のデータを暗号化するために使用されます。その後、他のキーのみを使用してデータを復号化できます。
  • 1 つの鍵を、もう片方の鍵と区別することは不可能です。

キーの1つは、ユーザーの秘密鍵として機能します。 そのユーザーのみがこの鍵にアクセスできることが重要です。もう1つのキーはユーザーの公開鍵で、他のユーザーと共有できます。

公開鍵証明書には、ユーザーの公開鍵と識別情報が含まれます。 証明書の保存には、X.509 形式が使用されます。通常、証明書は認証局(CA)で発行および電子署名されます。CA は、証明書の有効性における信頼度を提供する、承認されたエンティティです。証明書には有効期限があり、この期限を過ぎると無効になります。また、証明書の失効リスト(CRL)には、有効期限よりも前に失効した証明書に関する情報が示されます。CRL は認証局によって定期的に発行されます。証明書の失効ステータスは、ネットワークを通じてオンライン証明書ステータスプロトコル(OCSP)から取得することもできます。

メモ

暗号化されたPDFドキュメントをAEM Formsリポジトリにアップロードすると、そのPDFドキュメントを復号化してXDPコンテンツを抽出することはできません。 ドキュメントをAEM Formsリポジトリにアップロードする前に、ドキュメントを暗号化しないことをお勧めします。 (リソースの書き込みを参照)。

メモ

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

メモ

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

手順の概要

PDFドキュメントを証明書で暗号化するには、次の手順を実行します。

  1. プロジェクトファイルを含めます。
  2. 暗号化クライアントAPIオブジェクトを作成します。
  3. 暗号化するPDFドキュメントを取得します。
  4. 証明書を参照します。
  5. 暗号化の実行時オプションを設定します。
  6. 証明書で暗号化されたPDFドキュメントを作成します。
  7. 暗号化されたPDFドキュメントをPDFファイルとして保存します。

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

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

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

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

暗号化クライアントAPIオブジェクトの作成

プログラムによってEncryptionサービス操作を実行するには、Encryptionサービスクライアントを作成する必要があります。 Java Encryption Service APIを使用している場合は、EncrytionServiceClientオブジェクトを作成します。 WebサービスのEncryption Service APIを使用する場合は、EncryptionServiceServiceオブジェクトを作成します。

暗号化するPDFドキュメントの取得

暗号化する暗号化されていないPDFドキュメントを取得する必要があります。 既に暗号化されているPDFドキュメントを保護しようとすると、例外が発生します。

証明書の参照

PDFドキュメントを証明書で暗号化するには、PDFドキュメントの暗号化に使用される証明書を参照します。 証明書は.cerファイル、.crtファイル、または.pemファイルです。 PKCS#12ファイルは、対応する証明書を持つ秘密鍵を保存するために使用されます。

PDFドキュメントを証明書で暗号化する場合は、保護されたドキュメントに関連付けられている権限を指定します。 権限を指定することで、証明書で暗号化されたPDFドキュメントを開くユーザーが実行できるアクションを制御できます。

暗号化の実行時オプションの設定

暗号化するPDFドキュメントリソースを指定します。 PDFドキュメント全体、ドキュメントのメタデータを除くすべて、またはドキュメントの添付ファイルのみを暗号化できます。

証明書で暗号化されたPDFドキュメントの作成

保護されていないPDFドキュメントを取得し、証明書を参照し、実行時オプションを設定した後、証明書で暗号化されたPDFドキュメントを作成できます。 PDFドキュメントが暗号化された後で、対応する公開鍵を復号化する必要があります。

暗号化されたPDFドキュメントをPDFファイルとして保存します

暗号化されたPDFドキュメントをPDFファイルとして保存できます。

関連トピック

Java APIを使用した証明書によるPDFドキュメントの暗号化

WebサービスAPIを使用してPDFドキュメントを証明書で暗号化する

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

接続プロパティの設定

EncryptionサービスAPIのクイックスタート

PDFドキュメントのパスワードによる暗号化

Java APIを使用して、PDFドキュメントを証明書で暗号化します

暗号化API(Java)を使用して、PDFドキュメントを証明書で暗号化します。

  1. プロジェクトファイルを含めます。

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

  2. 暗号化クライアントAPIオブジェクトを作成します。

    • 接続プロパティを含む ServiceClientFactory オブジェクトを作成します。
    • コンストラクターを使用してEncryptionServiceClientオブジェクトを渡し、ServiceClientFactoryオブジェクトを作成します。
  3. 暗号化するPDFドキュメントを取得します。

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

    • コンストラクターを使用して、権限情報を格納するjava.util.Listオブジェクトを作成します。
    • java.util.Listオブジェクトのaddメソッドを呼び出し、保護されたPDFドキュメントを開くユーザーに付与される権限を表すCertificateEncryptionPermissions列挙値を渡すことで、暗号化されたドキュメントに関連付けられた権限を指定します。 例えば、すべての権限を指定するには、CertificateEncryptionPermissions.PKI_ALL_PERMを渡します。
    • コンストラクタを使用して Recipient オブジェクトを作成します。
    • PDFドキュメントのコンストラクターを使用し、証明書の場所を指定する文字列値を渡すことで、PDFドキュメントの暗号化に使用される証明書を表すjava.io.FileInputStreamオブジェクトを作成します。
    • コンストラクターを使用し、証明書を表すjava.io.FileInputStreamオブジェクトを渡して、com.adobe.idp.Documentオブジェクトを作成します。
    • RecipientオブジェクトのsetX509Certメソッドを呼び出し、証明書を含むcom.adobe.idp.Documentオブジェクトを渡します。 (また、Recipientオブジェクトには、証明書ソースとしてTruststore証明書エイリアスまたはLDAP URLを含めることができます)。
    • コンストラクターを使用して、権限と証明書の情報を格納するCertificateEncryptionIdentityオブジェクトを作成します。
    • CertificateEncryptionIdentityオブジェクトのsetPermsメソッドを呼び出し、権限情報を格納するjava.util.Listオブジェクトを渡します。
    • CertificateEncryptionIdentityオブジェクトのsetRecipientメソッドを呼び出し、証明書情報を格納するRecipientオブジェクトを渡します。
    • コンストラクターを使用して、証明書情報を格納するjava.util.Listオブジェクトを作成します。
    • java.util.Listオブジェクトのaddメソッドを呼び出し、CertificateEncryptionIdentityオブジェクトを渡します。 (このjava.util.Listオブジェクトは、encryptPDFUsingCertificatesメソッドにパラメーターとして渡されます)。
  5. 暗号化の実行時オプションを設定します。

    • コンストラクターを呼び出して、CertificateEncryptionOptionSpecオブジェクトを作成します。
    • CertificateEncryptionOptionSpecオブジェクトのsetOptionメソッドを呼び出し、暗号化するドキュメントリソースを指定するCertificateEncryptionOption列挙値を渡すことで、暗号化するPDFドキュメントリソースを指定します。 例えば、PDFドキュメント全体(メタデータと添付ファイルを含む)を暗号化するには、CertificateEncryptionOption.ALLと指定します。
    • CertificateEncryptionOptionSpecオブジェクトのsetCompatメソッドを呼び出し、Acrobatの互換性レベルを指定するCertificateEncryptionCompatibility列挙値を渡すことで、Acrobatの互換性オプションを指定します。 例えば、CertificateEncryptionCompatibility.ACRO_7を指定できます。
  6. 証明書で暗号化されたPDFドキュメントを作成します。

    EncryptionServiceClientオブジェクトのencryptPDFUsingCertificatesメソッドを呼び出し、次の値を渡すことで、PDFドキュメントを証明書で暗号化します。

    • 暗号化するPDFドキュメントを含むcom.adobe.idp.Documentオブジェクト。
    • 証明書情報を格納するjava.util.Listオブジェクト。
    • 暗号化ランタイムオプションを含むCertificateEncryptionOptionSpecオブジェクト。

    encryptPDFUsingCertificatesメソッドは、証明書で暗号化されたPDFドキュメントを含むcom.adobe.idp.Documentオブジェクトを返します。

  7. 暗号化されたPDFドキュメントをPDFファイルとして保存します。

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

関連トピック

手順の概要

クイックスタート(SOAPモード):Java APIを使用した証明書によるPDFドキュメントの暗号化

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

接続プロパティの設定

WebサービスAPIを使用して、PDFドキュメントを証明書で暗号化します

Encryption API(Webサービス)を使用して、証明書でPDFドキュメントを暗号化します。

  1. プロジェクトファイルを含めます。

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

    メモ

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

  2. 暗号化クライアントAPIオブジェクトを作成します。

    • デフォルトのコンストラクターを使用してEncryptionServiceClientオブジェクトを作成します。

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

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

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

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

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

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

    • コンストラクタを使用して Recipient オブジェクトを作成します。このオブジェクトは、証明書情報を格納します。
    • コンストラクタを使用して BLOB オブジェクトを作成します。このBLOBオブジェクトは、PDFドキュメントを暗号化する証明書を保存します。
    • コンストラクターを呼び出し、証明書のファイルの場所とファイルを開くモードを表す文字列値を渡して、System.IO.FileStreamオブジェクトを作成します。
    • System.IO.FileStreamオブジェクトの内容を格納するバイト配列を作成します。 System.IO.FileStreamオブジェクトのLengthプロパティを取得することで、バイト配列のサイズを判断できます。
    • System.IO.FileStreamオブジェクトのReadメソッドを呼び出し、読み取るバイト配列、開始位置、ストリーム長を渡すことによって、バイト配列にストリームデータを入力します。
    • BLOBオブジェクトを設定するには、バイト配列の内容をBLOBオブジェクトのMTOMデータメンバーに割り当てます。
    • 証明書を格納するBLOBオブジェクトをRecipientオブジェクトのx509Certデータメンバーに割り当てます。
    • コンストラクターを使用して、証明書情報を格納するCertificateEncryptionIdentityオブジェクトを作成します。
    • 証明書を格納するRecipientオブジェクトをCertificateEncryptionIdentityオブジェクトの受信者データメンバーに割り当てます。
    • Object配列を作成し、CertificateEncryptionIdentityオブジェクトをObject配列の最初の要素に割り当てます。 このObject配列は、encryptPDFUsingCertificatesメソッドにパラメーターとして渡されます。
  5. 暗号化の実行時オプションを設定します。

    • コンストラクタを使用して CertificateEncryptionOptionSpec オブジェクトを作成します。
    • CertificateEncryptionOptionSpecオブジェクトのoptionデータメンバーにCertificateEncryptionOption列挙値を割り当てて、暗号化するPDFドキュメントリソースを指定します。 PDFドキュメント全体(メタデータと添付ファイルを含む)を暗号化するには、このデータメンバーにCertificateEncryptionOption.ALLを割り当てます。
    • CertificateEncryptionCompatibility列挙値をCertificateEncryptionOptionSpecオブジェクトのcompatデータメンバーに割り当てて、Acrobatの互換性オプションを指定します。 例えば、CertificateEncryptionCompatibility.ACRO_7をこのデータメンバーに割り当てます。
  6. 証明書で暗号化されたPDFドキュメントを作成します。

    EncryptionServiceServiceオブジェクトのencryptPDFUsingCertificatesメソッドを呼び出し、次の値を渡すことで、PDFドキュメントを証明書で暗号化します。

    • 暗号化するPDFドキュメントを含むBLOBオブジェクト。
    • 証明書情報を格納するObject配列。
    • 暗号化ランタイムオプションを含むCertificateEncryptionOptionSpecオブジェクト。

    encryptPDFUsingCertificatesメソッドは、証明書で暗号化されたPDFドキュメントを含むBLOBオブジェクトを返します。

  7. 暗号化されたPDFドキュメントをPDFファイルとして保存します。

    • コンストラクターを呼び出し、保護されたPDFドキュメントのファイルの場所を表す文字列値を渡して、System.IO.FileStreamオブジェクトを作成します。
    • encryptPDFUsingCertificatesメソッドで返されたBLOBオブジェクトのデータ内容を格納するバイト配列を作成します。 BLOBオブジェクトのbinaryDataデータメンバーの値を取得して、バイト配列を設定します。
    • コンストラクターを呼び出し、System.IO.FileStreamオブジェクトを渡して、System.IO.BinaryWriterオブジェクトを作成します。
    • System.IO.BinaryWriterオブジェクトのWriteメソッドを呼び出し、バイト配列を渡すことにより、バイト配列の内容をPDFファイルに書き込みます。

関連トピック

手順の概要

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

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

証明書ベースの暗号化の削除

証明書ベースの暗号化をPDFドキュメントから削除して、ユーザーがAdobe ReaderまたはAcrobatでPDFドキュメントを開けるようにすることができます。 証明書で暗号化されたPDFドキュメントから暗号化を削除するには、公開鍵を参照する必要があります。 暗号化がPDFドキュメントから削除されると、そのドキュメントは保護されなくなります。

メモ

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

手順の概要

PDFドキュメントから証明書ベースの暗号化を削除するには、次の手順を実行します。

  1. プロジェクトファイルを含めます。
  2. 暗号化サービスクライアントを作成します。
  3. 暗号化されたPDFドキュメントを取得します。
  4. 暗号化を削除します。
  5. PDFドキュメントをPDFファイルとして保存します。

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

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

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

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

暗号化サービスクライアントの作成

プログラムによってEncryptionサービス操作を実行するには、Encryptionサービスクライアントを作成する必要があります。 Java Encryption Service APIを使用している場合は、EncrytionServiceClientオブジェクトを作成します。 WebサービスのEncryption Service APIを使用する場合は、EncryptionServiceServiceオブジェクトを作成します。

暗号化されたPDFドキュメントの取得

証明書ベースの暗号化を削除するには、暗号化されたPDFドキュメントを取得する必要があります。 暗号化されていないPDFドキュメントの暗号化を削除しようとすると、例外が発生します。 同様に、パスワードで暗号化されたドキュメントから証明書ベースの暗号化を削除しようとすると、例外が発生します。

暗号化の削除

暗号化されたPDFドキュメントから証明書ベースの暗号化を削除するには、暗号化されたPDFドキュメントと、PDFドキュメントの暗号化に使用されたキーに対応する秘密鍵の両方が必要です。 秘密鍵のエイリアス値は、暗号化されたPDFドキュメントから証明書ベースの暗号化を削除する際に指定します。 公開鍵について詳しくは、証明書によるPDFドキュメントの暗号化を参照してください。

メモ

秘密鍵はAEM Forms Trust Storeに保存されます。 証明書をそこに配置すると、エイリアス値が指定されます。

PDFドキュメントの保存

暗号化されたPDFドキュメントから証明書ベースの暗号化を削除した後、そのPDFドキュメントをPDFファイルとして保存できます。 ユーザーは、Adobe ReaderまたはAcrobatでPDFドキュメントを開くことができます。

関連トピック

Java APIを使用した証明書ベースの暗号化の削除

WebサービスAPIを使用した証明書ベースの暗号化の削除

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

接続プロパティの設定

EncryptionサービスAPIのクイックスタート

Java APIを使用して証明書ベースの暗号化を削除する

Encryption API(Java)を使用して、PDFドキュメントから証明書ベースの暗号化を削除します。

  1. プロジェクトファイルを含めます。

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

  2. 暗号化サービスクライアントを作成します。

    • 接続プロパティを含む ServiceClientFactory オブジェクトを作成します。
    • コンストラクターを使用してEncryptionServiceClientオブジェクトを渡し、ServiceClientFactoryオブジェクトを作成します。
  3. 暗号化されたPDFドキュメントを取得します。

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

    EncryptionServiceClientオブジェクトのremovePDFCertificateSecurityメソッドを呼び出し、次の値を渡すことで、PDFドキュメントから証明書ベースの暗号化を削除します。

    • 暗号化されたPDFドキュメントを含むcom.adobe.idp.Documentオブジェクトです。
    • PDfドキュメントの暗号化に使用されるキーに対応する秘密鍵のエイリアス名を指定するstring値。

    removePDFCertificateSecurityメソッドは、保護されていないPDFドキュメントを含むcom.adobe.idp.Documentオブジェクトを返します。

  5. PDFドキュメントを保存します。

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

関連トピック

手順の概要

クイックスタート(SOAPモード):Java APIを使用した証明書ベースの暗号化の削除

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

接続プロパティの設定

WebサービスAPIを使用して証明書ベースの暗号化を削除する

Encryption API(Webサービス)を使用して、証明書ベースの暗号化を削除します。

  1. プロジェクトファイルを含めます。

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

    メモ

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

  2. 暗号化サービスクライアントを作成します。

    • デフォルトのコンストラクターを使用してEncryptionServiceClientオブジェクトを作成します。

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

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

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

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

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

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

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

    • 暗号化されたPDFドキュメントを表すファイルストリームデータを含むBLOBオブジェクト。
    • PDfドキュメントの暗号化に使用される秘密鍵に対応する公開鍵のエイリアス名を指定するstring値。

    removePDFCredentialSecurityメソッドは、保護されていないPDFドキュメントを含むBLOBオブジェクトを返します。

  5. PDFドキュメントを保存します。

    • コンストラクターを呼び出し、保護されていないPDFドキュメントのファイルの場所を表す文字列値を渡して、System.IO.FileStreamオブジェクトを作成します。
    • removePDFPasswordSecurityメソッドで返されたBLOBオブジェクトの内容を格納するバイト配列を作成します。 BLOBオブジェクトのMTOMデータメンバーの値を取得して、バイト配列を設定します。
    • コンストラクターを呼び出し、System.IO.FileStreamオブジェクトを渡して、System.IO.BinaryWriterオブジェクトを作成します。
    • System.IO.BinaryWriterオブジェクトのWriteメソッドを呼び出し、バイト配列を渡すことにより、バイト配列の内容をPDFファイルに書き込みます。

関連トピック

手順の概要

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

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

パスワードの暗号化の削除

パスワードベースの暗号化をPDFドキュメントから削除して、ユーザーがパスワードを指定しなくてもAdobe ReaderまたはAcrobatでPDFドキュメントを開くことができるようにすることができます。 パスワードベースの暗号化をPDFドキュメントから削除すると、ドキュメントは保護されなくなります。

メモ

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

手順の概要

PDFドキュメントからパスワードベースの暗号化を削除するには、次の手順を実行します。

  1. プロジェクトファイルを含める
  2. 暗号化サービスクライアントを作成します。
  3. 暗号化されたPDFドキュメントを取得します。
  4. パスワードを削除します。
  5. PDFドキュメントをPDFファイルとして保存します。

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

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

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

  • adobe-livecycle-client.jar
  • adobe-usermanager-client.jar
  • adobe-encryption-client.jar
  • adobe-utilities.jar(AEM FormsをJBossにデプロイする場合に必要)
  • jbossall-client.jar(AEM FormsをJBossにデプロイする場合に必要)

暗号化サービスクライアントの作成

プログラムによってEncryptionサービス操作を実行するには、Encryptionサービスクライアントを作成する必要があります。 Java Encryption Service APIを使用している場合は、EncrytionServiceClientオブジェクトを作成します。 WebサービスのEncryption Service APIを使用する場合は、EncryptionServiceServiceオブジェクトを作成します。

暗号化されたPDFドキュメントの取得

パスワードベースの暗号化を削除するには、暗号化されたPDFドキュメントを取得する必要があります。 暗号化されていないPDFドキュメントの暗号化を削除しようとすると、例外が発生します。

パスワードの削除

暗号化されたPDFドキュメントからパスワードベースの暗号化を削除するには、暗号化されたPDFドキュメントと、PDFドキュメントから暗号化を削除するために使用されるマスターパスワード値の両方が必要です。 パスワードで暗号化されたPDFドキュメントを開くために使用されるパスワードは、暗号化の削除には使用できません。 PDFドキュメントがパスワードで暗号化される場合、マスターパスワードが指定されます。 (パスワードによるPDFドキュメントの暗号化を参照)。

PDFドキュメントの保存

EncryptionサービスでPDFドキュメントからパスワードベースの暗号化が削除されたら、そのPDFドキュメントをPDFファイルとして保存できます。 ユーザーは、パスワードを指定せずにAdobe ReaderまたはAcrobatでPDFドキュメントを開くことができます。

関連トピック

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

接続プロパティの設定

EncryptionサービスAPIのクイックスタート

PDFドキュメントのパスワードによる暗号化

Java APIを使用してパスワードベースの暗号化を削除する

Encryption API(Java)を使用して、PDFドキュメントからパスワードベースの暗号化を削除します。

  1. プロジェクトファイルを含めます。

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

  2. 暗号化サービスクライアントを作成します。

    • 接続プロパティを含む ServiceClientFactory オブジェクトを作成します。
    • コンストラクターを使用してEncryptionServiceClientオブジェクトを渡し、ServiceClientFactoryオブジェクトを作成します。
  3. 暗号化されたPDFドキュメントを取得します。

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

    EncryptionServiceClientオブジェクトのremovePDFPasswordSecurityメソッドを呼び出し、次の値を渡すことで、PDFドキュメントからパスワードベースの暗号化を削除します。

    • 暗号化されたPDFドキュメントを含むcom.adobe.idp.Documentオブジェクト。
    • PDFドキュメントから暗号化を削除するために使用されるマスターパスワード値を指定するstring値です。

    removePDFPasswordSecurityメソッドは、保護されていないPDFドキュメントを含むcom.adobe.idp.Documentオブジェクトを返します。

  5. PDFドキュメントを保存します。

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

関連トピック

クイックスタート(SOAPモード):Java APIを使用したパスワードベースの暗号化の削除

WebサービスAPIを使用してパスワードベースの暗号化を削除する

Encryption API(Webサービス)を使用して、パスワードベースの暗号化を削除します。

  1. プロジェクトファイルを含めます。

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

    メモ

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

  2. 暗号化サービスクライアントを作成します。

    • デフォルトのコンストラクターを使用してEncryptionServiceClientオブジェクトを作成します。

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

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

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

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

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

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

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

    • 暗号化されたPDFドキュメントを表すファイルストリームデータを含むBLOBオブジェクト。
    • PDFドキュメントから暗号化を削除するために使用されるパスワード値を指定するstring値です。 この値は、PDFドキュメントをパスワードで暗号化する場合に指定します。

    removePDFPasswordSecurityメソッドは、保護されていないPDFドキュメントを含むBLOBオブジェクトを返します。

  5. PDFドキュメントを保存します。

    • コンストラクターを呼び出し、保護されていないPDFドキュメントのファイルの場所を表す文字列値を渡して、System.IO.FileStreamオブジェクトを作成します。
    • removePDFPasswordSecurityメソッドで返されたBLOBオブジェクトの内容を格納するバイト配列を作成します。 BLOBオブジェクトのMTOMデータメンバーの値を取得して、バイト配列を設定します。
    • コンストラクターを呼び出し、System.IO.FileStreamオブジェクトを渡して、System.IO.BinaryWriterオブジェクトを作成します。
    • System.IO.BinaryWriterオブジェクトのWriteメソッドを呼び出し、バイト配列を渡すことにより、バイト配列の内容をPDFファイルに書き込みます。

関連トピック

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

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

暗号化されたPDFドキュメントのロック解除

パスワードで暗号化または証明書で暗号化されたPDFドキュメントのロックを解除してから、別のAEM Forms操作を実行する必要があります。 暗号化されたPDFドキュメントに対して操作を実行しようとすると、例外が生成されます。 暗号化されたPDFドキュメントのロックを解除した後、そのドキュメントに対して1つ以上の操作を実行できます。 これらの操作は、Acrobat Reader DC Extensions Serviceなどの他のサービスに属することができます。

メモ

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

手順の概要

暗号化されたPDFドキュメントのロックを解除するには、次の手順を実行します。

  1. プロジェクトファイルを含めます。
  2. 暗号化サービスクライアントを作成します。
  3. 暗号化されたPDFドキュメントを取得します。
  4. ドキュメントのロックを解除します。
  5. AEM Forms操作を実行します。

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

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

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

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

暗号化サービスクライアントの作成

プログラムによってEncryptionサービス操作を実行するには、Encryptionサービスクライアントを作成する必要があります。 Java Encryption Service APIを使用している場合は、EncrytionServiceClientオブジェクトを作成します。 WebサービスのEncryption Service APIを使用する場合は、EncryptionServiceServiceオブジェクトを作成します。

暗号化されたPDFドキュメントの取得

ロックを解除するには、暗号化されたPDFドキュメントを取得する必要があります。 暗号化されていないPDFドキュメントのロックを解除しようとすると、例外が発生します。

ドキュメントのロック解除

パスワードで暗号化されたPDFドキュメントのロックを解除するには、暗号化されたPDFドキュメントと、パスワードで暗号化されたPDFドキュメントを開くために使用されるパスワード値の両方が必要です。 この値は、PDFドキュメントをパスワードで暗号化する場合に指定します。 (パスワードによるPDFドキュメントの暗号化を参照)。

証明書で暗号化されたPDFドキュメントのロックを解除するには、暗号化されたPDFドキュメントと、PDFドキュメントの暗号化に使用された秘密鍵に対応する公開鍵のエイリアス値の両方が必要です。

AEM Forms操作の実行

暗号化されたPDFドキュメントのロックが解除された後、そのドキュメントに対して別のサービス操作(使用権限の適用など)を実行できます。 この操作は、Acrobat Reader DC Extensionsサービスに属しています。

関連トピック

Java APIを使用した暗号化されたPDFドキュメントのロック解除

WebサービスAPIを使用した暗号化されたPDFドキュメントのロック解除

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

接続プロパティの設定

EncryptionサービスAPIのクイックスタート

Java APIを使用して暗号化されたPDFドキュメントのロックを解除します

暗号化API(Java)を使用して暗号化されたPDFドキュメントのロックを解除します。

  1. プロジェクトファイルを含めます。

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

  2. 暗号化サービスクライアントを作成します。

    • 接続プロパティを含む ServiceClientFactory オブジェクトを作成します。
    • コンストラクターを使用してEncryptionServiceClientオブジェクトを渡し、ServiceClientFactoryオブジェクトを作成します。
  3. 暗号化されたPDFドキュメントを取得します。

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

    EncryptionServiceClientオブジェクトのunlockPDFUsingPasswordまたはunlockPDFUsingCredentialメソッドを呼び出して、暗号化されたPDFドキュメントのロックを解除します。

    パスワードで暗号化されたPDFドキュメントのロックを解除するには、unlockPDFUsingPasswordメソッドを呼び出して、次の値を渡します。

    • パスワードで暗号化されたPDFドキュメントを含むcom.adobe.idp.Documentオブジェクト。
    • パスワードで暗号化されたPDFドキュメントを開くために使用されるパスワード値を指定するstring値です。 この値は、PDFドキュメントをパスワードで暗号化する場合に指定します。

    証明書で暗号化されたPDFドキュメントのロックを解除するには、unlockPDFUsingCredentialメソッドを呼び出して、次の値を渡します。

    • 証明書で暗号化されたPDFドキュメントを含むcom.adobe.idp.Documentオブジェクト。
    • PDFドキュメントの暗号化に使用される秘密鍵に対応する公開鍵のエイリアス名を指定するstring値。

    unlockPDFUsingPasswordメソッドとunlockPDFUsingCredentialメソッドの両方で、操作を実行するために別のAEM Forms Javaメソッドに渡すcom.adobe.idp.Documentオブジェクトが返されます。

  5. AEM Forms操作を実行します。

    ロックが解除されたPDFドキュメントに対してAEM Forms操作を実行し、ビジネス要件を満たします。 例えば、ロックが解除されたPDFドキュメントに使用権限を適用する場合、unlockPDFUsingPasswordメソッドまたはunlockPDFUsingCredentialメソッドから返されたcom.adobe.idp.DocumentオブジェクトをReaderExtensionsServiceClientオブジェクトのapplyUsageRightsメソッドに渡します。

関連トピック

手順の概要

クイックスタート(SOAPモード):Java API (SOAPモード)を使用した暗号化されたPDFドキュメントのロック解除

PDFドキュメントへの使用権限の適用

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

接続プロパティの設定

WebサービスAPIを使用して暗号化されたPDFドキュメントのロックを解除します

Encryption API(Webサービス)を使用して、暗号化されたPDFドキュメントのロックを解除します。

  1. プロジェクトファイルを含めます。

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

    メモ

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

  2. 暗号化サービスクライアントを作成します。

    • デフォルトのコンストラクターを使用してEncryptionServiceClientオブジェクトを作成します。

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

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

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

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

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

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

    EncryptionServiceClientオブジェクトのunlockPDFUsingPasswordまたはunlockPDFUsingCredentialメソッドを呼び出して、暗号化されたPDFドキュメントのロックを解除します。

    パスワードで暗号化されたPDFドキュメントのロックを解除するには、unlockPDFUsingPasswordメソッドを呼び出して、次の値を渡します。

    • パスワードで暗号化されたPDFドキュメントを含むBLOBオブジェクト。
    • パスワードで暗号化されたPDFドキュメントを開くために使用されるパスワード値を指定するstring値です。 この値は、PDFドキュメントをパスワードで暗号化する場合に指定します。

    証明書で暗号化されたPDFドキュメントのロックを解除するには、unlockPDFUsingCredentialメソッドを呼び出して、次の値を渡します。

    • 証明書で暗号化されたPDFドキュメントを含むBLOBオブジェクト。
    • PDfドキュメントの暗号化に使用される秘密鍵に対応する公開鍵のエイリアス名を指定するstring値。

    unlockPDFUsingPasswordメソッドとunlockPDFUsingCredentialメソッドの両方で、操作を実行するために別のAEM Formsメソッドに渡すcom.adobe.idp.Documentオブジェクトが返されます。

  5. AEM Forms操作を実行します。

    ロックが解除されたPDFドキュメントに対してAEM Forms操作を実行し、ビジネス要件を満たします。 例えば、ロックが解除されたPDFドキュメントに使用権限を適用する場合、unlockPDFUsingPasswordメソッドまたはunlockPDFUsingCredentialメソッドから返されたBLOBオブジェクトをReaderExtensionsServiceClientオブジェクトのapplyUsageRightsメソッドに渡します。

関連トピック

手順の概要

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

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

暗号化の種類の決定

Java Encryption Service APIまたはWebサービスのEncryption Service APIを使用して、PDFドキュメントを保護する暗号化の種類をプログラムで判断できます。 PDFドキュメントが暗号化されているかどうか、および暗号化されている場合は暗号化タイプを動的に判断する必要が生じる場合があります。 例えば、PDFドキュメントをパスワードベースの暗号化とパスワードポリシーのどちらで保護するかをRights Managementできます。

PDFドキュメントは、次の暗号化タイプで保護できます。

  • パスワードベースの暗号化
  • 証明書ベースの暗号化
  • ポリシーサービスによって作成されたRights Management
  • 別のタイプの暗号化
メモ

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

手順の概要

PDFドキュメントを保護する暗号化の種類を判断するには、次の手順を実行します。

  1. プロジェクトファイルを含めます。
  2. 暗号化サービスクライアントを作成します。
  3. 暗号化されたPDFドキュメントを取得します。
  4. 暗号化の種類を決定します。

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

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

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

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

サービスクライアントの作成

プログラムによってEncryptionサービス操作を実行するには、Encryptionサービスクライアントを作成する必要があります。 Java Encryption Service APIを使用している場合は、EncrytionServiceClientオブジェクトを作成します。 WebサービスのEncryption Service APIを使用する場合は、EncryptionServiceServiceオブジェクトを作成します。

暗号化されたPDFドキュメントの取得

PDFドキュメントを保護する暗号化の種類を確認するには、PDFドキュメントを取得する必要があります。

暗号化の種類の決定

PDFドキュメントを保護する暗号化の種類を指定できます。 PDFドキュメントが保護されていない場合、Encryptionサービスによって、PDFドキュメントが保護されていないことを通知されます。

関連トピック

Java APIを使用した暗号化タイプの決定

WebサービスAPIを使用した暗号化の種類の決定

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

接続プロパティの設定

EncryptionサービスAPIのクイックスタート

ポリシーを使用したドキュメントの保護

Java APIを使用して暗号化タイプを決定します。

暗号化API(Java)を使用して、PDFドキュメントを保護する暗号化の種類を決定します。

  1. プロジェクトファイルを含めます。

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

  2. サービスクライアントを作成します。

    • 接続プロパティを含む ServiceClientFactory オブジェクトを作成します。
    • コンストラクターを使用してEncryptionServiceClientオブジェクトを渡し、ServiceClientFactoryオブジェクトを作成します。
  3. 暗号化されたPDFドキュメントを取得します。

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

    • EncryptionServiceClientオブジェクトのgetPDFEncryptionメソッドを呼び出し、PDFドキュメントを含むcom.adobe.idp.Documentオブジェクトを渡すことで、暗号化の種類を決定します。 このメソッドは、EncryptionTypeResultオブジェクトを返します。
    • EncryptionTypeResultオブジェクトのgetEncryptionTypeメソッドを呼び出します。 このメソッドは、暗号化タイプを指定するEncryptionType列挙値を返します。 例えば、PDFドキュメントがパスワードベースの暗号化で保護されている場合、このメソッドはEncryptionType.PASSWORDを返します。

関連トピック

手順の概要

クイックスタート(SOAPモード):Java APIを使用した暗号化タイプの決定

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

接続プロパティの設定

WebサービスAPIを使用して暗号化の種類を決定します

Encryption API(Webサービス)を使用して、PDFドキュメントを保護する暗号化の種類を決定します。

  1. プロジェクトファイルを含めます。

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

    メモ

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

  2. サービスクライアントを作成します。

    • デフォルトのコンストラクターを使用してEncryptionServiceClientオブジェクトを作成します。

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

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

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

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

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

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

    • EncryptionServiceClientオブジェクトのgetPDFEncryptionメソッドを呼び出し、PDFドキュメントを含むBLOBオブジェクトを渡します。 このメソッドは、EncryptionTypeResultオブジェクトを返します。
    • EncryptionTypeResultオブジェクトのencryptionTypeデータメソッドの値を取得します。 例えば、PDFドキュメントがパスワードベースの暗号化で保護されている場合、このデータメンバーの値はEncryptionType.PASSWORDになります。

関連トピック

手順の概要

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

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

このページ