XML-APIs
XML-APIs können nach dem Aufruf verwendet werden GetAsXmlContent() Entweder auf Anforderung Objekt oder ein ParameterWert Eigenschaft.
- Rufen Sie An GetAsXmlContent() Auf Anforderung Objekt oder ParameterWert Eigenschaft. Gibt ein iterfähiges Objekt von zurück XMLInhalt Zugrunde liegende Klasse.
- Rufen Sie An GetIterator() Oder GetIterator (Zeichenfolgen-XPath) Auf XMLInhalt Objekt. Dies gibt einen zurück XMLElementIterator Objekt, das zum Iterieren über XML-Elemente verwendet werden kann.
- Rufen Sie an HasNext() Methode auf XMLElementIterator Objekt, um zu bestimmen, ob ein anderes Element verfügbar ist.
- Rufen Sie An Next() Auf XMLElementIterator Objekt, um das nächste XML-Element zurückzugeben. Sie können nicht anrufen Next() Ohne ersten Anruf HasNext() .
- Rufen Sie An WertFor(Zeichenfolge tableName, Zeichenfolge feldName) Im XML-Element. Diese Methode teilt dem Proxy mit, dass der Wert für dieses Element dem angegebenen Feld in der angegebenen Tabelle zugeordnet ist. Der Proxy überprüft dann, ob das Feld verschlüsselt werden muss.Hinweis:Um zu bestimmen, ob Sie anrufen möchten WertFor(Zeichenfolge tableName, Zeichenfolge feldName) Für ein XML-Element können Sie verwenden GetName() Methode zum Rückgeben des Namens des Elements.
Zuordnung zu einem bekannten Tabellenfeld in der Instanz
In diesem Beispiel wird die XML-Nutzlast in der Instanz verarbeitet, um Datensätze in die Incident-Tabelle einzufügen. Das Beschreibungsfeld füllt „short_description“ für den Incident aus.
<data>
<record>
<name>'Test Record 1'</name>
<description>'Test Record 1 Description'</description>
<tag>critical</tag>
</record>
<record>
<name>'Test Record 2'</name>
<description>'Test Record 2 Description'</description>
<tag>security</tag>
</record>
</data>Die folgende Verschlüsselungsregelaktion kann angewendet werden:
function sampleXmlAction1() {
var xmlContent = request.getAsXmlContent();
// This loop iterates over all description tags that match the given path
var xmlElementIterator = xmlContent.getIterator('data/record/description');
while (xmlElementIterator.hasNext()) {
var xmlElement = xmlElementIterator.next();
xmlElement.valueFor('incident', 'short_decription');
}
}Diese Aktion wird durch iteriert Beschreibung Taggt und fordert den Proxy-Server auf, die Werte zu verschlüsseln und in Incident.short_description in der Instanz einzufügen.
Zuordnung zu einem unbekannten Tabellenfeld in der Instanz
In diesem Beispiel wird die Regel über iteriert Datensatz Tags, aber weiß nicht, welche Tags innerhalb von erwartet werden sollen Datensatz Tag. Es ist nur bekannt, dass die Tags innerhalb von Datensatz Tags stimmen mit den Namen der Spalten überein, die im Parameter „Tabellen-URL“ angegeben sind.
Die Regel gibt auch an, dass, wenn die Tabelle „Incident“ ist, die Daten in der Beschreibung Tag muss verschlüsselt und im Feld „short_description“ in der Instanz gespeichert werden.
function sampleXmlAction2() {
var xmlContent = request.getAsXmlContent();
var tableName = request.urlParam.table;
// This first iterator will iterate over all record elements
var xmlElementIterator = xmlContent.getIterator('data/record');
while (xmlElementIterator.hasNext()) {
encryptFieldsInRecord(xmlElementIterator.next());
}
}
function encryptFieldsInRecord(xmlElement) {
//Then, iterate over all tags representing fields in the table
var fieldIterator = xmlElement.getIteratorOverAllChildren();
while (fieldIterator.hasNext()) {
var field = fieldIterator.next();
var fieldName = childElement.getName();
//if table is incident, then description is encrypted for the short_description field
if (tableName == 'incident' && fieldName == 'description') {
field.valueFor(tableName, 'short_description');
} else {
//if table is not incident, ask the proxy to check if the given field is encrypted for the given table
field.valueFor(tableName, fieldName);
}
}
}In VerschlüsseltFieldsInRecord() Funktion, die WertFür() Die Methode wird für eine Tabelle und ein Feld aufgerufen, die basierend auf der Anforderung dynamisch zugewiesen werden. Auch wenn sich die Tabellen- und Feldnamen ändern können, fordert die Regel den Proxy auf, zu überprüfen, ob das Feld in der Tabelle basierend auf den definierten Verschlüsselungskonfigurationen verschlüsselt werden muss.
Wenn das Feld nicht für die Verschlüsselung konfiguriert ist oder wenn das Tag nicht mit einem Feld in der Tabelle übereinstimmt, überspringt der Proxy dieses Tag. Wenn das Tag mit einem Feld übereinstimmt, das für die Verschlüsselung markiert ist, dann wird Edge EncryptionProxy-Server verschlüsselt den Wert.
Mit einer codierten Abfrage
In diesem Beispiel haben alle Tags die Filtern Attribut, das angibt, ob das Tag eine codierte Abfrage enthält.
<data>
<record>
<name filter="false">'Test Record 1'</name>
<description filter="false">'Test Record 1 Description'</description>
<query filter="true">category=1^name=edge</query>
</record>
<record>
<name filter="false">'Test Record 2'</name>
<description filter="false">'Test Record 2 Description'</description>
<query filter="true">category=2^severity=3</query>
</record>
</data>Die folgende Verschlüsselungsregelaktion kann angewendet werden:
function sampleXmlAction3() {
var xmlContent = request.getAsXmlContent();
var tableName = request.urlParam.table;
// This first iterator will iterate over all record elements
var xmlElementIterator = xmlContent.getIterator('data/record');
while (xmlElementIterator.hasNext()) {
encryptFieldsInRecord(xmlElementIterator.next());
}
}
function encryptFieldsInRecord(xmlElement) {
//this time we want to iterate over all tags representing fields in the table
var fieldIterator = xmlElement.getIteratorOverAllChildren();
while (fieldIterator.hasNext()) {
var field = fieldIterator.next();
var fieldname = childElement.getName();
//let's look at the filter attribute, if true, then encrypt as encoded query
if (field.getAttributeValue('filter') == 'true') {
field.encodedQueryFor(tableName);
} else {
//if it is false then check if the field should be encrypted
field.valueFor(tableName, fieldName);
}
}
}Wenn Filtern Attributwert ist „wahr“. Die Regel fordert den Proxy-Server auf, die Werte in der codierten Abfrage zu verschlüsseln. Bei „falsch“ fordert die Regel den Proxy auf, zu überprüfen, ob das Feld verschlüsselt werden soll.