Freigeben über


BHOLD-Entwicklerreferenz für Microsoft Identity Manager 2016

Das BHOLD-Core-Modul kann Skriptbefehle verarbeiten. Dies kann mithilfe der bscript.dll in einem .NET-Projekt direkt erfolgen. Interagiert auch mit dem Webdienst b1scriptservice.asmx-Schnittstelle.

Bevor ein Skript ausgeführt wurde, sollten alle Informationen innerhalb des Skripts gesammelt werden, um dieses Skript zu verfassen. Diese Informationen können aus den folgenden Quellen gesammelt werden:

  • Benutzereingabe
  • BHOLD-Daten
  • Anträge
  • Andere

Die BHOLD-Daten können mithilfe der GetInfo-Funktion des Skriptobjekts abgerufen werden. Es gibt eine vollständige Liste der Befehle, die alle in der BHOLD-Datenbank gespeicherten Daten darstellen können. Die angezeigten Daten unterliegen jedoch den Ansichtsberechtigungen des angemeldeten Benutzers. Das Ergebnis ist in Form eines XML-Dokuments, das analysiert werden kann.

Eine weitere Informationsquelle kann eine der Anwendungen sein, die von BHOLD gesteuert werden. Das Anwendungs-Snap-In verfügt über eine spezielle Funktion, die FunctionDispatch, die verwendet werden kann, um anwendungsspezifische Informationen darzustellen. Dies wird auch als XML-Dokument dargestellt.

Wenn es keine andere Möglichkeit gibt, kann das Skript Befehle direkt für andere Anwendungen oder Systeme enthalten. NoThenstallation von zusätzlicher Software auf dem BHOLD-Server kann die Sicherheit des gesamten Systems untergraben.

Alle diese Informationen werden in ein XML-Dokument eingefügt und dem BHOLD-Skriptobjekt zugewiesen. Das Objekt kombiniert dieses Dokument mit einer vordefinierten Funktion. Die vordefinierte Funktion ist ein XSL-Dokument, das das Skripteingabedokument in ein BHOLD-Befehlsdokument übersetzt.

BHOLD Script Processing

Die Befehle werden in der gleichen Reihenfolge ausgeführt wie im Dokument. Wenn eine Funktion fehlschlägt, werden alle ausgeführten Befehle zurückgesetzt.

Script-Objekt

In diesem Abschnitt wird die Verwendung des Skriptobjekts beschrieben.

Abrufen von BHOLD-Informationen

Die GetInfo--Funktion wird verwendet, um Informationen aus den verfügbaren Daten im BHOLD-Autorisierungssystem abzurufen. Die Funktion erfordert einen Funktionsnamen und schließlich einen oder mehrere Parameter. Wenn diese Funktion erfolgreich ist, wird ein BHOLD-Objekt oder eine Auflistung in Form eines XML-Dokuments zurückgegeben.

Wenn die Funktion nicht erfolgreich ist, gibt die GetInfo-Funktion eine leere Zeichenfolge oder einen Fehler zurück. Die Fehlerbeschreibung und -nummer können verwendet werden, um weitere Informationen zum Fehler zu erhalten.

Die GetInfo-Funktion 'FunctionDispatch' kann verwendet werden, um Informationen aus einer Anwendung abzurufen, die vom BHOLD-System gesteuert wird. Diese Funktion erfordert drei Parameter: Die ID der Anwendung, die Dispatch-Funktion, wie sie in der ASI definiert ist, und ein XML-Dokument mit unterstützenden Informationen für die ASI. Wenn die Funktion erfolgreich ist, ist das Ergebnis im XML-Format im Ergebnisobjekt verfügbar.

Der folgende Codeausschnitt ist ein einfaches C#-Beispiel für GetInfo:

ScriptProcessor myScriptProcessor = new ScriptProcessor();
myScriptProcessor.Initializae("CORP\\b1user");
myScriptProcessor.GetInfo("OrgUnit", "1");

Ebenso kann auf das BScript--Objekt auch über den Webdienst b1scriptservicezugegriffen werden. Dazu fügen Sie einen Webverweis zu Ihrem Projekt mithilfe von http://<Server>:5151/BHOLD/Core/b1scriptservice.asmx hinzu, wobei <Server> der Server ist, auf dem die BHOLD-Binärdateien installiert sind. Weitere Informationen finden Sie unter Hinzufügen eines Webdienstverweises zu einem Visual Studio-Projekt.

Das folgende Beispiel zeigt, wie Sie die GetInfo-funktion aus einem Webdienst verwenden. Dieser Code ruft die Organisationseinheit mit einer OrgID von 1 ab und zeigt dann den Namen dieser Organisationseinheit auf dem Bildschirm an.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml;

