référence du développeur BHOLD pour Microsoft Identity Manager 2016
Le module BHOLD-Core peut traiter les commandes de script. Pour ce faire, vous pouvez utiliser directement la bscript.dll dans un projet .NET. Interagir également avec l’interface b1scriptservice. asmx du service Web.
Avant l’exécution d’un script, toutes les informations contenues dans le script doivent être collectées pour composer ce script. Ces informations peuvent être collectées à partir des sources suivantes :
- Entrée utilisateur
- Données BHOLD
- Applications
- Autre
Les données BHOLD peuvent être récupérées à l’aide de la fonction GetInfo de l’objet script. La liste complète des commandes peut présenter toutes les données stockées dans la base de données BHOLD. Toutefois, les données présentées sont soumises aux autorisations d’affichage de l’utilisateur connecté. Le résultat se présente sous la forme d’un document XML qui peut être analysé.
Une autre source d’informations peut être l’une des applications contrôlées par BHOLD. Le composant logiciel enfichable d’application possède une fonction spéciale, FunctionDispatch, qui peut être utilisée pour présenter des informations spécifiques à l’application. Elle est également présentée sous la forme d’un document XML.
Enfin, s’il n’y a pas d’autre moyen, le script peut contenir des commandes directement pour d’autres applications ou systèmes. La NoThenstallation de logiciels supplémentaires sur le serveur BHOLD peut compromettre la sécurité de l’ensemble du système.
Toutes ces informations sont placées dans un document XML et affectées à l’objet de script BHOLD. L’objet combine ce document avec une fonction prédéfinie. La fonction prédéfinie est un document XSL qui traduit le document d’entrée de script en un document de commande BHOLD.

