PASSWORD ベースタイプ
PASSWORD ベースタイプは、暗号化されたキーストアに基づく値です。
ThingWorx 8.2 での変更
ThingWorx 8.2 では、PASSWORD ベースタイプのセキュリティが向上しました。PASSWORD ベースタイプが、暗号化されたキーストアに基づく値に変更されました。この変更は、パスワードのインポートおよびエクスポート時に影響が生じる可能性があります。最良事例について以下で説明します。
* 
新しい PASSWORD ベースタイプは強化されたセキュリティモデルであるため、一部の Edge エージェントとは互換性がありません。
今回の変更の前に C SDK、.NET SDK、EMS、iOS SDK はパスワードにアクセスできませんでしたが、その動作はそのまま維持されます。
ThingWorx 8.2 より前のバージョンでは、Java SDK と Android SDK にパスワードを受信する機能があり、暗号化された値が Edge に到達した後にパスワードを復号するライブラリが含まれていました。今回の変更により、暗号化された値は受信できなくなり、復号もできなくなりました。PASSWORD ベースタイプの値が Edge に送信された場合、Edge がパスワードを復号しようとすると、Java および Android SDK でエラーがトリガーされます。
JSDK 6.1 より前のエラー:
[O: c.t.t.d.u.ValueCollectionSerializer] [T: main] Error reading value collection data: Unable to read primitive value from stream : Decrypt ERROR: null JSDK
JSDK 6.1 以降のエラー:
[L: ERROR] [O: c.t.t.d.u.ValueCollectionSerializer] [T: main] Error reading value collection data: Unable to read primitive value from stream : java.lang.IllegalArgumentException: No key store file path specified
* 
PASSWORD ベースタイプを、データテーブルのプライマリキーとして使用しないでください。
データテーブルおよびストリームにパスワードを追加する場合の最良事例
AddEntry サービス (たとえば、AddIntegerStreamEntry) を使用して Composer または REST API 経由でデータテーブルまたはストリームにエントリを追加する場合は、EncryptionServices.encryptPropertyValue を使用してパスワード暗号化する必要があります。次に例を示します:
// test password value
var test_password = "test_123"
// values:INFOTABLE(Datashape: test_shape)
var values = Things["test_table"].CreateValues();

var params = {
data: test_password /* STRING */
};
values.p1 = Resources["EncryptionServices"].EncryptPropertyValue(params);
values.s1 = "test_string"; //STRING [Primary Key]

var params = {
source : me.name,
values : values
};
インポートとエクスポートのパスワードの最良事例
パスワードをインポートおよびエクスポートする場合には、デフォルトのエクスポートシステムを使用し、インポートを実行するシステムに同じキーストアがインストールされていることを確認します。
パスワードのプレーンテキストエクスポートが必要な場合 (キーローテーションのみに推奨)、エクスポートは REST API 経由で行う必要があり、機密情報として処理する必要があります。
* 
警告: プレーンテキストのパスワードをエクスポートする場合には、適切な方法でファイルが保護されていることを確認します。プレーンテキストのエクスポートには、組み込みセキュリティは含まれません。
プレーンテキストのパスワードを含む REST API 呼び出しの例:
GET /Thingworx/Exporter/Users/test HTTP/1.1
Host: localhost:8080
Accept: text/xml
Content-Type: application/json
universal: password
Authorization: Basic XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX==
* 
パスワードをデータテーブルのプライマリキーとしてエクスポートしないでください。
* 
暗号化キー (キーストア) が失われると、暗号化されたデータが失われます。
パスワードのキーローテーションの最良事例
キーローテーションの最良事例については、 http://nvlpubs.nist.gov/nistpubs/SpecialPublications/NIST.SP.800-57Pt3r1.pdf を参照してください。
フェデレーションシナリオのパスワードの最良事例
フェデレーションシナリオでパスワードをパブリッシングまたは購読するときには、暗号化と復号化に同じパスワード暗号化キーを使用した場合のみ成功します。キーが異なると、フェデレーションサーバーで復号に失敗し、プロパティが読み込まれません。同じ暗号化キーを使用しようとした場合、エラーがログ記録されます。