第74章 jasypt


jasypt コンポーネント

Camel 2.5 で利用可能
Jasypt は、暗号化と復号化を容易にする簡略化された暗号化ライブラリーです。Camel は Jasypt と統合し、プロパティー ファイルの機密情報を暗号化できるようにします。camel-jasypt をクラスパスでドロップすると、暗号化された値は Camel によって自動的に復号化されます。これにより、人間はユーザー名とパスワードなどの機密情報を簡単に特定できなくなります。
Maven ユーザーは、このコンポーネントの pom.xml に以下の依存関係を追加する必要があります。
<dependency>
    <groupId>org.apache.camel</groupId>
    <artifactId>camel-jasypt</artifactId>
    <version>x.x.x</version>
    <!-- use the same version as your Camel core version -->
</dependency>
Copy to Clipboard Toggle word wrap

Camel on EAP デプロイメント

このコンポーネントは、Red Hat JBoss Enterprise Application Platform (JBoss EAP) コンテナー上で簡素化されたデプロイメントモデルを提供する Camel on EAP (Wildfly Camel) フレームワークによってサポートされます。このモデルの詳細は、Deploying into a Web Server の Apache Camel on JBoss EAP の章を参照してください

ツール

Jasypt コンポーネントは、値を暗号化または復号化するためのコマンドラインツールを少し提供します。
コンソールは構文と提供するオプションを出力します。
Apache Camel Jasypt takes the following options

  -h or -help = Displays the help screen
  -c or -command <command> = Command either encrypt or decrypt
  -p or -password <password> = Password to use
  -i or -input <input> = Text to encrypt or decrypt
  -a or -algorithm <algorithm> = Optional algorithm to use
Copy to Clipboard Toggle word wrap
たとえば、値 tiger を暗号化するには、以下のパラメーターで実行します。apache camel kit で、lib フォルダーに移動し、以下の java cmd を実行します。<CAMEL_HOME> は、Camel ディストリビューションをダウンロードして展開します。
$ cd <CAMEL_HOME>/lib
$ java -jar camel-jasypt-2.5.0.jar -c encrypt -p secret -i tiger
Copy to Clipboard Toggle word wrap
以下の結果を出力します。
Encrypted text: qaEEacuW7BUti8LcMgyjKw==
Copy to Clipboard Toggle word wrap
つまり、暗号化された表現の qaEEacuW7BUti8LcMgyjKw== は、秘密 のマスターパスワードを知っている場合に tiger に復号化できます。ツールを再度実行すると、暗号化された値は別の結果を返します。ただし、値を復号すると、常に正しい元の値が返されます。
そのため、以下のパラメーターを使用して ツールを実行してテストできます。
$ cd <CAMEL_HOME>/lib
$ java -jar camel-jasypt-2.5.0.jar -c decrypt -p secret -i qaEEacuW7BUti8LcMgyjKw==
Copy to Clipboard Toggle word wrap
以下の結果を出力します。
Decrypted text: tiger
Copy to Clipboard Toggle word wrap
次に、プロパティー ファイルで暗号化された値を使用するのが理想です。パスワード値が暗号化され、値に ENC (value here)を囲むトークンがあることに注意してください。
# refer to a mock endpoint name by that encrypted password
cool.result=mock:{{cool.password}}

# here is a password which is encrypted
cool.password=ENC(bsW9uV37gQ0QHFu7KO03Ww==)
Copy to Clipboard Toggle word wrap

Camel 2.5 および 2.6 のツールの依存関係

ツールには、接頭辞が optional/camel-jasyptMANIFEST.MF ファイルに登録されたクラスパスに以下の JAR が必要です。したがって、上記の java cmd が、オプション の ディレクトリーの Apache Distribution から必要な JAR を選択できる理由です。
jasypt-1.6.jar commons-lang-2.4.jar commons-codec-1.4.jar icu4j-4.0.1.jar
Copy to Clipboard Toggle word wrap
Java 1.5 ユーザー
icu4j-4.0.1.jar は、JDK 1.5 で実行する場合にのみ必要になります。
この JAR は Apache Camel によって配布されず、手動でダウンロードして Camel ディストリビューションの lib/optional ディレクトリーにコピーします。Apache Central Maven リポジトリー からダウンロードできます

Camel 2.7 以降のツールの依存関係

jasypt 1.7 以降は完全にスタンドアロンになったため、追加の JAR は必要ありません。

URI オプション