Les commandes sont exécutées dans le même ordre que dans le document. Si une fonction échoue, toutes les commandes exécutées sont restaurées.
Script (objet)
Cette section décrit comment utiliser l’objet script.
Récupérer les informations de BHOLD
La fonction GetInfo est utilisée pour récupérer des informations à partir des données disponibles dans le système d’autorisation BHOLD. La fonction requiert un nom de fonction et éventuellement un ou plusieurs paramètres. Si cette fonction est exécutée correctement, un objet ou une collection BHOLD est retourné sous la forme d’un document XML.
Si la fonction échoue, la fonction GetInfo renvoie une chaîne vide ou une erreur. La description et le numéro de l’erreur peuvent être utilisés pour obtenir plus d’informations sur l’échec.
La fonction GetInfo « FunctionDispatch » peut être utilisée pour récupérer des informations à partir d’une application contrôlée par le système BHOLD. Cette fonction requiert trois paramètres : l’ID de l’application, la fonction Dispatch telle qu’elle est définie dans ASI et un document XML avec les informations de prise en charge pour le ASI. Si la fonction aboutit, le résultat est disponible au format XML dans l’objet de résultat.
L’extrait de code ci-dessous est un exemple C# simple de GetInfo :
ScriptProcessor myScriptProcessor = new ScriptProcessor();
myScriptProcessor.Initializae("CORP\\b1user");
myScriptProcessor.GetInfo("OrgUnit", "1");
De même, l’objet BScript est également accessible via le service Web . Pour ce faire, ajoutez une référence Web à votre projet à l’aide de http://:5151/BHOLD/Core/b1scriptservice.asmx où est le serveur sur lequel sont installés les fichiers binaires BHOLD. pour plus d’informations, consultez ajout d’une référence de service web à un projet de Visual Studio.
L’exemple suivant montre comment utiliser la fonction GetInfo à partir d’un service Web. Ce code récupère l’unité d’organisation qui a un identifiant OrgID de 1, puis affiche le nom de cette unité d’organisation à l’écran.
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);
}
}
}
L’exemple VBScript suivant utilise le service Web via SOAP et GetInfo. Pour obtenir des exemples supplémentaires concernant SOAP 1,1, SOAP 1,2 et HTTP, consultez la section référence managée BHOLD. vous pouvez accéder au service Web directement à partir d’un navigateur et y accéder à partir de ce dernier.
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
Exécuter les scripts
La fonction ExecuteScript de l’objet BScript peut être utilisée pour exécuter des scripts. Cette fonction requiert deux paramètres. Le premier paramètre est le document XML qui contient les informations personnalisées à utiliser par le script. Le deuxième paramètre est le nom du script prédéfini à utiliser. InIn le répertoire de scripts prédéfinis BHOLD, ici doit être un document XSL portant le même nom que la fonction, mais avec l’extension. Xsl.
Si la fonction échoue, la fonction ExecuteScript retourne la valeur false. La description et le numéro de l’erreur peuvent être utilisés pour connaître le problème. Voici un exemple d’utilisation de la méthode Web ExecuteXML. Cette méthode appelle ExecuteScript.
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
Cette fonction GetInfo est disponible après l’exécution de la fonction ExecuteScript . La fonction retourne une chaîne au format XML qui contient le rapport d’exécution complet. Le nœud de script contient la structure XML du script exécuté.
Pour chaque fonction qui échoue au cours de l’exécution du script, une fonction de nœud est ajoutée avec le nom des nœuds. ExecuteXML et Error est ajouté à la fin du document. tous les ID générés sont ajoutés.
Notez que seules les fonctions, qui contiennent une erreur, sont ajoutées. Le numéro d’erreur « 0 » signifie que la fonction n’est pas exécutée.
<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>
Paramètres d’ID
Les paramètres d’ID bénéficient d’un traitement spécial. Les valeurs non numériques sont utilisées comme valeur de recherche pour la localisation des entités correspondantes dans le magasin de données BHOLD. Lorsque la valeur de recherche n’est pas unique, la première entité qui est conforme à la valeur recherchée est retournée.
Pour distinguer les valeurs de recherche numériques des ID, il est possible d’utiliser un préfixe. Lorsque les six premiers caractères de la valeur de recherche sont égaux à « no_id : », ces caractères sont supprimés avant que la valeur ne soit utilisée pour la recherche. SQL caractères génériques'% 'peuvent être utilisés.
Les champs suivants sont utilisés avec la valeur de recherche :
| Type ID | Champ de recherche |
|---|---|
| OrgUnitID | Description |
| roleID | Description |
| taskID | Description |
| userID | DefaultAlias |
Accès aux scripts et autorisations
Le code côté serveur dans les pages de Active Server est utilisé pour exécuter les scripts. Par conséquent, l’accès au script signifie l’accès à ces pages. Le système BHOLD gère les informations sur les points d’entrée des pages personnalisées. Ces informations incluent la page de démarrage et la description de la fonction (plusieurs langues doivent être prises en charge).
Un utilisateur est autorisé à accéder aux pages personnalisées et à exécuter un script. Chaque point d’entrée est présenté sous la forme d’une tâche. Chaque utilisateur qui a obtenu cette tâche via un rôle ou une unité est en mesure d’exécuter la fonction correspondante.
Une nouvelle fonction dans le menu présente toutes les fonctions personnalisées qui peuvent être exécutées par l’utilisateur. Parce qu’un script peut effectuer des actions dans le système BHOLD sous une identité différente de l’utilisateur connecté. Il est possible d’accorder l’autorisation d’effectuer une action spécifique sans avoir à surveiller les objets. Par exemple, cela peut être utile pour un employé qui est autorisé uniquement à entrer de nouveaux clients pour l’entreprise. Ces scripts peuvent également être utilisés pour créer des pages à inscription automatique.
Script de commande
Le script de commande contient une liste de fonctions qui sont exécutées par le système BHOLD. La liste est écrite dans un document XML conforme aux définitions suivantes :
| Script de commande | <functions>functions</functions> |
|---|---|
| functions | fonction {function} |
| function | <function name = "nomfonction" functionParameters [Return] (/ > | > parameterList < /Function > ) |
| functionName | Un nom de fonction valide, comme décrit dans les sections suivantes. |
| functionParameters | { functionParameter } |
| functionParameter | parameterName = "parameterValue" |
| parameterName | Nom de paramètre valide. |
| parameterValue | @variable@ | ajoutée |
| value | Valeur de paramètre valide. |
| parameterList | {parameterItem} |
| parameterItem | parameterValue |
| return | Return = "@variable @" |
| variable | Nom de variable personnalisée. |
XML contient les traductions suivantes de caractères spéciaux :
| XML | Caractère |
|---|---|
& |
& |
< |
< |
> |
> |
" |
" |
' |
' |
Ces caractères XML peuvent être utilisés dans les identificateurs, mais ils ne sont pas recommandés.
Le code suivant illustre un exemple de document de commande valide avec trois fonctions :
<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>
La fonction OrgUnitAdd stocke l’ID de l’unité créée dans une variable appelée UnitID. Cette variable est utilisée comme entrée pour la fonction UserAdd. La valeur de retour de cette fonction n’est pas utilisée. Les sections suivantes décrivent toutes les fonctions disponibles, les paramètres requis et leurs valeurs de retour.
Exécuter les fonctions
Cette section décrit comment utiliser les fonctions d’exécution.
ABAAttributeRuleAdd
Créer une nouvelle règle d’attribut sur un type d’attribut spécifique. Les règles d’attribut ne peuvent être liées qu’à un seul type d’attribut.
La règle d’attribut spécifiée peut être liée à tous les types d’attributs possibles.
Le RuleType ne peut pas être modifié à l’aide de la commande « ABAattributeruletypeupdate ». Requiert que la description de l’attribut soit unique.
| Arguments | Type |
|---|---|
| Description | Texte |
| RuleType | Spécifiez le type de règle d’attribut. Selon le type de règle d’attribut, les autres arguments doivent être inclus. Les valeurs de type de règle suivantes sont valides :
|
| InvertResult | ["0"|"1"|"N"|"Y"] |
| AttributeTypeID | Texte |
| Arguments facultatifs | Type |
|---|---|
| Opérateur | Texte Remarque: cet argument est obligatoire si RuleType est 1 ou 4. Les valeurs possibles sont « = », « < » ou « > ». Les balises XML doivent utiliser « > » pour « » > et « < » pour «» < . |
| RangeMin | Numéro Remarque: cet argument est obligatoire si RuleType est 3. |
| RangeMax | Numéro Remarque: cet argument est obligatoire si RuleType est 3. |
| Valeur | Texte Remarque: cet argument est obligatoire si RuleType est égal à 0, 1 ou 4. L’argument doit être une valeur numérique ou alphanumérique. |
| Type de retour AttributeRuleID | Texte |
applicationadd
Crée une nouvelle application, retourne l’ID de la nouvelle application.
| Arguments | Type |
|---|---|
| description | |
| ordinateur | |
| module | |
| paramètre | |
| protocol | |
| username | |
| mot de passe | |
| svroleID (facultatif) | Si cet argument n’est pas présent, un rôle Superviseur de l’utilisateur actuel est utilisé. |
| Applicationaliasformula (facultatif) | La formule alias est utilisée pour créer un alias pour un utilisateur lorsqu’il est assigné à une autorisation de l’application. L’alias est créé si l’utilisateur n’a pas encore d’alias pour cette application. Si aucune valeur n’est donnée, l’alias par défaut de l’utilisateur est utilisé comme alias pour l’application. La formule est mise en forme comme [<<objecttype>>.<<nameofobjecttypeattribute>>(startindexoffset,length offset)] . Le décalage est facultatif. Seuls les attributs d’utilisateur et d’application peuvent être utilisés. Le texte libre peut être utilisé. Les caractères réservés sont le crochet gauche ([) et le crochet droit (]). Par exemple : [Application.bholdDescription]\[User.bholdDefAlias(1,5)]. |
| Type de retour | ID de la nouvelle application. |
AttributeSetValue
Définit la valeur d’un type d’attribut connecté au type d’objet. Requiert que les descriptions du type d’objet et du type d’attribut soient uniques.
| Arguments | Type |
|---|---|
| ObjectTypeID | Texte |
| ObjectID | Texte |
| AttributeTypeID | Texte |
| Valeur | Texte |
| Type de retour | Type |
AttributeTypeAdd
Insère un nouveau type d’attribut/type de propriété.
| Arguments | Type |
|---|---|
| DataTypeID | Texte |
| Description (= identité) | Texte Remarque: les mots réservés ne peuvent pas être utilisés, y compris « a », « frm », « ID », « usr » et « bhold ». |
| MaxLength | Nombre dans [1,.., 255] |
| ListOfValues (booléen) | ["0"|"1"|"N"|"Y"] |
| DefaultValue | Texte |
| Type de retour | Type |
| AttributeTypeID | Texte |
AttributeTypeSetAdd
Insère un nouveau type d’attribut défini. Requiert que la description d’un ensemble de types d’attributs soit unique.
| Arguments | Type |
|---|---|
| Description (= identité) | Texte |
| Type de retour | Type |
| AttributeTypeSetID | Texte |
AttributeTypeSetAddAttributeType
Insère un nouveau type d’attribut dans un ensemble de types d’attributs existant. Requiert que les descriptions de l’ensemble de types d’attributs et du type d’attribut soient uniques.
| Arguments | Type |
|---|---|
| AttributeTypeSetID | Texte |
| AttributeTypeID | Texte |
| JSON | Numéro |
| LocationID | Texte Remarque: l’emplacement est soit « groupe » soit « unique ». |
| Obligatoire | ["0"|"1"|"N"|"Y"] |
| Type de retour | Type |
ObjectTypeAddAttributeTypeSet
Ajoute un type d’attribut défini à un type d’objet. Requiert que la description du type d’objet et le type d’attribut défini soient uniques. Les types d’objet sont : System, unité, User, Task.
| Arguments | Type |
|---|---|
| ObjectTypeID | Texte |
| AttributeTypeSetID | Texte |
| JSON | Numéro |
| Visible |
|
| Type de retour | Type |
OrgUnitadd
Crée une nouvelle unité d’organisation, retourne l’ID de la nouvelle unité d’organisation.
| Arguments | Type |
|---|---|
| description | |
| orgtypeID | |
| parentID | |
| OrgUnitinheritedroles (facultatif) | |
| Type de retour | Type |
| ID de la nouvelle unité | Le paramètre OrgUnitinheritedroles a la valeur Oui ou non. |
OrgUnitaddsupervisor
Transformer un utilisateur en superviseur d’une unité d’organisation.
| Arguments | Type |
|---|---|
| svroleID | L’argument userID peut également être utilisé. Dans ce cas, le rôle Superviseur par défaut est sélectionné. Un rôle Superviseur par défaut a un nom comme __svrole suivi d’un nombre. L’argument userID peut être utilisé à des fins de compatibilité descendante. |
| OrgUnitID |
OrgUnitadduser
Rendre un utilisateur membre d’une unité d’organisation.
| Arguments | Type |
|---|---|
| userID | |
| OrgUnitID |
OrgUnitdelete
Supprime une unité d’organisation.
| Arguments | Type |
|---|---|
| OrgUnitID |
OrgUnitdeleteuser
Supprime un utilisateur en tant que membre d’une unité d’organisation.
| Arguments | Type |
|---|---|
| userID | |
| OrgUnitID |
roleadd
Crée un nouveau rôle.
| Arguments | Type |
|---|---|
| Description | |
| svrole | |
| svroleID (facultatif) | Si cet argument n’est pas présent, un rôle Superviseur de l’utilisateur actuel est utilisé. |
| ContextAdaptable (facultatif) | ["0","1","N","Y"] |
| MaxPermissions (facultatif) | Integer |
| MaxRoles (facultatif) | Integer |
| MaxUsers (facultatif) | Integer |
| Type de retour | Type |
| ID du nouveau rôle |
roleaddOrgUnit
Affecte un rôle à une unité d’organisation.
| Arguments | Type |
|---|---|
| OrgUnitID | roleID |
| inheritThisRole | « true » ou « false » indique si le rôle est proposé aux unités sous-jacentes. |
roleaddrole
Affecte un rôle en tant que sous-rôle d’un autre rôle.
| Arguments | Type |
|---|---|
| roleID | |
| subRoleID |
roleaddsupervisor
Transformer un utilisateur en superviseur d’un rôle.
| Arguments | Type |
|---|---|
| svroleID | L’argument userID peut également être utilisé. Dans ce cas, le rôle Superviseur par défaut est sélectionné. Un rôle Superviseur par défaut a un nom comme __svrole suivi d’un nombre. L’argument userID peut être utilisé à des fins de compatibilité descendante. |
| roleID |
roleadduser
Attribue un rôle à un utilisateur. Le rôle ne peut pas être un rôle adaptable de contexte quand aucun contextID n’est fourni.
| Arguments | Type |
|---|---|
| userID | |
| roleID | |
| durationType (facultatif) | Peut contenir les valeurs « Free », « Hours » et « Days ». |
| durationLength (facultatif) | Obligatoire lorsque durationType est « hours » ou « Days ». doit contenir la valeur entière pour le nombre d’heures ou de jours pendant lequel le rôle est attribué à un utilisateur. |
| début (facultatif) | Date et heure auxquelles le rôle est attribué. Lorsque cet attribut est omis, le rôle est affecté immédiatement. Le format de date est « YYYY-MM-DDThh : nn : SS », où seules l’année, le mois et le jour sont requis. par exemple, « 2004-12-11 » et « 2004-11-28T08:00 » sont des valeurs valides. |
| fin (facultatif) | Date et heure de la révocation du rôle. Quand durationType et durationLength sont spécifiés, cette valeur est ignorée. Le format de date est « YYYY-MM-DDThh : nn : SS », où seules l’année, le mois et le jour sont requis. par exemple, « 2004-12-11 » et « 2004-11-28T08:00 » sont des valeurs valides. |
| linkreason | Obligatoire lorsque le début, la fin ou la durée est donné, sinon ignoré. |
| contextId (facultatif) | ID de l’unité d’organisation, uniquement requis pour les rôles adaptables du contexte. |
roledelete
Supprime un rôle.
| Arguments | Type |
|---|---|
| roleID |
roledeleteuser
Supprime l’attribution de rôle à un utilisateur. Les rôles hérités par l’utilisateur sont révoqués par cette commande.
| Arguments | Type |
|---|---|
| userID | |
| roleID | |
| contextID (facultatif) |
roleproposeOrgUnit
Propose un rôle pour l’attribuer aux membres et aux sous-unités d’un unité.
| Arguments | Type |
|---|---|
| OrgUnitID | |
| roleID | |
| durationType (facultatif) | Peut contenir les valeurs « Free », « Hours » et « Days ». |
| durationLength | Obligatoire lorsque durationType est « hours » ou « Days », doit contenir la valeur entière pour le nombre d’heures ou de jours pendant lequel le rôle est attribué à un utilisateur. |
| durationFixed | « true » ou « false » indique si l’attribution de ce rôle à un utilisateur doit être égale à durationLength. |
| inheritThisRole | « true » ou « false » indique si le rôle est proposé aux unités sous-jacentes. |
taskadd
Crée une nouvelle tâche, retourne l’ID de la nouvelle tâche.
| Arguments | Type |
|---|---|
| applicationID | |
| description | Texte avec un maximum de 254 caractères. |
| TaskName | Texte avec un maximum de 254 caractères. |
| tokenGroupID | |
| svroleID (facultatif) | Si cet argument n’est pas présent, un rôle Superviseur de l’utilisateur actuel est utilisé. |
| contextAdaptable (facultatif) | ["0","1","N","Y"] |
| sous-construction (facultatif) | ["0","1","N","Y"] |
| AuditAction (facultatif) |
|
| auditalertmail (facultatif) | L’adresse de messagerie à laquelle étaient des alertes concernant cette autorisation est envoyée par l’auditeur. Si cet argument n’est pas présent, l’adresse de messagerie d’alerte de l’auditeur est utilisée. |
| MaxRoles (facultatif) | Integer |
| MaxUsers (facultatif) | Integer |
| Type de retour | ID de la nouvelle tâche. |
taskadditask
Indiquer que deux tâches sont incompatibles.
| Arguments | Type |
|---|---|
| taskID | |
| taskID2 |
taskaddrole
Assigne une tâche à un rôle.
| Arguments | Type |
|---|---|
| roleID | |
| taskID |
taskaddsupervisor
Transformer un utilisateur en superviseur d’une tâche.
| Arguments | Type |
|---|---|
| svroleID | L’argument userID peut également être utilisé. Dans ce cas, le rôle Superviseur par défaut est sélectionné. Un rôle Superviseur par défaut a un nom comme __svrole suivi d’un nombre. L’argument userID peut être utilisé à des fins de compatibilité descendante. |
| taskID |
useradd
Crée un nouvel utilisateur, retourne l’ID du nouvel utilisateur.
| Arguments | Type |
|---|---|
| description | |
| alias | |
| languageID |
|
| OrgUnitID | |
| EndDate (facultatif) | Le format de date est « YYYY-MM-DDThh : nn : SS », où seules l’année, le mois et le jour sont requis. par exemple, « 2004-12-11 » et « 2004-11-28T08:00 » sont des valeurs valides. |
| désactivé (facultatif) |
|
| MaxPermissions (facultatif) | Integer |
| MaxRoles (facultatif) | Integer |
| Type de retour | ID du nouvel utilisateur. |
UserAddRole
Ajoute un rôle d’utilisateur.
| Arguments | Type |
|---|---|
UserDeleteRole
Supprime un rôle d’utilisateur.
| Arguments | Type |
|---|---|
Userupdate
Met à jour un utilisateur.
| Arguments | Type |
|---|---|
| UserID | |
| Description (facultatif) | |
| langage |
|
| userDisabled (facultatif) |
|
| UserEndDate (facultatif) | Le format de date est « YYYY-MM-DDThh : nn : SS », où seules l’année, le mois et le jour sont requis. par exemple, « 2004-12-11 » et « 2004-11-28T08:00 » sont des valeurs valides. |
| firstName (facultatif) | |
| middleName (facultatif) | |
| lastName (facultatif) | |
| maxPermissions (facultatif) | Integer |
| maxRoles (facultatif) | Integer |
GetInfo, fonctions
L’ensemble de fonctions décrit dans cette section peut être utilisé pour récupérer des informations stockées dans le système BHOLD. Chaque fonction peut être appelée à l’aide de la fonction GetInfo de l’objet BScript. Certains objets requièrent des paramètres. Les données retournées sont soumises aux autorisations de vue et aux objets supervisés de l’utilisateur connecté.
Arguments GetInfo
| Nom | Description |
|---|---|
| applications | Renvoie une liste d’applications. |
| attributetypes | Retourne une liste de types d’attributs. |
| orgtypes | Retourne une liste de types d’unités d’organisation. |
| Unités | Retourne une liste d’unités d’organisation sans les attributs des unités d’organisation. |
| OrgUnitproposedroles | Retourne la liste des rôles proposés liés à l’unité d’organisation. |
| OrgUnitroles | Retourne la liste des rôles directement liés de l’unité d’organisation donnée. |
| Objecttypeattributetypes | |
| autorisations | |
| permissionusers | |
| roles | Retourne une liste de rôles. |
| roletasks | Retourne la liste des tâches du rôle donné. |
| tâches | Retourne toutes les tâches connues par BHOLD. |
| users | Retourne une liste d’utilisateurs. |
| usersroles | Retourne la liste des rôles superviseur liés de l’utilisateur donné. |
| userpermissions | Retourne la liste des autorisations de l’utilisateur donné. |
Informations unité
| Nom | Paramètres | Type de retour |
|---|---|---|
| OrgUnit | OrgUnitID | OrgUnit |
| OrgUnitasiattributes | OrgUnitID | Collection |
| Unités | Filter (facultatif), proptypeid (facultatif) Recherche les unités qui contiennent la chaîne décrite dans filtre dans le propType décrit dans proptypeid. Si cet ID est omis, le filtre s’applique à la description de l’unité. Si aucun filtre n’est fourni, toutes les unités visibles sont retournées. |
Collection |
| OrgUnitOrgUnits | OrgUnitID | Collection |
| OrgUnitparents | OrgUnitID | Collection |
| OrgUnitpropertyvalues | OrgUnitID | Collection |
| OrgUnitproptypes | Collection | |
| OrgUnitusers | OrgUnitID | Collection |
| OrgUnitproposedroles | OrgUnitID | Collection |
| OrgUnitroles | OrgUnitID | Collection |
| OrgUnitinheritedroles | OrgUnitID | Collection |
| OrgUnitsupervisors | OrgUnitID | Collection |
| OrgUnitinheritedsupervisors | OrgUnitID | Collection |
| OrgUnitsupervisorroles | OrgUnitID | Collection |
Informations de rôle
| Nom | Paramètres | Type de retour |
|---|---|---|
| rôle | roleID | Object |
| roles | filtre (facultatif) | Collection |
| roleasiattributes | roleID | Collection |
| roleOrgUnits | roleID | Collection |
| roleparentroles | roleID | Collection |
| rolesubroles | roleID | Collection |
| rolesupervisors | roleID | Collection |
| rolesupervisorroles | roleID | Collection |
| roletasks | roleID | Collection |
| roleusers | roleID | Collection |
| rolesupervisorroles | roleID | Collection |
| proposedroleOrgUnits | roleID | Collection |
| proposedroleusers | roleID | Collection |
Autorisation-informations sur la tâche
| Nom | Paramètres | Type de retour |
|---|---|---|
| autorisation | TaskID | Autorisation |
| autorisations | filtre (facultatif) | Collection |
| permissionasiattributes | TaskID | Collection |
| permissionattachments | TaskID | Collection |
| permissionattributetypes | - | Collection |
| permissionparams | TaskID | Collection |
| permissionroles | TaskID | Collection |
| permissionsupervisors | TaskID | Collection |
| permissionsupervisorroles | TaskID | Collection |
| permissionusers | TaskID | Collection |
| tâche | TaskID | Tâche |
| tâches | filtre (facultatif) | Collection |
| taskattachments | TaskID | Collection |
| taskparams | TaskID | Collection |
| taskroles | TaskID | Collection |
| tasksupervisors | TaskID | Collection |
| tasksupervisorroles | TaskID | Collection |
| taskusers | TaskID | Collection |
Informations utilisateur
| Nom | Paramètres | Type de retour |
|---|---|---|
| utilisateur | UserID | Utilisateur |
| users | Filter (facultatif), attributetypeid (facultatif) Recherche les utilisateurs qui contiennent dans le AttributeType spécifié par attributetypeid la chaîne spécifiée par le filtre. Si cet ID est omis, le filtre s’applique à l’alias de l’utilisateur par défaut. Si aucun filtre n’est fourni, tous les utilisateurs visibles sont retournés. Par exemple :
|
UserCollection |
| usersapplications | UserID | Collection |
| Userpermissions | UserID | Collection |
| UserRoles | UserID | Collection |
| usersroles | UserID | Collection |
| userstasks | UserID | Collection |
| usersunits | UserID | Collection |
| usertasks | UserID | Collection |
| userunits | UserID | Collection |
Types de retour
Dans cette section, les types de retour de la fonction GetInfo sont décrits.
| Nom | Type de retour |
|---|---|
| Collection | =<ITEMS>{<ITEM description="..." id="..." />}</ITEMS> |
| Object | =<ITEM type="…" description="..." /> |
| OrgUnit | = <ITEM id="…" description="..." orgtype="..." parent="..."> <LIST> {<ITEM> <KEY>… </KEY> <VALUE> … </VALUE> </ITEM>} </LIST> </ITEM> |
| Autorisation | = <ITEM id="…" description="…" name="…" tokengroup="…" application="…" > <LIST> {<ITEM> <KEY>… </KEY> <VALUE> … </VALUE> </ITEM>} </LIST> </ITEM> |
| Rôles | = <ITEMS> {<ITEM id="…" description="…" />} </ITEMS> |
| Role | = <ITEM id="…" description="… " > <LIST> {<ITEM> <KEY>… </KEY> <VALUE> … </VALUE> </ITEM>} </LIST> </ITEM> |
| Tâche | Voir l’autorisation |
| Utilisateurs | = <ITEMS> {<ITEM description="…" id="…" alias="…" />} </ITEMS> |
| Utilisateur | = <ITEM id="…" description="…" alias="…" firstname="…" lastname="…" uuid="…" language="…"> <LIST> {<ITEM> <KEY>… </KEY> <VALUE> … </VALUE> </ITEM>} </LIST> </ITEM> |
Exemple de script
Une entreprise dispose d’un serveur BHOLD et souhaite disposer d’un script automatisé qui crée de nouveaux clients. Les informations relatives à la société et à son responsable des achats entrent dans une page Web personnalisée. Chaque client est présenté dans le modèle en tant qu’unité sous l’unité clients. Le responsable des achats est également membre du superviseur de cette unité. Un rôle est créé, qui donne aux propriétaires le droit d’effectuer des achats dans le nom du nouveau client.
Toutefois, ce client n’existe pas dans l’application. Une fonction spéciale est implémentée dans le FunctionDispatch ASI qui crée un nouveau compte client dans l’application d’achat. Chaque client a un type de client.
Les types possibles peuvent également être présentés par la fonction FunctionDispatch. Le AA choisit le type correct pour le nouveau client.
Créez un rôle et une tâche pour présenter les privilèges d’achat. Le privilège d’achat réel est présenté par le fichier ASI sous forme de fichier /customers/customer id/purchase . Ce fichier doit être lié à la nouvelle tâche.
La page de Active Server qui recueille les informations ressemble à ceci :
<%@ 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>
Toutes les pages personnalisées devraient vous demander les bonnes informations et créer un document XML avec les informations demandées. Dans cet exemple, la page MySubmit transforme les données dans le document XML, les affecte au b1script. L’objet Parameters et enfin appelle la fonction.
Le script d’entrée suivant illustre cet exemple :
<customer>
<description>ACME inc.</description>
<orgtype>5<orgtype>
<name>John Doe</name>
<alias>jdoe</alias>
<email>jdoe@acme.com</email>
</customer>
Ce script d’entrée ne contient aucune commande pour BHOLD. Cela est dû au fait que ce script n’est pas exécuté directement par BHOLD ; au lieu de cela, il s’agit de l’entrée pour une fonction prédéfinie. Cette fonction prédéfinie traduit cet objet en un document XML avec des commandes BHOLD. Ce mécanisme limite l’utilisateur à envoyer des scripts au système BHOLD qui contiennent des fonctions que l’utilisateur n’est pas autorisé à exécuter, telles que les distributions setUser et Function à un 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>