Passwortzurücksetzung-Erweiterungsskripts

  • Freigeben Version: Zurich
  • Aktualisiert 31. Juli 2025
  • 8 Minuten Lesedauer
  • Erweiterungsskripts ermöglichen die Erweiterung der Passwortzurücksetzung-Funktionalität für Anmeldeinformationsspeicher-, Überprüfungs- oder Identifikationstypen.

    Skripteinbindungen für Passwortzurücksetzung-Erweiterung

    Jede Skripteinbindung ist einer bestimmten Kategorie zugeordnet, die im entsprechenden Feld eines Passwortzurücksetzung-Formulars verfügbar ist.

    Hinweis:
    Erstellen Sie Erweiterungsskripts nur aus dem Passwortzurücksetzung Formular „Erweiterungsskript“ (Passwortzurücksetzung > Erweiterungen > Neues Erweiterungsskript) an. Erweiterungsskripts sind Skripteinbindungen für besondere Zwecke, die nicht in erstellt werden Systemdefinition > Skripteinbindungen Schnittstelle. Um eine Skripteinbindung als Erweiterungsskript zu verwenden, müssen Sie den Status auf Aktiv festlegen.

    Skripteinbindungskategorie für Teilnahmeprüfung

    Skripteinbindungskategorie Beschreibung Methodensignatur Eingabefelder Ausgabefelder
    Teilnahmeprüfung Überprüft, ob ein Benutzer für eine bestimmte Überprüfung registriert ist. process(params) Parameter:
    • params.userId: Die sys_id des zu prüfenden Benutzers (Tabelle: sys_user).
    • params.verificationId: Die sys_id der zu prüfenden Überprüfung (Tabelle: pwd_verification).
    Rückgabe: (boolean) „wahr“, wenn der Benutzer für die angegebene Überprüfung registriert ist; ansonsten „falsch“.

    Dieses Beispiel für die Teilnahmeprüfung signalisiert, dass der Benutzer registriert ist, wenn beide erwarteten Parameter angegeben werden. Der Code wäre im Feld Skript eines Erweiterungsskripts mit dem Namen SampleEnrollmentCheck enthalten:

    var SampleEnrollmentCheck = Class.create ();
    SampleEnrollmentCheck. prototype = {
      category:'password_reset.extension.enrollment_check', // DO NOT REMOVE THIS LINE!
     
       /**********
       * Returns boolean telling whether the user is enrolled.
       * This sample returns true if both parameters are supplied, false otherwise 
       *
       * @param params.userId         The sys-id of the user being checked (table: sys_user)
       * @param params.verificationId The sys-id of the verification being checked (table: pwd_verification)
       * @return Boolean indicating whether the user is enrolled into the specified verification
       **********/
      process:function (params) {return (params.userId && params.verificationId)? true:false; },
     
      type:'SampleEnrollmentCheck'};

    Skripteinbindungskategorie für Teilnahmeformular-Prozessor

    Skripteinbindungskategorie Beschreibung Methodensignatur Eingabefelder Ausgabefelder
    Teilnahmeformular-Prozessor Überprüft, ob alle erforderlichen Informationen vom Benutzer erfasst wurden. Speichert die Informationen, damit sie zur Überprüfung verwendet werden können, wenn der Benutzer sein Passwort zurücksetzt. process(params) Parameter:
    • params.resetRequestId: Die sys_id der aktuellen Passwortzurücksetzung-Anforderung (Tabelle: pwd_reset_request).
    • params.userId: Die sys_id des zu überprüfenden Benutzers (Tabelle: sys_user).
    • params.verificationId: Die sys_id der zu verarbeitenden Überprüfung (Tabelle: pwd_verification).
    • request: Das Formularanforderungsobjekt. Auf Felder im Formular kann mit „request.getParameter('<element-id>')“ zugegriffen werden.
    Die folgenden Informationen sind dem Status des Registrierungsprozesses hinzuzufügen:
    • gs.getSession().putProperty("result.status",status): Ob der Benutzer erfolgreich registriert wurde.
    • gs.getSession().putProperty("result.message",message): Eine an die Benutzeroberfläche zurückzugebende zugehörige Meldung, etwa eine detaillierte Fehlermeldung.
    • gs.getSession().putProperty("result.value",value): Ein der Registrierung zugeordneter benutzerdefinierter Wert.
    Rückgabe: (boolean) „wahr“, wenn der Benutzer für die angegebene Überprüfung registriert ist; ansonsten „falsch“.

    In diesem Beispiel wird die Übermittlung eines Teilnahmeformulars erfolgreich ausgeführt, wenn die vom Benutzer übermittelte Antwort erfolgreich war. Der Code wäre im Feld Skript eines Erweiterungsskripts mit dem Namen SampleEnrollmentProcessor enthalten:

    var SampleEnrollmentProcessor = Class.create ();
    SampleEnrollmentProcessor.prototype = {
        category: 'password_reset.extension.enrollment_form_processor', // DO NOT REMOVE THIS LINE!
     
         /**********
        * Process the enrollment form request, and return whether the user was successfully enrolled.
        * 
        * @param params.userId         The sys_id of the user trying to enroll (table: sys_user)
        * @param params.verificationId The sys_id of the verification to be enrolled into (table: pwd_verification)
        * @param params.enrollmentId   The sys_id of this enrollment process
        * @param request               The form request object. Felds in the form can be accessed with
        *                                           request.getParameter('<element-id>')
        * @return boolean telling whether the user was successfully enrolled
        * The following information should be added to the state of the enrollment process
        *     gs.getSession().putProperty("result.status",status) - whether the user was successfully enrolled
        *     gs.getSession().putProperty("result.message",message) - an associated message to be returned 
        *             to the UI. Eg. a detailed error message
        *     gs.getSession().putProperty("result.value",value) - custom value associated with the enrollment
        **********/
        processForm:function (params, request) {var verificationId = params.verificationId; var sampleInput = request.getParameter ('sample_input');
     
    	 if (gs.nil (verificationId) || (sampleInput!= 'success')) { return false; }
     
    	 var now_GR = new GlideRecord ('sys_user');
    	now_GR.get (params. userId);
    	now_GR.print ('User:' + now_GR.getValue ('user_name') + ' successfully enrolled'); return true; },
        type: 'SampleEnrollmentProcessor' };

    Skripteinbindungskategorie für Identifizierungsformular-Prozessor

    Skripteinbindungskategorie Beschreibung Methodensignatur Eingabefelder Ausgabefelder
    Identifizierungsformular-Prozessor Verarbeitet eine Identifikationsformularanforderung. processForm(params, request) Parameter:
    • params.processId: Die sys_id des aufrufenden Passwortzurücksetzung-Prozesses (Tabelle: pwd_process).
    • request: Das Formularanforderungsobjekt. Auf Felder im Formular kann mit request.getParameter('<element-id>') zugegriffen werden. Verwenden Sie request.getParameter('sysparm_user_id'), um die in das Formular eingegebene Benutzer-ID zu erhalten.
    Rückgabe: die sys_id des Benutzers, der der angeforderten Eingabe entspricht. Gibt Null zurück, wenn kein Benutzer gefunden wurde.

    In diesem Beispiel wird versucht, den Benutzer in der Tabelle „sys_user“ anhand eines aus dem Identifikationsformular übergebenen Benutzernamens zu identifizieren. Der Code wäre im Feld Skript eines Erweiterungsskripts mit dem Namen PwdIdentifyViaUsername enthalten:

    var PwdIdentifyViaUsername = Class.create ();
    PwdIdentifyViaUsername. prototype = {
        category: 'password_reset.extension.identification_form_processor', // DO NOT REMOVE THIS LINE!
     
        initialize: function () { },
     
       /**********
       * Process the identification form request, and returns the user's sys_id. If user was not identified return null.
       *
       * @param params.processId   The sys_id of the calling Passwortzurücksetzung process (table: pwd_process)
       * @param request            The form request object. fields in the form can be accessed with
       *  request.getParameter('<element-id>')
       *  Supported request parameters: sysparm_user_id - the user identifier value entered in the form                       
       * @return The sys_id of the user that corresponds to the requested input; 
       *  if no user was found, null should be returned
       **********/
       processForm: function (params, request) {var processId = params. processId; var sysparm_user_id = request.getParameter ('sysparm_user_id');
          now_GR = new GlideRecord ('sys_user') ;
          now_GR.addQuery ('user_name', sysparm_user_id) ;
          now_GR.query (); if (!now_GR.next ()) {return null; } return now_GR.sys_id;},
     
        type:'PwdIdentifyViaUsername' }

    Skripteinbindungskategorie für Passwortgenerator

    Skripteinbindungskategorie Beschreibung Methodensignatur Eingabefelder Ausgabefelder
    Passwortgenerator Gibt ein automatisch generiertes Passwort zurück. process(params) Parameter: params.processId – Die sys_ID des Anrufs Passwortzurücksetzung Prozess (Tabelle: pwd_Process). Rückgabe: (Zeichenfolge) ein automatisch generiertes Passwort.

    Dieses Beispiel generiert zufällig ein Passwort aus einem Basiswort und Zahlen. Das Basiswort wird abhängig vom Anmeldeinformationsspeicher ausgewählt. Der Code wäre im Feld Skript eines Erweiterungsskripts mit dem Namen SamplePasswordGenerator enthalten:

    var SamplePasswordGenerator = Class.create ();
    SamplePasswordGenerator. prototype = {
      category: 'password_reset.extension.password_generator', // DO NOT REMOVE THIS LINE!
     
       /**********
       * Returns an auto-generated string password.
       * This sample randomly generates 4 digits to add to the password.
       * 
       * @param params.credentialStoreId The sys_id of the target Passwortzurücksetzung credential store to generate 
       *  a password for (table: pwd_cred_store)
       * @return An auto-generated string password
       **********/
      process:function (params) { var basePassword ;
     
    	 var now_GR = new GlideRecord ('pwd_cred_store');
    	now_GR.addQuery ('name', 'Local ServiceNow Instance');
    	now_GR.query (); if (now_GR.next ()) { if (params.credentialStoreId = now_GR.getValue ('sys_id'))
    			basePassword = "Password"; else
    			basePassword = "Dorwssap"; } return this. generateSimple (basePassword); },
     
      generateSimple:function (base) {var pwd = base; var numbers = '0123456789'; var length = 4;
     
         for (var i  = 0 , n  = numbers. length ; i  < length ; i ++) {
            pwd += numbers.charAt (Math.floor (Math.random () * n) + 1); } return pwd;}, 
     
      type:'SamplePasswordGenerator'} ;

    Skripteinbindungskategorie „Nach Zurücksetzung“

    Skripteinbindungskategorie Beschreibung Methodensignatur Eingabefelder Ausgabefelder
    Nach Zurücksetzung Führt zusätzliche Vorgänge nach Abschluss des Passwortzurücksetzung-Prozesses aus. process(params) Parameter:
    • params.resetRequestId: Die sys_id des aufrufenden Passwortzurücksetzung-Prozesses (Tabelle: pwd_process).
    • params.wfSuccess: Ein Flag, das angibt, ob der Workflow erfolgreich abgeschlossen wurde. „Wahr“ nur bei erfolgreichem Abschluss.
    Rückgabe: keine

    In diesem Beispiel werden fehlgeschlagene Rücksetzanforderungen zum Systemprotokoll hinzugefügt. Der Code wäre im Feld Skript für ein Erweiterungsskript mit dem Namen PwdPostProcessor enthalten:

    var PwdPostProcessor = Class.create ();
     
    PwdPostProcessor. prototype = {
        category: 'password_reset.extension.post_reset_script', // DO NOT REMOVE THIS LINE!
     
        initialize:function () { },
     
         /**********
         * Execute custom actions after the Passwortzurücksetzung process has completed.
        * 
        * @param params.resetRequestId The sys_id of the current Passwortzurücksetzung request (table: pwd_reset_request)
        * @param params.wfSuccess      A flag indicating if the workflow completed sucessfully. 
        *  True if (and only if) successful.
        * @return no return value
        **********/
        process: function (params) {if (!params. wfSuccess) {
               now_GS.log ('[PwdPostProcessor.process] failure post processing for request [' + params. resetRequestId + ']'); }
     
             // We could place actions here that we always want executed return; },
     
        type:'PwdPostProcessor' }

    Skripteinbindungskategorie für Benutzeraccountsuche

    Skripteinbindungskategorie Beschreibung Methodensignatur Eingabefelder Ausgabefelder
    Benutzeraccountsuche Ruft die Account-ID des Anmeldeinformationsspeichers für einen gegebenen Benutzer ab. process(params) Parameter: params.userId – Die sys_ID des überprüften Anwenders (Tabelle: sys_user). Rückgabe: (Zeichenfolge) die Account-ID des Anmeldeinformationsspeichers für den gegebenen Benutzer.

    In diesem Beispiel wird der Anmeldeinformationsspeicher-Account für einen Benutzer abgerufen. Dieser Code wäre im Feld Skript eines Erweiterungsskripts mit dem Namen SampleUserAccountLookupExtension enthalten:

    var SampleUserAccountLookupExtension = Class.create ();
    SampleUserAccountLookupExtension. prototype = {
      category:'password_reset.extension.user_account_lookup', // DO NOT REMOVE THIS LINE!
     
       /**********
      * Returns the credential store account id for a given user.
      * This sample echoes the user_id supplied as the credential store account id for that user.
      * 
      * @param params.userId  The sys_id of the user being checked (table: sys_user)
      * @return               The credential store account id (string) for a given user
      **********/
      process:function (params) {return params.userId;},
     
      type:'SampleUserAccountLookupExtension' }

    Skripteinbindungskategorie für Überprüfungsformular-Prozessor

    Skripteinbindungskategorie Beschreibung Methodensignatur Eingabefelder Ausgabefelder
    Überprüfungsformular-Prozessor Verarbeitet eine Überprüfungsformularanforderung und gibt an, ob der Benutzer überprüft wurde oder nicht. processForm(params, request) Parameter:
    • params.resetRequestId: Die sys_id der aktuellen Passwortzurücksetzung-Anforderung (Tabelle: pwd_reset_request).
    • params.userId: Die sys_id des zu überprüfenden Benutzers (Tabelle: sys_user).
    • params.verificationId: Die sys_id der zu verarbeitenden Überprüfung (Tabelle: pwd_verification).
    • request: Das Formularanforderungsobjekt. Auf Felder im Formular kann mit „request.getParameter('<element-id>')“ zugegriffen werden.
    Rückgabe: (boolean) „wahr“, wenn der Benutzer überprüft wurde; ansonsten „falsch“.

    Dieses Beispiel zeigt einen Überprüfungs-Prozessor, der nur dann „wahr“ zurückgibt, wenn der Benutzer OK im Eingabefeld übermittelt hat; andernfalls wird „falsch“ zurückgegeben. Der Code wäre im Feld Skript eines Erweiterungsskripts mit dem Namen SampleVerificationFormProcessor enthalten:

    var SampleVerificationFormProcessor = Class.create ();
    SampleVerificationFormProcessor.prototype = {
      category:'password_reset.extension.verification_form_processor', // DO NOT REMOVE THIS LINE!
     
       /**********
       * Process the verification form request, and return whether the user was successfully verified.
       * This is a sample verification processor returns true only if the user sent "ok" in the input field; 
       * otherwise, it returns false.
       * 
       * @param params.resetRequestId The sys_id of the current Passwortzurücksetzung request (table: pwd_reset_request)
       * @param params.userId         The sys_id of the user trying to be verified (table: sys_user)
       * @param params.verificationId The sys_id of the verification to be processed (table: pwd_verification)
       * @param request               The form request object. Fields in the form can be accessed with
       * request.getParameter('<element-id>')
       * @return Boolean indicating whether the user is successfully verified
       **********/
      processForm:function (params, request) {if (request.getParameter ("sysparm_simple_input") == "ok") return true; else return false; },
     
      type:'SampleVerificationFormProcessor'};