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.
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 b1scriptservice
auf 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 |
---|---|
& |
& |
< |
< |
> |
> |
" |
" |
' |
' |
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:
|
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 |
|
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) |
|
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 |
|
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) |
|
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 |
|
userDisabled (optional) |
|
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:
|
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/purchase
dargestellt. 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>