namespace bhold_console
{
    class Program
    {
        static void Main(string[] args)
        {
             var bholdService = new BHOLDCORE.B1ScriptService();
             bholdService.Url = "http://app1.corp.contoso.com:5151/BHOLD/Core/b1scriptservice.asmx";
             string orgname= "";

             if (args.Length == 3)
             {
                 //Use explicit credentials from command line
                 bholdService.UseDefaultCredentials = false;
                 bholdService.Credentials = new System.Net.NetworkCredential(args[0], args[1], args[2]);
                 bholdService.PreAuthenticate = true;
             }
             else
             {
                 bholdService.UseDefaultCredentials = true;
                 bholdService.PreAuthenticate = true;
             }

             //Load BHOLD information into an xml document and loop through document to find the bholdDescription value
             var myOrgUnit = new System.Xml.XmlDocument();
             myOrgUnit.LoadXml(bholdService.GetInfo("OrgUnit","1","","");

            XmlNodeList myList = myOrgUnit.SelectNodes(("//item");

            foreach (XmlNode myNode in myList)
            {
                for (int i = 0; i < myNode.ChildNodes.Count; i++)
                {
                    if (myNode.ChildNodes[i].InnerText.ToString() == "bholdDescription")
                    {
                        orgname = myNode.ChildNodes[i + 1].InnerText.ToString();
                    }
                }
            }

            System.Console.WriteLine("The Organizational Unit Name is: " + orgname);

        }
    }
}

Im folgenden VBScript-Beispiel wird der Webdienst über SOAP und getInfo verwendet. Weitere Beispiele für SOAP 1.1, SOAP 1.2 und HTTP POST finden Sie im Abschnitt "BHOLD Managed Reference", oder Sie können direkt über einen Browser zum Webdienst navigieren und dort anzeigen.

Dim SOAPRequest
Dim SOAPParameters
Dim SOAPResponse
Dim xmlhttp

Set xmlhttp = CreateObject("Microsoft.XMLHTTP")

xmlhttp.open "POST", "http://app1.corp.contoso.com:5151/BHOLD/Core/b1scriptservice.asmx", False, "CORP\Administrator", "abc123*2k"

xmlhttp.setRequestHeader "Content-type", "text/xml; charset=utf-8"
xmlhttp.setRequestHeader "SOAPAction", "http://B1/B1ScriptService/GetInfo"

SOAPRequest = "<?xml version='1.0' encoding='utf-8'?> <soap:Envelope" & vbCRLF
SOAPRequest = SOAPRequest & " xmlns:xsi=""http://" & vbCRLF
SOAPRequest = SOAPRequest & " www.w3.org/2001/XMLSchema-instance""" & vbCRLF
SOAPRequest = SOAPRequest & " xmlns:xsd=""http://www.w3.org/2001/XMLSchema""" & vbCRLF
SOAPRequest = SOAPRequest & " xmlns:soap=""http://schemas.xmlsoap.org/soap/envelope/"">" & vbCRLF
SOAPRequest = SOAPRequest & " <soap:Body>" & vbCRLF
SOAPRequest = SOAPRequest & " <GetInfo xmlns=""http://B1/B1ScriptService"">" & vbCRLF
SOAPRequest = SOAPRequest & " <functionName>OrgUnit</functionName>" & vbCRLF
SOAPRequest = SOAPRequest & " <parameter1>1</parameter1>" & vbCRLF
SOAPRequest = SOAPRequest & " <parameter2></parameter2>" & vbCRLF
SOAPRequest = SOAPRequest & " <parameter3></parameter3>" & vbCRLF
SOAPRequest = SOAPRequest & " </GetInfo>" & vbCRLF
SOAPRequest = SOAPRequest & " </soap:Body>" & vbCRLF
SOAPRequest = SOAPRequest & " </soap:Envelope>"
MsgBox SOAPRequest

xmlhttp.send SOAPRequest 

SOAPResponse = xmlhttp.responseText

MsgBox SOAPResponse

Ausführen von Skripts

Die ExecuteScript--Funktion des BScript--Objekts kann zum Ausführen von Skripts verwendet werden. Für diese Funktion sind zwei Parameter erforderlich. Der erste Parameter ist das XML-Dokument, das die benutzerdefinierten Informationen enthält, die vom Skript verwendet werden sollen. Der zweite Parameter ist der Name des zu verwendenden vordefinierten Skripts. In the BHOLD predefined scripts directory, here should be an XSL document with the same name as the function, but with the .xsl extension.

Wenn die Funktion nicht erfolgreich ist, gibt die ExecuteScript-Funktion den Wert False zurück. Die Fehlerbeschreibung und -nummer können verwendet werden, um zu wissen, was schief gelaufen ist. Im Folgenden sehen Sie ein Beispiel für die Verwendung der ExecuteXML-Webmethode. Diese Methode ruft ExecuteScript auf.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Sample
{
    class Program
    {
        static void Main(string[] args)
        {
            var bholdService = new BHOLDCORE.B1ScriptService();
            bholdService.Url = "http://app1.corp.contoso.com:5151/BHOLD/Core/b1scriptservice.asmx";

            if (args.Length == 3)
            {
                //Use explicit credentials from command line
                bholdService.UseDefaultCredentials = false;
                bholdService.Credentials = new System.Net.NetworkCredential(args[0], args[1], args[2]);
                bholdService.PreAuthenticate = true;
            }
            else
            {
                bholdService.UseDefaultCredentials = true;
                bholdService.PreAuthenticate = true;
            }
            System.Console.WriteLine( "Add user #3 to role #44, result: {0}", bholdService.ExecuteXml(roleAddUser("44", "3")) );
            System.Console.WriteLine("Add user D1 to role 'MR-OU2 No Users', result: {0}", bholdService.ExecuteXml(roleAddUser("MR-OU2 No Users", "D1")));

        }

        private static System.Xml.XmlNode roleAddUser(string roleId, string userId)
        {
            var script = new System.Xml.XmlDocument();
            script.LoadXml(string.Format("<functions>"
                                        +"  <function name='roleadduser' roleid='{0}' userid='{1}' />"
                                        +"</functions>",
                                        roleId,
                                        userId)
                           );
            return script.DocumentElement;

BholdScriptResult

Diese GetInfo-Funktion ist verfügbar, nachdem die executescript--Funktion ausgeführt wurde. Die Funktion gibt eine XML-formatierte Zeichenfolge zurück, die den vollständigen Ausführungsbericht enthält. Der Skriptknoten enthält die XML-Struktur des ausgeführten Skripts.

Für jede Funktion, die während der Ausführung des Skripts fehlschlägt, wird eine Node-Funktion mit dem Knotennamen hinzugefügt. ExecuteXML und Error werden am Ende des Dokuments alle generierten IDs hinzugefügt.

Beachten Sie, dass nur die Funktionen, die einen Fehler enthalten, hinzugefügt werden. Eine Fehlernummer von "0" bedeutet, dass die Funktion nicht ausgeführt wird.

<Bhold>
  <Script>
    <functions>
      <function name="OrgUnitadd" description="OrgUnit1" parentid="root" orgtypeid="root" return="@ID@"/>     
      <function name="roleaddOrgUnit" OrgUnitid="OrgUnit1" roleid="Role1_OrgUnit1" return="@ID@"/>      
    </functions>
  </Script>
  <Function>
    <Name>OrgUnitadd</Name>
    <ExecutedXML>
      <function name="OrgUnitadd" description="OrgUnit1" parentid="root" orgtypeid="root" return="@ID@"/>
    </ExecutedXML>
    <Error Number="5" Description="Violation of UNIQUE KEY constraint 'IX_OrgUnits'. Cannot insert duplicate key in object 'dbo.OrgUnits'.
The statement has been terminated."/>
  </Function>
  <Function>
    <Name>roleaddOrgUnit</Name>
    <ExecutedXML>
      <function name="roleaddOrgUnit" OrgUnitid="OrgUnit1" roleid="Role1_OrgUnit1" return="@ID@"/>
    </ExecutedXML>
    <Error Number="0" Description=""/>
  </Function>
  <IDS>
    <ID name="@ID@">35</ID>
  </IDS>
</Bhold>

ID-Parameter

ID-Parameter erhalten eine spezielle Behandlung. Nicht numerische Werte werden als Suchwert zum Suchen der entsprechenden Entitäten im BHOLD-Datenspeicher verwendet. Wenn der Suchwert nicht eindeutig ist, wird die erste Entität zurückgegeben, die dem Suchwert entspricht.

Um numerische Suchwerte von IDs zu unterscheiden, ist es möglich, ein Präfix zu verwenden. Wenn die ersten sechs Zeichen des Suchwerts gleich "no_id:" sind, werden diese Zeichen entfernt, bevor der Wert für die Suche verwendet wird. SQL-Wildcardzeichen '%' können verwendet werden.

Die folgenden Felder werden mit dem Suchwert verwendet:

ID-Typ Suchfeld
OrgUnitID BESCHREIBUNG
roleID BESCHREIBUNG
taskID BESCHREIBUNG
userID DefaultAlias

Skriptzugriff und -berechtigungen

Serverseitiger Code in den Active Server Pages wird verwendet, um die Skripts auszuführen. Daher bedeutet der Zugriff auf das Skript Zugriff auf diese Seiten. Das BHOLD-System verwaltet Informationen über die Einstiegspunkte der benutzerdefinierten Seiten. Zu diesen Informationen gehören Startseite und Funktionsbeschreibung (mehrere Sprachen sollten unterstützt werden).

Ein Benutzer ist berechtigt, die benutzerdefinierten Seiten einzugeben und ein Skript auszuführen. Jeder Einstiegspunkt wird als Aufgabe dargestellt. Jeder Benutzer, der diese Aufgabe über eine Rolle oder eine Einheit gewonnen hat, kann die entsprechende Funktion ausführen.

Eine neue Funktion im Menü stellt alle benutzerdefinierten Funktionen dar, die vom Benutzer ausgeführt werden können. Da ein Skript Aktionen im BHOLD-System unter einer Identität ausführen kann, die sich von dem angemeldeten Benutzer unterscheidet. Es ist möglich, eine bestimmte Aktion auszuführen, ohne eine Aufsicht über ein Objekt zu haben. Dies kann z. B. für einen Mitarbeiter nützlich sein, der nur neue Kunden in das Unternehmen aufnehmen darf. Diese Skripts können auch zum Erstellen von Selbstregisterseiten verwendet werden.

Befehlsskript

Das Befehlsskript enthält eine Liste von Funktionen, die vom BHOLD-System ausgeführt werden. Die Liste wird in einem XML-Dokument geschrieben, das den folgenden Definitionen entspricht:

Befehlsskript <functions>functions</functions>
functions Funktion {function}
Funktion <funktionsname="functionName" functionParameters [return] (/> | > parameterList </ function>)
functionName Ein gültiger Funktionsname, wie in den folgenden Abschnitten beschrieben.
functionParameters { functionParameter }
functionParameter parameterName = "parameterValue"
parameterName Ein gültiger Parametername.
parameterValue @variable@ | Wert
Wert Ein gültiger Parameterwert.
parameterList <Parameter> {parameterItem} </parameters>
parameterItem <Parametername="parameterName"> parameterValue </parameter>
return return="@variable@"
-Variable Ein benutzerdefinierter Variablenname.

XML verfügt über die folgenden Übersetzungen von Sonderzeichen:

XML Charakter
&amp; &
&lt; <
&gt; >
&quot; "
&apos; '

Diese XML-Zeichen können in Bezeichnern verwendet werden, aber sie werden nicht empfohlen.

Der folgende Code zeigt ein Beispiel für ein gültiges Befehlsdokument mit drei Funktionen:

<functions>

   <functionname="OrgUnitAdd" parentID="34" description="Acme Inc." orgtypeID="5" return="@UnitID@" />

   <function name="UserAdd" description="John Doe" alias="jdoe" languageID="1" OrgUnitID="@UnitID@" />

   <function name="TaskAddFile" taskID="93" path="/customers/purchase">
      <parameters>
         <parameter name="history"> True</parameter>
      </parameters>
   </function>

</functions>

Die Funktion OrgUnitAdd speichert die ID der erstellten Einheit in einer Variablen namens UnitID. Diese Variable wird als Eingabe für die UserAdd-Funktion verwendet. Der Rückgabewert dieser Funktion wird nicht verwendet. In den folgenden Abschnitten werden alle verfügbaren Funktionen, die erforderlichen Parameter und deren Rückgabewerte beschrieben.

Ausführen von Funktionen

In diesem Abschnitt wird die Verwendung der Ausführungsfunktionen beschrieben.

ABAAttributeRuleAdd

Erstellen Sie eine neue Attributregel für einen bestimmten Attributtyp. Attributregeln können nur mit einem Attributtyp verknüpft werden.

Die angegebene Attributregel kann mit allen möglichen Attributtypen verknüpft werden.

Der RuleType kann nicht mit dem Befehl "ABAattributeruletypeupdate" geändert werden. Erfordert, dass die Beschreibung des Attributs durch eindeutig ist.

Argumente Typ
BESCHREIBUNG Text
RuleType Geben Sie die Art der Attributregel an. Abhängig von der Art des Attributregeltyps müssen andere Argumente eingeschlossen werden. Die folgenden Regeltypwerte sind gültig:
  • 0: Regulärer Ausdruck (Argument "Wert hinzufügen").
  • 1: Wert (Hinzufügen von Argumenten "Operator" und "Wert").
  • 2: Liste der Werte.
  • 3: Range (add arguments "rangemin" and "rangemax").
  • 4: Alter (Hinzufügen von Argumenten "Operator" und "Wert").
InvertResult ["0"|"1"|"N"|"Y"]
AttributeTypeID Text
Optionale Argumente Typ
Operator Text
Hinweis: Dieses Argument ist obligatorisch, wenn RuleType- 1 oder 4 ist. Die möglichen Werte sind "=", "<" oder ">". XML-Tags müssen ">" für '>' und "<" für '<' verwenden.
RangeMin Nummer
Hinweis: Dieses Argument ist obligatorisch, wenn RuleType- 3 ist.
RangeMax Nummer
Hinweis: Dieses Argument ist obligatorisch, wenn RuleType- 3 ist.
Wert Text
Hinweis: Dieses Argument ist obligatorisch, wenn RuleType- 0, 1 oder 4 ist. Das Argument muss ein numerischer oder alphanumerischer Wert sein.
Rückgabetyp AttributRuleID Text

applicationadd

Erstellt eine neue Anwendung, gibt die ID der neuen Anwendung zurück.

Argumente Typ
Beschreibung
Computer
module
parameter
Protokoll
username
Passwort
svroleID (optional) Wenn dieses Argument nicht vorhanden ist, wird eine Aufsichtsrolle des aktuellen Benutzers verwendet.
Applicationaliasformula (optional) Die Aliasformel wird verwendet, um einen Alias für einen Benutzer zu erstellen, wenn er einer Berechtigung der Anwendung zugewiesen ist. Der Alias wird erstellt, wenn der Benutzer noch keinen Alias für diese Anwendung hat. Wenn kein Wert den Standardalias des Benutzers erhält, wird er als Alias für die Anwendung verwendet. Die Formel ist als [<<objecttype>>.<<nameofobjecttypeattribute>>(startindexoffset,length offset)]formatiert. Der Offset ist optional. Es können nur Benutzer- und Anwendungsattribute verwendet werden. Freitext könnte verwendet werden. Die reservierten Zeichen sind eckige eckige Klammern ([) und rechte eckige Klammer (]). Beispiel: [Application.bholdDescription]\[User.bholdDefAlias(1,5)].
Rückgabetyp ID der neuen Anwendung.

AttributeSetValue

Legt den Wert eines Attributtyps fest, der mit dem Objekttyp verbunden ist. Erfordert, dass die Beschreibungen des Objekttyps und der Attributtyp eindeutig sind.

Argumente Typ
ObjectTypeID Text
ObjectID Text
AttributeTypeID Text
Wert Text
Rückgabetyp Typ

AttributeTypeAdd

Fügt einen neuen Attributtyp /Eigenschaftstyp ein.

Argumente Typ
DataTypeID Text
Beschreibung (=Identität) Text
Hinweis: Reservierte Wörter können nicht verwendet werden, einschließlich "a", "frm", "id", "usr" und "bhold".
Maximale Länge Zahl in [1,..,255]
ListOfValues (boolean) ["0"|"1"|"N"|"Y"]
Standardwert Text
Rückgabetyp Typ
AttributeTypeID Text

AttributeTypeSetAdd

Fügt einen neuen Attributtypsatz ein. Erfordert, dass die Beschreibung eines Attributtypsatzes eindeutig ist.

Argumente Typ
Beschreibung (=Identität) Text
Rückgabetyp Typ
AttributeTypeSetID Text

AttributeTypeSetAddAttributeType

Fügt einen neuen Attributtyp in einen vorhandenen Attributtypsatz ein. Erfordert, dass die Beschreibungen des Attributtypsatzes und des Attributtyps eindeutig sind.

Argumente Typ
AttributeTypeSetID Text
AttributeTypeID Text
Bestellung Nummer
LocationID Text
Hinweis: Der Speicherort ist entweder "gruppe" oder "single".
Obligatorisch ["0"|"1"|"N"|"Y"]
Rückgabetyp Typ

ObjectTypeAddAttributeTypeSet

Fügt einem Objekttyp einen Attributtypsatz hinzu. Erfordert, dass die Beschreibung des Objekttyps und der Attributtypsatz eindeutig sind. Die Objekttypen sind: System, OrgUnit, User, Task.

Argumente Typ
ObjectTypeID Text
AttributeTypeSetID Text
Bestellung Nummer
Sichtbar
  • 0: Der Attributtypsatz ist sichtbar.
  • 2: Der Attributtypsatz ist sichtbar, wenn die weitere Informationen Schaltfläche ausgewählt ist.
  • 1: Der Attributtypsatz ist unsichtbar.
Rückgabetyp Typ

OrgUnitadd

Erstellt eine neue Organisationseinheit, gibt die ID der neuen Organisationseinheit zurück.

Argumente Typ
Beschreibung
orgtypeID
parentID
OrgUnitinheritedroles (optional)
Rückgabetyp Typ
ID der neuen Einheit Der Parameter OrgUnitinheritedroles
hat entweder den Wert "Ja" oder "Nein".

OrgUnitaddsupervisor

Machen Sie einen Benutzer zu einem Vorgesetzten einer Organisationseinheit.

Argumente Typ
svroleID Das Argument userID kann auch verwendet werden. In diesem Fall wird die Standardmäßige Aufsichtsrolle ausgewählt. Eine Standardaufseherrolle hat einen Namen wie __svrole gefolgt von einer Zahl. Die Argumentbenutzer-ID kann zur Abwärtskompatibilität verwendet werden.
OrgUnitID

OrgUnitadduser

Machen Sie einen Benutzer zu einem Mitglied einer Organisationseinheit.

Argumente Typ
userID
OrgUnitID

OrgUnitdelete

Entfernt eine Organisationseinheit.

Argumente Typ
OrgUnitID

OrgUnitdeleteuser

Entfernt einen Benutzer als Mitglied einer Organisationseinheit.

Argumente Typ
userID
OrgUnitID

roleadd

Erstellt eine neue Rolle.

Argumente Typ
BESCHREIBUNG
svrole
svroleID (optional) Wenn dieses Argument nicht vorhanden ist, wird eine Aufsichtsrolle des aktuellen Benutzers verwendet.
ContextAdaptable (optional) ["0","1","N","Y"]
MaxPermissions (optional) Ganze Zahl
MaxRoles (optional) Ganze Zahl
MaxUsers (optional) Ganze Zahl
Rückgabetyp Typ
ID der neuen Rolle

roleaddOrgUnit

Weist einer Organisationseinheit eine Rolle zu.

Argumente Typ
OrgUnitID roleID
inheritThisRole "true" oder "false", gibt an, ob die Rolle für zugrunde liegende Einheiten vorgeschlagen wird.

roleaddrole

Weist eine Rolle als Unterrole einer anderen Rolle zu.

Argumente Typ
roleID
subRoleID

roleaddsupervisor

Machen Sie einen Benutzer zu einem Vorgesetzten einer Rolle.

Argumente Typ
svroleID Das Argument userID kann auch verwendet werden. In diesem Fall wird die Standardmäßige Aufsichtsrolle ausgewählt. Eine Standardaufseherrolle hat einen Namen wie __svrole gefolgt von einer Zahl. Die Argumentbenutzer-ID kann zur Abwärtskompatibilität verwendet werden.
roleID

roleadduser

Weist einem Benutzer eine Rolle zu. Die Rolle kann keine kontextanpassungsfähige Rolle sein, wenn keine Kontext-ID angegeben wird.

Argumente Typ
userID
roleID
durationType (optional) Kann die Werte "frei", "Stunden" und "Tage" enthalten.
durationLength (optional) Erforderlich, wenn durationType "Stunden" oder "Tage" ist. sollte den ganzzahligen Wert für die Anzahl von Stunden oder Tagen enthalten, die der Rolle einem Benutzer zugewiesen ist.
Start (optional) Datum und Uhrzeit der Zuweisung der Rolle. Wenn dieses Attribut nicht angegeben wird, wird die Rolle sofort zugewiesen. Das Datumsformat ist "JJJJ-MM-TTThh:nn:ss", wobei nur Jahr, Monat und Tag erforderlich sind. Beispielsweise sind "2004-12-11" und "2004-11-28T08:00" gültige Werte.
end (optional) Datum und Uhrzeit, zu dem die Rolle widerrufen wird. Wenn durationType und durationLength angegeben werden, wird dieser Wert ignoriert. Das Datumsformat ist "JJJJ-MM-TTThh:nn:ss", wobei nur Jahr, Monat und Tag erforderlich sind. Beispielsweise sind "2004-12-11" und "2004-11-28T08:00" gültige Werte.
linkreason Erforderlich, wenn Start, Ende oder Dauer angegeben wird, andernfalls ignoriert.
contextId (optional) ID der Organisationseinheit, die nur für kontextanpassungsfähige Rollen erforderlich ist.

roledelete

Löscht eine Rolle.

Argumente Typ
roleID

roledeleteuser

Entfernt die Rollenzuweisung für einen Benutzer. Geerbte Rollen durch den Benutzer werden von diesem Befehl widerrufen.

Argumente Typ
userID
roleID
contextID (optional)

roleproposeOrgUnit

Schlägt eine Rolle vor, die sie den Mitgliedern und den Unter-OrgUnits einer OrgUnit zuweist.

Argumente Typ
OrgUnitID
roleID
durationType (optional) Kann Werte "frei", "Stunden" und "Tage" enthalten.
durationLength Erforderlich, wenn durationType "Stunden" oder "Tage" ist, sollte den ganzzahligen Wert für die Anzahl von Stunden oder Tagen enthalten, die der Rolle einem Benutzer zugewiesen ist.
durationFixed "true" oder "false", gibt an, ob die Zuweisung dieser Rolle zu einem Benutzer gleich "durationLength" sein soll.
inheritThisRole "true" oder "false", gibt an, ob die Rolle für zugrunde liegende Einheiten vorgeschlagen wird.

taskadd

Erstellt einen neuen Vorgang, gibt die ID des neuen Vorgangs zurück.

Argumente Typ
applicationID
Beschreibung Text mit maximal 254 Zeichen.
Taskname Text mit maximal 254 Zeichen.
tokenGroupID
svroleID (optional) Wenn dieses Argument nicht vorhanden ist, wird eine Aufsichtsrolle des aktuellen Benutzers verwendet.
contextAdaptable (optional) ["0","1","N","Y"]
unterstrukturiert (optional) ["0","1","N","Y"]
auditaction (optional)
  • 0: Unbekannt (Standard)
  • 1: ReportOnly
  • 2: AlertAppAll
  • 3: AlertAppObsolete
  • 4: AlertAppMissing
  • 5: EnforceAppAll
  • 6: EnforceAppObsolete
  • 7: EnforceAppMissing
  • 8: AlertEnforceAppAll
  • 9: AlertEnforceAppObsolete
  • 10: AlertEnforceAppMissing
  • 11: ImportAll
auditalertmail (optional) Die E-Mail-Adresse, an die Benachrichtigungen über diese Berechtigung gesendet wurden, werden vom Auditor gesendet. Wenn dieses Argument nicht vorhanden ist, wird die E-Mail-Adresse der Warnung des Auditors verwendet.
MaxRoles (optional) Ganze Zahl
MaxUsers (optional) Ganze Zahl
Rückgabetyp ID des neuen Vorgangs.

taskadditask

Gibt an, dass zwei Vorgänge nicht kompatibel sind.

Argumente Typ
taskID
taskID2

taskaddrole

Weist einer Rolle eine Aufgabe zu.

Argumente Typ
roleID
taskID

taskaddsupervisor

Machen Sie einen Benutzer zu einem Vorgesetzten einer Aufgabe.

Argumente Typ
svroleID Das Argument userID kann auch verwendet werden. In diesem Fall wird die Standardmäßige Aufsichtsrolle ausgewählt. Eine Standardaufseherrolle hat einen Namen wie __svrole gefolgt von einer Zahl. Die Argumentbenutzer-ID kann zur Abwärtskompatibilität verwendet werden.
taskID

useradd

Erstellt einen neuen Benutzer, gibt die ID des neuen Benutzers zurück.

Argumente Typ
Beschreibung
alias
languageID
  • 1: Englisch
  • 2: Niederländisch
OrgUnitID
Enddatum (optional) Das Datumsformat ist "JJJJ-MM-TTThh:nn:ss", wobei nur Jahr, Monat und Tag erforderlich sind. Beispielsweise sind "2004-12-11" und "2004-11-28T08:00" gültige Werte.
deaktiviert (optional)
  • 0: Aktiviert
  • 1: Deaktiviert
MaxPermissions (optional) Ganze Zahl
MaxRoles (optional) Ganze Zahl
Rückgabetyp ID des neuen Benutzers.

UserAddRole

Fügt eine Benutzerrolle hinzu.

Argumente Typ

UserDeleteRole

Löscht eine Benutzerrolle.

Argumente Typ

UserUpdate

Aktualisiert einen Benutzer.

Argumente Typ
UserID
Beschreibung (optional)
Sprache
  • 1: Englisch
  • 2: Niederländisch
userDisabled (optional)
  • 0: Aktiviert
  • 1: Deaktiviert
UserEndDate (optional) Das Datumsformat ist "JJJJ-MM-TTThh:nn:ss", wobei nur Jahr, Monat und Tag erforderlich sind. Beispielsweise sind "2004-12-11" und "2004-11-28T08:00" gültige Werte.
firstName (optional)
MiddleName (optional)
Nachname (optional)
maxPermissions (optional) Ganze Zahl
maxRoles (optional) Ganze Zahl

GetInfo-Funktionen

Die in diesem Abschnitt beschriebenen Funktionen können verwendet werden, um Informationen abzurufen, die im BHOLD-System gespeichert sind. Jede Funktion kann mithilfe der GetInfo-Funktion aus dem BScript-Objekt aufgerufen werden. Für einige Objekte sind Parameter erforderlich. Die zurückgegebenen Daten unterliegen den Ansichtsberechtigungen und den überwachten Objekten des angemeldeten Benutzers.

GetInfo-Argumente

Name BESCHREIBUNG
Anwendungen Gibt eine Liste von Anwendungen zurück.
Attributtypen Gibt eine Liste von Attributtypen zurück.
Orgtypes Gibt eine Liste der Organisationseinheitstypen zurück.
OrgUnits Gibt eine Liste der Organisationseinheiten ohne die Attribute der Organisationseinheiten zurück.
OrgUnitproposedroles Gibt eine Liste der vorgeschlagenen Rollen zurück, die mit der Organisationseinheit verknüpft sind.
OrgUnitroles Gibt eine Liste der direkt verknüpften Rollen der angegebenen Organisationseinheit zurück.
Objecttypeattributetypes
Erlaubnisse
permissionusers
Rollen Gibt eine Liste der Rollen zurück.
roletasks Gibt eine Liste der Aufgaben der angegebenen Rolle zurück.
Aufgaben Gibt alle von BHOLD bekannten Vorgänge zurück.
users Gibt eine Liste von Benutzern zurück.
usersroles Gibt die Liste der verknüpften Supervisorrollen des angegebenen Benutzers zurück.
userpermissions Gibt die Liste der Berechtigungen des angegebenen Benutzers zurück.

OrgUnit-Informationen

Name Die Parameter Rückgabetyp
OrgUnit OrgUnitID OrgUnit
OrgUnitasiattributes OrgUnitID Sammlung
OrgUnits filter (optional), proptypeid (optional)
Sucht nach Einheiten, die die in Filter- beschriebene Zeichenfolge in der in proptypeidbeschriebenen Eigenschaft enthalten. Wenn diese ID nicht angegeben wird, gilt der Filter für die Einheitenbeschreibung. Wenn kein Filter bereitgestellt wird, werden alle sichtbaren Einheiten zurückgegeben.
Sammlung
OrgUnitOrgUnits OrgUnitID Sammlung
OrgUnitparents OrgUnitID Sammlung
OrgUnitpropertyvalues OrgUnitID Sammlung
OrgUnitproptypes Sammlung
OrgUnitusers OrgUnitID Sammlung
OrgUnitproposedroles OrgUnitID Sammlung
OrgUnitroles OrgUnitID Sammlung
OrgUnitinheritedroles OrgUnitID Sammlung
OrgUnitsupervisors OrgUnitID Sammlung
OrgUnitinheritedsupervisors OrgUnitID Sammlung
OrgUnitsupervisorroles OrgUnitID Sammlung

Rolleninformationen

Name Die Parameter Rückgabetyp
Rolle roleID Objekt
Rollen Filter (optional) Sammlung
roleasiattributes roleID Sammlung
roleOrgUnits roleID Sammlung
roleparentroles roleID Sammlung
rolesubroles roleID Sammlung
rolesupervisors roleID Sammlung
rolesupervisorroles roleID Sammlung
roletasks roleID Sammlung
roleusers roleID Sammlung
rolesupervisorroles roleID Sammlung
proposedroleOrgUnits roleID Sammlung
proposedroleusers roleID Sammlung

Berechtigung – Vorgangsinformationen

Name Die Parameter Rückgabetyp
Erlaubnis TaskID Erlaubnis
Erlaubnisse Filter (optional) Sammlung
permissionasiattributes TaskID Sammlung
permissionattachments TaskID Sammlung
permissionattributetypes - Sammlung
permissionparams TaskID Sammlung
permissionroles TaskID Sammlung
permissionsupervisors TaskID Sammlung
permissionsupervisorroles TaskID Sammlung
permissionusers TaskID Sammlung
task TaskID Aufgabe
Aufgaben Filter (optional) Sammlung
taskattachments TaskID Sammlung
taskparams TaskID Sammlung
taskroles TaskID Sammlung
tasksupervisors TaskID Sammlung
tasksupervisorroles TaskID Sammlung
taskusers TaskID Sammlung

Benutzerinformationen

Name Die Parameter Rückgabetyp
Benutzer UserID Benutzer
users filter (optional), attributetypeid (optional)
Sucht nach Benutzern, die in dem durch attributtyp angegebenen Attributtyp enthalten sind, die durch den Filter angegebene Zeichenfolge. Wenn diese ID nicht angegeben wird, gilt der Filter für den Standardalias des Benutzers. Wenn kein Filter bereitgestellt wird, werden alle sichtbaren Benutzer zurückgegeben. Beispiel:
  • GetInfo("users") gibt alle Benutzer zurück.
  • GetInfo("users", "%dmin%") gibt alle Benutzer mit der Zeichenfolge "dmin" im Standardalias zurück.
  • Angenommen, Benutzer haben ein zusätzliches Attribut namens "City".GetInfo("users", "%msterda%", "City"). Dieser Aufruf gibt alle Benutzer zurück, die die Zeichenfolge "msterda" im Attribut "City" haben.
UserCollection
benutzerapplications UserID Sammlung
Benutzerpermissionen UserID Sammlung
userroles UserID Sammlung
usersroles UserID Sammlung
userstasks UserID Sammlung
usersunits UserID Sammlung
usertasks UserID Sammlung
userunits UserID Sammlung

Rückgabetypen

In diesem Abschnitt werden die Rückgabetypen der GetInfo-Funktion beschrieben.

Name Rückgabetyp
Sammlung =<ITEMS>{<ITEM description="..." id="..." />}</ITEMS>
Objekt =<ITEM type="…" description="..." />
OrgUnit = <ITEM id="…" description="..." orgtype="..." parent="..."> <LIST> {<ITEM> <KEY>… </KEY> <VALUE> … </VALUE> </ITEM>} </LIST> </ITEM>
Erlaubnis = <ITEM id="…" description="…" name="…" tokengroup="…" application="…" > <LIST> {<ITEM> <KEY>… </KEY> <VALUE> … </VALUE> </ITEM>} </LIST> </ITEM>
Rollen = <ITEMS> {<ITEM id="…" description="…" />} </ITEMS>
Rolle = <ITEM id="…" description="… " > <LIST> {<ITEM> <KEY>… </KEY> <VALUE> … </VALUE> </ITEM>} </LIST> </ITEM>
Aufgabe Berechtigung anzeigen
Benutzer = <ITEMS> {<ITEM description="…" id="…" alias="…" />} </ITEMS>
Benutzer = <ITEM id="…" description="…" alias="…" firstname="…" lastname="…" uuid="…" language="…"> <LIST> {<ITEM> <KEY>… </KEY> <VALUE> … </VALUE> </ITEM>} </LIST> </ITEM>

Skriptbeispiel

Ein Unternehmen verfügt über einen BHOLD-Server und möchte ein automatisiertes Skript, das neue Kunden erstellt. Die Informationen über das Unternehmen und dessen Einkaufsmanager geben auf einer angepassten Webseite ein. Jeder Kunde wird im Modell als Einheit unter den Einheitenkunden präsentiert. Der Einkaufsmanager ist ebenso Mitglied wie ein Vorgesetzter dieser Einheit. Eine Rolle wird erstellt, die den Besitzern das Recht gibt, im Namen des neuen Kunden zu kaufen.

Dieser Kunde ist jedoch in der Anwendung nicht vorhanden. In der ASI FunctionDispatch wird eine spezielle Funktion implementiert, die ein neues Kundenkonto in der Einkaufsanwendung erstellt. Jeder Kunde hat einen Kundentyp.

Die möglichen Typen können auch von der FunctionDispatch-Funktion dargestellt werden. Die AA wählt den richtigen Typ für den neuen Kunden aus.

Erstellen Sie eine Rolle und Aufgabe, um die Kaufberechtigungen darzustellen. Das echte Kaufrecht wird von der ASI als Datei /customers/customer id/purchasepräsentiert. Diese Datei sollte mit der neuen Aufgabe verknüpft werden.

Die Active Server-Seite, die die Informationen sammelt, sieht wie folgt aus:

<%@ Language=VBScript %>
<% Option Explicit %>
<html>
<body>
<form action="MySubmit.asp" method=post>
<input type="hidden" name="OrgUnitID" 
     value="<% = Request("ID") %>">
Company <input type="text" name="Description"> <br>
Type <select name="OrgType">
<%Dim oOrgType
For Each oOrgType on bscript.getinfo("Orgtypes") %>
<option value="<% = oOrgType.OrgTypeID %>">
<% = oOrgType.Description %>
</option> <%
Next %>
</select>  <br>
Manager <input type="text" name=" manager"> <br>
Alias <input type=" text" name=" alias"> <br>
e-mail <input type=" text" name=" email"> <br>
<input type="submit">
</form>
</body>
</html>

Alle angepassten Seiten müssten die richtigen Informationen anfordern und ein XML-Dokument mit den angeforderten Informationen erstellen. In diesem Beispiel transformiert die Seite "MySubmit" die Daten im XML-Dokument, weisen Sie sie dem b1script zu. Parameter Objekt und ruft schließlich die b1script.ExecuteScript("MyScript")-Funktion auf.

Das folgende Eingabeskript zeigt dieses Beispiel:

<customer>
<description>ACME inc.</description>
<orgtype>5<orgtype>
<name>John Doe</name>
<alias>jdoe</alias>
<email>jdoe@acme.com</email>
</customer>

Dieses Eingabeskript enthält keine Befehle für BHOLD. Dies liegt daran, dass dieses Skript nicht direkt von BHOLD ausgeführt wird; anstelle dessen ist dies die Eingabe für eine vordefinierte Funktion. Diese vordefinierte Funktion übersetzt dieses Objekt in ein XML-Dokument mit BHOLD-Befehlen. Mit diesem Mechanismus wird verhindert, dass der Benutzer Skripts an das BHOLD-System sendet, das Funktionen enthält, die der Benutzer nicht ausführen darf, z. B. setUser und Funktionsverteilungen an eine ASI.

<?xml version="1.0" encoding="utf-8" ?> 
- <functions xmlns="http://tempuri.org/BscriptFunctions.xsd">

  <function name="roleadduser" roleid="" userid="" /> 
  <function name="roledeleteuser" roleid="" userid="" /> 
  </functions>

Nächste Schritte