---
sourceDocument: Yokohama-Plattformsicherheit
sourceDocumentLink: https://servicenow-prod.fluidtopics.net/r/de-DE/yokohama/platform-security

 Release :

    - yokohama

ft:locale :

    - de-DE

ft:publication_title :

    - Yokohama-Plattformsicherheit

ft:clusterId :

    - psec

bundleId :

    - psec

workflow :

    - Platform


---

# Verarbeitung nicht zugeordneter Felder

# Verarbeitung nicht zugeordneter Felder {#ariaid-title1}

* Freigeben Version: Yokohama
* 
* Aktualisiert 30. Januar 2025
* 
* ![](https://www.servicenow.com/docs/portal-asset/ico-clock) 3 Minuten Lesedauer

Sie können nicht zugeordnete Felder in der SCIM-Anpassung auf verschiedene Weise behandeln.

Während der SCIM-Anpassung können die Felder, die nicht Teil der Tabellen „sys_user" und „sys_user_Group" sind, durch Ausführen der folgenden Funktionen zugeordnet werden.

## SCIM anpassen (Erstellen oder Aktualisieren) {#handling-umapped-fields__section_j5j_y3k_jtb}

Sie können den SCIM-Client erstellen oder aktualisieren.

* Der SCIM-Administrator kann anwenderdefinierte Skripts in hinzufügen onBeforeUnd onAfterSkripts für Felder, die nicht in ETL-Definition oder RTE zugeordnet sind.
* Der SCIM-Administrator kann RTE-Zuordnungen überschreiben, indem er anwenderdefinierte Skripts in hinzufügt onBeforeUnd onAfterSkripts.
* Sie können eine skriptfähige API im RTE aufrufen onBeforeOder onAfterSkripts für den Zugriff auf eingehende Anforderungen und die Durchführung von Transformationen für andere Tabellen, Listen und nicht zugeordnete Attribute.
* Sie können verwenden sn_auth.SCIM2Util.getScimProviderCustomizationContext()Methode zum Bereitstellen des SCIM-Anforderungskontexts, der enthält scimResourceObjekt. Die scimResourceIm Kontext stellt in jedem Vorgang Folgendes dar:
  * VERÖFFENTLICHEN : Die in der Anforderungsnutzlast gesendete SCIM-Ressource.
  * PLATZIEREN : Die aktuelle SCIM-Ressource aus der Datenbank wurde durch die in der Anforderungsnutzlast gesendete SCIM-Ressource ersetzt.
  * PATCH : Die aktuelle SCIM-Ressource aus der Datenbank nach Ausführung der Patch-Vorgänge.
  {#handling-umapped-fields__ul_ylz_ksd_mtb}

{#handling-umapped-fields__ul_dtj_rfp_gtb}  
Das folgende ist ein Beispiel für onAfterSkript.

    (function onAfter(source, target, importLog) {

        var ctx = sn_auth.SCIM2Util.getScimProviderCustomizationContext();
        gs.info("scim context ee: " + JSON.stringify(ctx.scimResource));

        var roles = ctx.scimResource.roles;
        if(roles) {
            var removingRolesGR = new GlideRecord("sys_user_has_role");
            removingRolesGR.addQuery("user", target.sys_user[0].sys_id);
            removingRolesGR.query();
            removingRolesGR.deleteMultiple();

        for (var i = 0; i < roles.length; i++) {
            var addingRolesGR = new GlideRecord("sys_user_has_role");
            addingRolesGR.setValue("user", target.sys_user[0].sys_id);
            addingRolesGR.setValue("role", roles[i].value);
            addingRolesGR.setValue("state", "active");
            addingRolesGR.insert();
            }
            }
            var customUserExtn = new global.SCIMProviderCustomization().getCustomExtensionUrn('User');
            var salary = ctx.scimResource[customUserExtn].salary;
            if (salary) {
                var gr = new GlideRecord("u_user_salary");
                gr.addQuery("user", target.sys_user[0].sys_id);
                gr.query();
                if (gr.next()) {
                    gr.setValue("salary", salary);
                    gs.info("scim update: " + gr.update());
                } else {
                gr.setValue("salary", salary);
                gr.setValue("user", target.sys_user[0].sys_id);
                gr.insert();
                }
               }

    })(source, target, importLog);

## Passen Sie die SCIM-Antwort an {#handling-umapped-fields__section_p1f_nhp_gtb}

Für die GET-API-Aufrufe kann jede Antwort zurück an den SCIM-Client mithilfe des Skripts angepasst werden, indem erweitert wird SCIMProviderCustomizationSkript.

Beim erweitern des Skripts kann der Autor überschreiben customizeUserResponseUnd customizeGroupResponseMethoden zum Ändern der Antworten für Anwender- und Gruppenressourcen.

Die com.snc.integration.scim2.provider.customization.script.idMit der Eigenschaft kann das SCIM-Plugin das Skript verwenden, das für die Anpassung der Antwort verwendet werden soll.  
Im Folgenden finden Sie ein Beispiel für die Erweiterung des Basisskripts.

    var SCIMCustomizationScript = Class.create();
    SCIMCustomizationScript.prototype = Object.extendsObject(SCIMProviderCustomization, {
        initialize: function() {
            SCIMProviderCustomization.prototype.initialize.call(this);
        },
        customizeUserResponse: function(context) {
            try {
                var rolesGR = new GlideRecord("sys_user_has_role");
                rolesGR.addQuery("user", context.scimResource.id);
                rolesGR.query();
                var i = 0;
                context.scimResource.roles = [];
                while (rolesGR.next()) {
                    context.scimResource.roles[i] = {
                        display: rolesGR.getElement('role.name').getValue(),
                        value: rolesGR.getElement('role.sys_id').getValue()
                    };
                    i++;
                }
                var userGR = new GlideRecord("u_user_salary");
                userGR.addQuery("user", context.scimResource.id);
                userGR.query();
                if (userGR.next()) {
                    var salary = userGR.getValue("salary");
                    if (salary) {
                        var customExtensionValue = SCIMProviderCustomization.prototype.getCustomExtensionNodeValue.call(this, "User", context);
                        customExtensionValue.salary = salary;
                        SCIMProviderCustomization.prototype.setCustomExtensionNodeValue.call(this, "User", context, customExtensionValue);
                    }
                }
            } catch (ex) {
                gs.error("err: " + ex);
            }
            return context;
        },
        customizeGroupResponse: function(context) {
            return context;
        },
        type: 'SCIMCustomizationScript'
    });

Hinweis:  
* Der Parameter, der customizeUserResponseUnd customizeGroupResponse„Methoden enthalten" ist ein Kontextobjekt mit einem Attribut namens scimResource. Dieses Attribut hat alle Attribute eines Anwender- oder Gruppenressourcenobjekts.
* Eine anwenderdefinierte Skripteinbindung kann nur vom Administrator erstellt und angezeigt werden.
* Wenn eine Anwender- oder Gruppenressource geändert wird, müssen Sie den Kontext zurückgeben.
* Wenn kein Attribut im Ressourcenobjekt geändert wird, legen Sie fest com.snc.integration.scim2.provider.customization.script.idLeer oder als Null zurückgeben.
* Wenn bestimmte Attribute über beibehalten werden onAfterSkript, müssen sie mit Datenbankwerten in ausgefüllt werden scimResourceObjekt im anwenderdefinierten Skript. Diese Aktion ist erforderlich, damit das System Folgendes ausführen kann:
  * Um die richtige zu erhalten scimResourceObjekt in onAfterSkripts während des PUT- und PATCH-Vorgangs.
  * Um die Attribute einzubeziehen, die über beibehalten wurden onAfterSkript in der Antwort zurück an den Client.
  {#handling-umapped-fields__ul_dcw_ph5_mtb}
{#handling-umapped-fields__ul_flt_zhp_gtb}

## Hilfsfunktionen {#handling-umapped-fields__section_ss3_s3p_gtb}

Im Folgenden sind einige der Hilfsfunktionen für die SCIM-Anpassung aufgeführt. Mit diesen Funktionen können Sie verschiedene Arten von Informationen abrufen oder festlegen.
{#handling-umapped-fields__table_stg_qck_mtb__entry__2}

| Funktion | Zweck |
|-|-|
| SCIMProviderCustomization.prototype.getCustomExtensionUrn.call(this, "User"); | Rufen Sie den Wert des anwenderdefinierten Erweiterungsschemas ab. |
| SCIMProviderCustomization.prototype.getServiceNowExtensionUrn.call(this, "User"); | Rufen Sie den Wert von ab ServiceNowErweiterungsschema. |
| SCIMProviderCustomization.prototype.getCustomExtensionNodeValue.call(this, "User", context); | Rufen Sie den anwenderdefinierten Schemaknoten aus der Antwort ab. |
| SCIMProviderCustomization.prototype.getServiceNowExtensionNodeValue.call(this, "User", context); | Rufen Sie ab ServiceNowSchemaknoten aus der Antwort |
| SCIMProviderCustomization.prototype.setCustomExtensionNodeValue.call(this, "User", context, customExtensionValue); | Legen Sie den anwenderdefinierten Schemaknoten in der Antwort fest. |
[Tabelle : 1. Hilfsfunktionen]

{#handling-umapped-fields__table_stg_qck_mtb}  
Das folgende ist ein Beispiel für die Verwendung der Hilfefunktion:

    var customExtensionUrn = 
    SCIMProviderCustomization.prototype.getCustomExtensionUrn.call(this, "User"); 
    var customExtensionValue = 
    SCIMProviderCustomization.prototype.getCustomExtensionNodeValue.call(this, "User", context); 
    customExtensionValue.age = "18";
    SCIMProviderCustomization.prototype.setCustomExtensionNodeValue call(this, "User", context, customExtensionValue); 

Hinweis:  
RTE unterstützt das Festlegen von Daten in anderen Tabellen als den Tabellen „sys_user" und „sys_user_Group".

