高度なカスタマイズ > ビジネスロジックのカスタマイズ > 暗号化されたパスワード > カスタマイズポイント
  
カスタマイズポイント
パラメータの使用を必要とするソリューションエレメントごとに、使用可能なすべてのパラメータを説明するテーブルを含んでいる第 2 レベルのセクションを提供します。これは、API メソッド、XML 要素、JSP タグなどに使用できます。次のテンプレートを使用して、テーブルを作成します。
WTKeyStore.java API: public WTKeyStore (final String product_root)
パラメータ
デフォルト値
有効な値
必須
説明
product_root
なし
文字列
あり
<Windchill> または <adapter_ホーム> のいずれかのホーム場所の完全修飾パスである文字列
WTKeyStore.java API: public String get(final String key)
パラメータ
デフォルト値
有効な値
必須
説明
key
なし
文字列
あり
Java キーストアから値を読み込むのに使用するキーである文字列
WTKeyStore.java API: public put (final String key, final String value)
パラメータ
デフォルト値
有効な値
必須
説明
key
なし
文字列
あり
Java キーストアから値を読み込むのに使用するキーである文字列
value
なし
文字列
あり
Java キーストアに配置する値である文字列
WTKeyStore.java API: public String remove (final String key)
パラメータ
デフォルト値
有効な値
必須
説明
key
なし
文字列
あり
Java キーストアから除去する値のキーである文字列
WTKeyStoreUtil.java API: public static String decryptProperty (final String property_value, final String product_root)
パラメータ
デフォルト値
有効な値
必須
説明
property_value
なし
文字列
あり
解読が必要な値である文字列
product_root
なし
文字列
あり
<Windchill> または <adapter_ホーム> のいずれかのホーム場所の完全修飾パスである文字列
WTKeyStoreUtil.java API: public static String decryptProperty (final String property_name, final String property_value, final String product_root) )
パラメータ
デフォルト値
有効な値
必須
説明
property_name
なし
文字列
あり
プロパティ名である文字列
property_value
なし
文字列
あり
解読が必要な値である文字列
product_root
なし
文字列
あり
<Windchill> または <adapter_ホーム> のいずれかのホーム場所の完全修飾パスである文字列
WTKeyStoreUtil.java API: private static String getEncryptionPropertiesRegExList (final String product_root)
パラメータ
デフォルト値
有効な値
必須
説明
product_root
なし
文字列
あり
<Windchill> または <adapter_ホーム> のいずれかのホーム場所の完全修飾パスである文字列
EncryptPasswords.xml API: Ant –f EncryptPasswords.xml –projecthelp を実行して、使用可能なすべてのコマンドとその使用方法を確認します。
パラメータ
デフォルト値
有効な値
必須
説明
wt.home
env.WT_HOME
env.wt_home
../../../.
デフォルト値は環境変数 <WT_ホーム>、<WT_ホーム>、そして最後には基本パス ../../../ の順序で設定されます。
文字列
いいえ
<WT_ホーム> または <adapater_ホーム> のいずれかのホーム場所の完全修飾パスである文字列
制限事項
暗号化されたプロパティは、サーバー側からアクセスできる必要があります。これは、暗号化メカニズムが、セキュリティ上の理由でクライアントから Web でアクセスできない場所に依存しているからです。プロパティの暗号化と解読のパフォーマンスオーバーヘッドは最小限です。ただし、Java キーストアの実装はシングルトンパターンに依存しているため、キーストアへのアクセスが同期化されていることに注意してください。
サンプルコード
Windchill が値を暗号化するための Java キーストアの作成:
try
{
WTKeyStore keyStore = new
WTKeyStore(WTProperties.getLocalProperties(). getProperty("wt.home"));
}catch(IOException e){
logger.error("Could not load keystore", e);
}
キーストア内の値の暗号化:
String value = “encrypted.wt.pom.dbPassword”;
String property = “wt.pom.dbPassword”;
try
{
WTKeyStore keyStore = new
WTKeyStore(WTProperties.getLocalProperties(). getProperty("wt.home"));
// encrypt property value
keyStore.put(property, value);
} catch (IOException ioe) {
logger.error("Error creating keystore: ", ioe);
} catch (NullPointerException npe) {
logger.error("Could not add the encrypted value to the keystore: ", npe);
}
プロパティの解読:
String product_root = WTProperties.getLocalProperties(). getProperty(“wt.home”);
String value = “encrypted.wt.pom.dbPassword”;
String property = “wt.pom.dbPassword”;
// decrypt encrypted values
value = WTKeyStoreUtil.decryptProperty(property, value, product_root);
/* value can now be used as normal as it will contain the decrypted value */
値を解読するために使用できる第 2 の手段:
String value = “encrypted.wt.pom.dbPassword”;
try
{
WTKeyStore keyStore = new
WTKeyStore(WTProperties.getLocalProperties(). getProperty("wt.home"));
// decrypt encrypted values
String ks_value = keyStore.get(value);
if(ks_value != null)
{
value = ks_value;
}
}catch(IOException e){
logger.error("Could not load keystore", e);
}
動的プロパティを暗号化するための新しい正規表現の追加:
/* This code currently exists in WTKeystoreUtil.java. except where
* where denoted “NEW”
*/
private static final String NEW_REGULAR_EXPRESSION = “<your regular
expression goes here>”; // NEW

private static List<String> getEncryptionPropertiesRegExList(final
String product_root) {
List<String> propertiesList = new ArrayList<String>();

if(isCompletePropertiesListFile(product_root)) {
/*
* add a hardcoded list of dynamic properties that will
* utilize regular expressions to determine what to encrypt
* for dynamic property names.
*/
propertiesList.add(WT_FEDERATION_DEFAULTAUTHORIZATION);
propertiesList.add(NEW_REGULAR_EXPRESSION); // NEW
logger.debug("Full property list found, returning regex
list of size=" + propertiesList.size());
} else {
logger.debug("Full property list not found, return empty
regex list");
}
return propertiesList;
}
これにより、プロパティ名のパターンを検索するための新しい正規表現が追加されます。ここでも、正規表現を作成するときには、注意が必要です。手順 - .xconf が管理する単一値の静的プロパティの暗号化のトピックの「手順 - .xconf が管理する単一値の動的プロパティの暗号化」のセクションを参照してください。
Windchill コードでの使用例
wt.dataservice.DSPropertiesServer.java
この Java クラスは、DSProperties.java とともに使用されて、暗号化されている可能性のあるプロパティ値を解読します。このクラスは、DSPropertiesServer がクライアント側ではなくサーバー上にあることを、反射を使用して確認します。
com.ptc.wvs.server.cadagent.Inifile.java
この Java クラスは、.xconf ファイルが管理しないプロパティを解読するための手段を実装します。
com.ptc.windchill.keystore.WTKeyStoreUtilWVS.java
この Java クラスは、.xconf ファイルが管理しないプロパティを暗号化するための手段を実装します。
com.ptc.windchill.keystore.WTKeyStoreUtil.java
この Java クラスは、.xconf ファイルが管理する動的プロパティを暗号化するための手段を実装します。