Freigeben über


BHOLD-Entwicklerreferenz für Microsoft Identity Manager 2016

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

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

  • Benutzereingabe
  • BHOLD-Daten
  • Anwendungen
  • Sonstiges

Die BHOLD-Daten können mithilfe der GetInfo-Funktion des Skriptobjekts abgerufen werden. Es gibt eine vollständige Liste von Befehlen, 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 beeinträchtigen.

Alle diese Informationen werden in einem XML-Dokument abgelegt 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-Skriptverarbeitung

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

Skriptobjekt

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 BHOLD-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 die Fehlernummer 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 Dispatchfunktion, 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 auch über den Webdienst b1scriptserviceauf das BScript-Objekt zugegriffen werden. Dazu fügen Sie einen Webverweis für Ihr 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 Webdienstverweiss zu einem Visual Studio-Projekt.

Das folgende Beispiel zeigt, wie Sie die GetInfo-Funktion von einem Webdienst verwenden. Dieser Code ruft die Organisationseinheit ab, die über eine OrgID von 1 verfügt, 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 Verwaltete BHOLD-Referenz, oder Sie können direkt über einen Browser zum Webdienst navigieren und sie 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. Diese Funktion erfordert zwei Parameter. 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 vordefinierten Skripts, das verwendet werden soll. In Im vordefinierten BHOLD-Skriptverzeichnis sollte hier ein XSL-Dokument mit demselben Namen wie die Funktion, aber mit der XSL-Erweiterung sein.

Wenn die Funktion nicht erfolgreich ist, gibt die ExecuteScript-Funktion den Wert False zurück. Anhand der Fehlerbeschreibung und der Fehlernummer können Sie wissen, was schief gelaufen ist. Es folgt 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 Knotenfunktion mit dem Knotennamen hinzugefügt. ExecuteXML und Error werden am Ende des Dokuments hinzugefügt, alle generierten IDs werden hinzugefügt.

Beachten Sie, dass nur die Funktionen hinzugefügt werden, die einen Fehler enthalten. Die Fehlernummer "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-Feldhalterzeichen "%" können verwendet werden.

Die folgenden Felder werden mit dem Suchwert verwendet:

ID-Datentyp Suchen (Feld)
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 den Zugriff auf diese Seiten. Das BHOLD-System verwaltet Informationen zu den Einstiegspunkten der benutzerdefinierten Seiten. Diese Informationen enthalten Startseite und Funktionsbeschreibung (mehrere Sprachen sollten unterstützt werden).

Ein Benutzer ist autorisiert, die benutzerdefinierten Seiten einzugeben und ein Skript auszuführen. Jeder Einstiegspunkt wird als Aufgabe dargestellt. Jeder Benutzer, der diese Aufgabe über eine Rolle oder Einheit erhalten 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 anderen Identität ausführen kann als der angemeldete Benutzer. Es ist möglich, die Berechtigung zu erteilen, eine bestimmte Aktion auszuführen, ohne über ein Objekt zu verfügen. Für instance kann dies für einen Mitarbeiter nützlich sein, der nur neue Kunden in das Unternehmen aufnehmen darf. Diese Skripts können auch zum Erstellen von Selbstregistrierungsseiten verwendet werden.

Befehlsskript

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

Befehlsskript <functions>functions</functions>
functions Funktion {function}
Funktion <function name="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
value Ein gültiger Parameterwert.
parameterList <parameter> {parameterItem} </parameters>
parameterItem <parameter name="parameterName"> parameterValue </parameter>
return return="@variable@"
-Variable Ein benutzerdefinierter Variablenname.

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

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

Diese XML-Zeichen können in Bezeichnern verwendet werden, werden aber 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.

Funktionen ausführen

In diesem Abschnitt wird beschrieben, wie Sie die Ausführungsfunktionen verwenden.

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 eindeutig ist.

Argumente Typ
BESCHREIBUNG Text
RuleType Geben Sie die Art der Attributregel an. Je nach Art des Attributregeltyps müssen andere Argumente eingeschlossen werden. Die folgenden Regeltypwerte sind gültig:
  • 0: Regulärer Ausdruck (Argument "value" hinzufügen).
  • 1: Wert (fügen Sie die Argumente "Operator" und "Wert" hinzu).
  • 2: Liste der Werte.
  • 3: Range (fügen Sie die Argumente "rangemin" und "rangemax" hinzu).
  • 4: Alter (fügen Sie die Argumente "Operator" und "Wert" hinzu).
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 Number
Hinweis: Dieses Argument ist obligatorisch, wenn RuleType 3 ist.
RangeMax Number
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 AttributeRuleID Text

applicationAdd

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

