Basistyp "Password"
Der Basistyp PASSWORD ist ein verschlüsselter Keystore-basierter Wert.
Änderungen in ThingWorx 8.2
In ThingWorx 8.2 wurde die Sicherheit des Basistyps PASSWORD verbessert. Der Basistyp PASSWORD wurde in einen verschlüsselten Keystore-basierten Wert geändert. Diese Änderung hat möglicherweise Auswirkungen beim Importieren und Exportieren von Passwörtern. Optimale Vorgehensweisen werden unten beschrieben.
* 
Einige Edge-Agents sind aufgrund des stärkeren Sicherheitsmodells nicht mit dem neuen PASSWORD-Basistyp kompatibel.
C SDK, .NET SDK, EMS und iOS SDK konnten vor dieser Änderung nicht auf Passwörter zugreifen. Dies gilt weiterhin.
Vor ThingWorx 8.2 boten das Java- und das Android-SDK die Funktion zum Abrufen von Passwörtern und enthielten Bibliotheken, um die Passwörter zu entschlüsseln, sobald die verschlüsselten Werte das Edge erreichten. Mit dieser Änderung können die verschlüsselten Werte weder abgerufen noch entschlüsselt werden. Wenn der Password-Basistyp an das Edge gesendet wird, löst er einen Fehler in den Java- und Android-SDKs aus, wenn das Edge versucht, das Passwort zu entschlüsseln.
JSDK-Fehler vor 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-Fehler ab 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
* 
Der Basistyp PASSWORD sollte nicht als primärer Schlüssel für eine Datentabelle verwendet werden.
Optimale Vorgehensweisen beim Hinzufügen von Passwörtern zu Datentabellen und Streams
Beim Hinzufügen von Einträgen in einer Datentabelle oder einem Stream mithilfe der AddEntry-Dienste (z.B. AddIntegerStreamEntry) über Composer oder die REST-API müssen Passwörter mit EncryptionServices.encryptPropertyValue verschlüsselt werden. Beispiel:
// 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
};
Optimale Vorgehensweisen zum Importieren und Exportieren von Passwörtern
Verwenden Sie beim Importieren und Exportieren von Passwörtern das Standard-Exportsystem, und stellen Sie sicher, dass derselbe Keystore auf dem System installiert wird, das den Import durchführt.
Wenn ein Nur Text-Export von Passwörtern erforderlich ist (nur für Schlüsselrotation empfohlen), muss der Export über die REST-API erfolgen und sollte als sensible Information behandelt werden.
* 
Achtung: Stellen Sie beim Export von Nur Text-Passwörtern sicher, dass die Datei angemessen aufbewahrt wird. Nur Text-Exporte bieten keine integrierte Sicherheit.
Ein Beispiel für einen REST-API-Aufruf mit einem Nur Text-Passwort:
GET /Thingworx/Exporter/Users/test HTTP/1.1
Host: localhost:8080
Accept: text/xml
Content-Type: application/json
universal: password
Authorization: Basic XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX==
* 
Exportieren Sie Passwörter nicht als primäre Schlüssel in Datentabellen.
* 
Wenn der Verschlüsselungsschlüssel (Keystore) verloren geht, gehen alle verschlüsselten Daten verloren.
Optimale Vorgehensweisen für Passwortschlüsselrotation
Optimale Vorgehensweisen für die Schlüsselrotation finden Sie unter http://nvlpubs.nist.gov/nistpubs/SpecialPublications/NIST.SP.800-57Pt3r1.pdf.
Optimale Vorgehensweisen für Passwörter in einem Verbundszenario
Beim Veröffentlichen oder Abonnieren von Passwörtern in einem Verbundszenario ist die Verschlüsselung und Entschlüsselung nur erfolgreich, wenn Sie denselben Passwortverschlüsselungsschlüssel verwenden. Wenn die Schlüssel unterschiedlich sind, ist die Entschlüsselung auf dem Verbundserver nicht erfolgreich, und die Eigenschaft wird nicht gelesen. Wenn Sie versuchen, denselben Verschlüsselungsschlüssel zu verwenden, wird ein Fehler protokolliert.
War dies hilfreich?