高度なカスタマイズ > ビジネスロジックのカスタマイズ > 暗号化されたパスワード > 暗号化されたパスワード > ソリューション > 手順 – .xconf が管理する単一値の動的プロパティの暗号化
  
手順 – .xconf が管理する単一値の動的プロパティの暗号化
xconf が管理し、動的な (変更される) プロパティ名を持ち、単一値を含んでいる新しいプロパティは、Windchill がこれらのプロパティの定義済みの暗号化を行うために依存するのと同じ方法で暗号化できます。
動的プロパティ名とは、コードでオンザフライで構築され、所定の派生情報 (ホスト名など) に依存するプロパティ名のことです。
動的プロパティを暗号化するときには、注意が必要です。動的プロパティの暗号化は、プロパティが動的であるため、正規表現を使用して行います。したがって、プロパティを暗号化するために使用する正規表現は、暗号化の対象であるプロパティのみを暗号化するように、可能なかぎり狭義である必要があります。使用する正規表現が広義であると、必要な解読コードがまだないほかのプロパティも暗号化されるおそれがあります。
プロパティ値の暗号化
(.xconf が管理する新しいプロパティをすでに作成していることを前提としています)
1. <Windchill>/bin/adminTools/sip/validProperties.list ファイルを編集し、最後のファイルエントリの下の新しい行にプロパティ名を追加します。これにより、このトークンを使用して正規表現と一致するプロパティが暗号化されることが暗号化メカニズムに通知されます。一貫性を保つため、このトークンはプロパティを検索するために使用する正規表現と似ている必要があります。
2. 次に、private Static List<String> getEncryptionPropertiesRegExList(final String productRoot) メソッドを拡張することによって WTKeyStore.java の実装を追加する必要があります。このメソッドの実装により、プロパティ名を検索するために使用する正規表現の集合が生成されます。正規表現と一致するプロパティ名が検索されると、そのプロパティ値が暗号化されます。
このメソッドの実装をオーバーライドするには、カスタム実装を使用します。
3. <Windchill>/bin/adminTools/sip/EncryptPasswords.xml ファイルを変更するには、さらに作業を行う必要があります。このファイル内の特定の Ant ターゲットがプロパティ名の入力を検証します。前のステップで追加した正規表現を検証するためには、-validInput プライベートターゲットを更新する必要もあります。このファイルの現在の実装は、これを行う方法のガイダンスとして参照できます。
* 
この値に依存するコードは、適切に値を解読するように更新する必要があります。
プロパティ値の解読
1. プロパティ値を返すメソッドが上書きされる場合、プロパティ値を読み込む Windchill の基本クラスを拡張するすべてのコードを更新する必要があります。プロパティ値を取得して使用するカスタムコードでは、以下を使用して暗号化された値を解読できます。
プロパティ値が暗号化されている場合、com.ptc.windchill.keystore.WTKeyStoreUtil はプロパティ値の解読された値を取得するために API を提供します。API は、public static String decryptProperty(String property_name, String property_value, String product_root) です。
この API を使用するためのコード例は次のとおりです。
final String encrypted_value = “encrypted.wt.federation.defaultAuthorization.machine123.subnet.net”;
inal String property = “wt.federation.defaultAuthorization.machine123.subnet.net”;
inal String PATH = “D:\ptc\Windchill\”;
String decrypted = com.ptc.windchill.keystore.WTKeyStoreUtil.decryptProperty(property,encrypted_value, PATH);
解読された文字列は解読された値を含み、文字列に依存するコード内のどこかで適切に使用されます。
property_name は値の解読対象のプロパティ名、property_value は現在暗号化されている値、product_root は <Windchill> (または、アダプタインストールの <アダプタホーム>) の完全修飾パスです。