以下のオプションは Jasypt コンポーネント専用です。
Expand
名前 デフォルト値 Description
password null 文字列 復号化に使用するマスターパスワードを指定します。このオプションは必須です。詳細は、こちらを参照してください。
algorithm null 文字列 使用する任意のアルゴリズムの名前。

マスターパスワードの保護

Jasypt が使用するマスターパスワードを提供する必要があります。これにより、値を復号できます。ただし、このマスターパスワードを開いた状態にすることは理想的な解決策ではない場合があります。そのため、JVM システムプロパティーまたは OS 環境設定として指定できます。これを選択すると、パスワード オプションはこれを指示する接頭辞をサポートします。sysenv: 指定されたキーを使用して OS システム環境を検索することを意味します。sys: JVM システムプロパティーを検索することを意味します。
たとえば、アプリケーションを起動する前にパスワードを指定できます。
$ export CAMEL_ENCRYPTION_PASSWORD=secret
Copy to Clipboard Toggle word wrap
次に、起動スクリプトの実行など、アプリケーションを起動します。
アプリケーションが稼働している場合、環境の設定を解除できます。
$ unset CAMEL_ENCRYPTION_PASSWORD
Copy to Clipboard Toggle word wrap
パスワード オプションは、password=sysenv:CAMEL_ENCRYPTION_PASSWORD のように定義することが関係します。

Java DSL を使用した例

Java DSL では、 Jasypt PropertiesParser インスタンスとして設定し、以下のように Properties コンポーネントに設定する必要があります。
// create the jasypt properties parser
JasyptPropertiesParser jasypt = new JasyptPropertiesParser();
// and set the master password
jasypt.setPassword("secret");

// create the properties component
PropertiesComponent pc = new PropertiesComponent();
pc.setLocation("classpath:org/apache/camel/component/jasypt/myproperties.properties");
// and use the jasypt properties parser so we can decrypt values
pc.setPropertiesParser(jasypt);

// add properties component to camel context
context.addComponent("properties", pc);
Copy to Clipboard Toggle word wrap
次に、プロパティーファイル myproperties.properties には、以下のような暗号化された値が含まれます。パスワード値が暗号化され、値に ENC (value here)を囲むトークンがあることに注意してください。
# refer to a mock endpoint name by that encrypted password
cool.result=mock:{{cool.password}}

# here is a password which is encrypted
cool.password=ENC(bsW9uV37gQ0QHFu7KO03Ww==)
Copy to Clipboard Toggle word wrap

Spring XML の例

Spring XML では、以下に示す JasyptPropertiesParser を設定する必要があります。次に、Camel Properties コンポーネントはプロパティーパーサーとして jasypt を使用するように指示されます。つまり、Jasypt はプロパティーで検索された値を復号化する機会を持ちます。
<!-- define the jasypt properties parser with the given password to be used -->
<bean id="jasypt" class="org.apache.camel.component.jasypt.JasyptPropertiesParser">
    <property name="password" value="secret"/>
</bean>

<!-- define the camel properties component -->
<bean id="properties" class="org.apache.camel.component.properties.PropertiesComponent">
    <!-- the properties file is in the classpath -->
    <property name="location" value="classpath:org/apache/camel/component/jasypt/myproperties.properties"/>
    <!-- and let it leverage the jasypt parser -->
    <property name="propertiesParser" ref="jasypt"/>
</bean>
Copy to Clipboard Toggle word wrap
Properties コンポーネントは、以下に示す < camelContext> タグ内で インライン化することもできます。propertiesParserRef 属性を使用して Jasypt を参照する方法に注意してください。
<!-- define the jasypt properties parser with the given password to be used -->
<bean id="jasypt" class="org.apache.camel.component.jasypt.JasyptPropertiesParser">
    <!-- password is mandatory, you can prefix it with sysenv: or sys: to indicate it should use
         an OS environment or JVM system property value, so you dont have the master password defined here -->
    <property name="password" value="secret"/>
</bean>

<camelContext xmlns="http://camel.apache.org/schema/spring">
    <!-- define the camel properties placeholder, and let it leverage jasypt -->
    <propertyPlaceholder id="properties"
                         location="classpath:org/apache/camel/component/jasypt/myproperties.properties"
                         propertiesParserRef="jasypt"/>
    <route>
        <from uri="direct:start"/>
        <to uri="{{cool.result}}"/>
    </route>
</camelContext>
Copy to Clipboard Toggle word wrap

関連項目

トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。 最新の更新を見る.

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

Theme

© 2025 Red Hat