Argumente Typ
description
Computer
module
parameter
Protokoll
username
password
svroleID (optional) Wenn dieses Argument nicht vorhanden ist, wird eine Supervisorrolle des aktuellen Benutzers verwendet.
Applicationaliasformula (optional) Die Aliasformel wird verwendet, um einen Alias für einen Benutzer zu erstellen, wenn ihm eine Berechtigung der Anwendung zugewiesen wird. Der Alias wird erstellt, wenn der Benutzer noch keinen Alias für diese Anwendung besitzt. Wenn kein Wert angegeben wird, wird der Standardalias des Benutzers 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 kann verwendet werden. Die reservierten Zeichen sind die linke eckige Klammer ([) und die 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 des Attributtyps 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".
MaxLength Zahl in [1,..,255]
ListOfValues (boolescher Wert) ["0"|"1"|"N"|"Y"]
DefaultValue 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
Order Number
LocationID Text
Hinweis: Der Speicherort ist entweder "group" oder "single".
Obligatorisch. ["0"|"1"|"N"|"Y"]
Rückgabetyp Typ

ObjectTypeAddAttributeTypeSet

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

Argumente Typ
ObjectTypeID Text
AttributeTypeSetID Text
Order Number
Sichtbar
  • 0: Der Attributtypsatz ist sichtbar.
  • 2: Der Attributtypsatz wird angezeigt, wenn die Schaltfläche "Weitere Informationen " ausgewählt wird.
  • 1: Der Attributtypsatz ist nicht sichtbar.
Rückgabetyp Typ

OrgUnitadd

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

Argumente Typ
description
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 zum Vorgesetzten einer Organisationseinheit.

Argumente Typ
svroleID Das Argument userID kann auch verwendet werden. In diesem Fall ist die Standard-Supervisorrolle ausgewählt. Eine Standard-Supervisorrolle hat einen Namen wie __svrole gefolgt von einer Zahl. Das Argument userID kann für abwärtskompatibel verwendet werden.
OrgUnitID

OrgUnitadduser

Machen Sie einen Benutzer zum 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 Supervisorrolle des aktuellen Benutzers verwendet.
ContextAdaptable (optional) ["0","1","N","Y"]
MaxPermissions (optional) Integer
MaxRoles (optional) Integer
MaxUsers (optional) Integer
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 den zugrunde liegenden Einheiten vorgeschlagen wird.

roleaddrole

Weist eine Rolle als Unterrolle einer anderen Rolle zu.

Argumente Typ
roleID
subRoleID

roleaddsupervisor

Machen Sie einen Benutzer zum Vorgesetzten einer Rolle.

Argumente Typ
svroleID Das Argument userID kann auch verwendet werden. In diesem Fall ist die Standard-Supervisorrolle ausgewählt. Eine Standard-Supervisorrolle hat einen Namen wie __svrole gefolgt von einer Zahl. Das Argument userID kann für abwärtskompatibel verwendet werden.
roleID

roleadduser

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

Argumente Typ
userID
roleID
durationType (optional) Kann die Werte "free", "hours" und "days" enthalten.
durationLength (optional) Erforderlich, wenn durationType auf "Stunden" oder "Tage" festgelegt ist. sollte den ganzzahligen Wert für die Anzahl der Stunden oder Tage enthalten, die die Rolle einem Benutzer zugewiesen ist.
start (optional) Datum und Uhrzeit der Zuweisung der Rolle. Wenn dieses Attribut weggelassen wird, wird die Rolle sofort zugewiesen. Das Datumsformat ist "YYYY-MM-DDThh: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 "YYYY-MM-DDThh: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 vom Benutzer werden durch diesen Befehl widerrufen.

Argumente Typ
userID
roleID
contextID (optional)

roleproposeOrgUnit

Schlägt eine Rolle vor, um sie den Mitgliedern und den Untergeordneten OrgUnits einer OrgUnit zuzuweisen.

Argumente Typ
OrgUnitID
roleID
durationType (optional) Kann werte "free", "hours" und "days" enthalten.
durationLength Erforderlich, wenn durationType "Stunden" oder "Tage" ist, sollte den ganzzahligen Wert für die Anzahl von Stunden oder Tagen enthalten, die die 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 den zugrunde liegenden Einheiten vorgeschlagen wird.

taskadd

Erstellt eine neue Aufgabe und gibt die ID der neuen Aufgabe zurück.

Argumente Typ
Applicationid
description Text mit maximal 254 Zeichen.
Taskname Text mit maximal 254 Zeichen.
tokenGroupID
svroleID (optional) Wenn dieses Argument nicht vorhanden ist, wird eine Supervisorrolle des aktuellen Benutzers verwendet.
contextAdaptable (optional) ["0","1","N","Y"]
Unterkonstruktion (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, an die Warnungen zu dieser Berechtigung vom Prüfer gesendet werden. Wenn dieses Argument nicht vorhanden ist, wird die Warnungs-E-Mail-Adresse des Prüfers verwendet.
MaxRoles (optional) Integer
MaxUsers (optional) Integer
Rückgabetyp ID der neuen Aufgabe.

taskadditask

Geben Sie an, dass zwei Aufgaben inkompatibel sind.

Argumente Typ
Taskid
taskID2

taskaddrole

Weist einer Rolle eine Aufgabe zu.

Argumente Typ
roleID
Taskid

taskaddsupervisor

Machen Sie einen Benutzer zum Vorgesetzten einer Aufgabe.

Argumente Typ
svroleID Das Argument userID kann auch verwendet werden. In diesem Fall ist die Standard-Supervisorrolle ausgewählt. Eine Standard-Supervisorrolle hat einen Namen wie __svrole gefolgt von einer Zahl. Das Argument userID kann für die Abwärtskompatibilität verwendet werden.
Taskid

Useradd

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

Argumente Typ
description
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 "2004-12-11" und "2004-11-28T08:00" sind gültige Werte.
deaktiviert (optional)
  • 0: Aktiviert
  • 1: Deaktiviert
MaxPermissions (optional) Integer
MaxRoles (optional) Integer
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)
language
  • 1: Englisch
  • 2: Niederländisch
userDisabled (optional)
  • 0: Aktiviert
  • 1: Deaktiviert
UserEndDate (optional) Das Datumsformat ist "YYYY-MM-DDThh: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)
lastName (optional)
maxPermissions (optional) Integer
maxRoles (optional) Integer

GetInfo-Funktionen

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

GetInfo-Argumente

Name BESCHREIBUNG
applications Gibt eine Liste der Anwendungen zurück.
Attributtypen Gibt eine Liste von Attributtypen zurück.
orgtypes Gibt eine Liste von Organisationseinheitentypen zurück.
OrgUnits Gibt eine Liste von 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
Berechtigungen
permissionusers
roles Gibt eine Liste der Rollen zurück.
roletasks Gibt eine Liste der Aufgaben der angegebenen Rolle zurück.
Tasks Gibt alle Aufgaben zurück, die von BHOLD bekannt sind.
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 Info

Name Parameter Rückgabetyp
OrgUnit OrgUnitID OrgUnit
OrgUnitasiattributes OrgUnitID Sammlung
OrgUnits filter (optional), proptypeid (optional)
Sucht nach Einheiten, die die im Filter beschriebene Zeichenfolge in dem in proptypeid beschriebenen Proptyp enthalten. Wenn diese ID weggelassen wird, gilt der Filter für die Einheitenbeschreibung. Wenn kein Filter angegeben 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 Parameter Rückgabetyp
Rolle (role) roleID Object
roles 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 – Aufgabeninformationen

Name Parameter Rückgabetyp
Berechtigung (permission) TaskID Berechtigung
Berechtigungen 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
Tasks filter (optional) Sammlung
taskattachments TaskID Sammlung
taskparams TaskID Sammlung
taskroles TaskID Sammlung
tasksupervisors TaskID Sammlung
tasksupervisorroles TaskID Sammlung
taskusers TaskID Sammlung

Benutzerinformationen

Name Parameter Rückgabetyp
user UserID Benutzer
users filter (optional), attributetypeid (optional)
Sucht nach Benutzern, die in dem durch attributetypeid angegebenen Attributtyp die durch filter angegebene Zeichenfolge enthalten. Wenn diese ID nicht angegeben wird, gilt der Filter für den Standardalias des Benutzers. Wenn kein Filter angegeben 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 verfügen über ein zusätzliches Attribut namens "City".GetInfo("users", "%msterda%", "City"). Dieser Aufruf gibt alle Benutzer mit der Zeichenfolge "msterda" im City-Attribut zurück.
UserCollection
BenutzerAnwendungen 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>
Object =<ITEM type="…" description="..." />
OrgUnit = <ITEM id="…" description="..." orgtype="..." parent="..."> <LIST> {<ITEM> <KEY>… </KEY> <VALUE> … </VALUE> </ITEM>} </LIST> </ITEM>
Berechtigung = <ITEM id="…" description="…" name="…" tokengroup="…" application="…" > <LIST> {<ITEM> <KEY>… </KEY> <VALUE> … </VALUE> </ITEM>} </LIST> </ITEM>
Rollen = <ITEMS> {<ITEM id="…" description="…" />} </ITEMS>
Role = <ITEM id="…" description="… " > <LIST> {<ITEM> <KEY>… </KEY> <VALUE> … </VALUE> </ITEM>} </LIST> </ITEM>
Aufgabe Siehe Berechtigung
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, mit dem neue Kunden erstellt werden. Die Informationen über das Unternehmen und seinen Einkaufsmanager werden in einer angepassten Webseite eingegeben. Jeder Kunde wird im Modell als Einheit unter den Einheitenkunden dargestellt. Der Einkaufsmanager ist ebenso Mitglied wie ein Vorgesetzter dieser Einheit. Es wird eine Rolle erstellt, die den Besitzern das Recht gibt, im Namen des neuen Kunden zu kaufen.

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

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

Erstellen Sie eine Rolle und aufgabe, um die Kaufberechtigungen zu präsentieren. Das echte Kaufrecht wird von der ASI als Datei /customers/customer id/purchasedargestellt. 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üssen 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 und weist sie dem b1script zu. Parameters-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. dies ist stattdessen die Eingabe für eine vordefinierte Funktion. Diese vordefinierte Funktion übersetzt dieses Objekt mit BHOLD-Befehlen in ein XML-Dokument. Dieser Mechanismus verhindert, dass der Benutzer Skripts an das BHOLD-System sendet, die Funktionen enthalten, 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