Partager via


Informations de référence sur les développeurs BHOLD pour Microsoft Identity Manager 2016

Le module BHOLD-core peut traiter les commandes de script. Elle peut être effectuée directement à l’aide de l'bscript.dll dans un projet .NET. Interaction 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 de script. Il existe une liste complète des commandes qui peuvent 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 est 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 a une fonction spéciale, FunctionDispatch, qui peut être utilisée pour présenter des informations spécifiques à l’application. Il s’agit également d’un document XML.

Enfin, s’il n’existe aucun autre moyen, le script peut contenir des commandes directement vers d’autres applications ou systèmes. NoThenstallation d’un logiciel supplémentaire 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 document de commande BHOLD.

de traitement de script 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.

Objet script

Cette section explique comment utiliser l’objet de script.

Récupérer les informations 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 nécessite un nom de fonction et finalement un ou plusieurs paramètres. Si cette fonction réussit, un objet ou une collection BHOLD est retourné sous la forme d’un document XML.

Si la fonction ne réussit pas, la fonction GetInfo retourne une chaîne vide ou une erreur. La description et le nombre d’erreurs 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 d’une application contrôlée par le système BHOLD. Cette fonction nécessite trois paramètres : l’ID de l’application, la fonction de répartition telle qu’elle est définie dans l’ASI et un document XML avec des informations de prise en charge pour l’ASI. Si la fonction réussit, 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 b1scriptservice. Pour ce faire, ajoutez une référence web à votre projet à l’aide de http://<serveur>:5151/BHOLD/Core/b1scriptservice.asmx où <serveur> est le serveur avec les fichiers binaires BHOLD installés. Pour plus d’informations, consultez Ajout d’une référence de service web à un projet 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 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 à l’aide de GetInfo. Pour obtenir des exemples supplémentaires pour SOAP 1.1, SOAP 1.2 et HTTP POST, consultez la section Référence managée BHOLD, ou vous pouvez accéder au service web directement à partir d’un navigateur et les afficher.

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 des scripts

La fonction ExecuteScript de l’objet BScript peut être utilisée pour exécuter des scripts. Cette fonction nécessite 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. Dans le répertoire de scripts prédéfinis BHOLD, il doit s’agir d’un document XSL portant le même nom que la fonction, mais avec l’extension .xsl.

Si la fonction ne réussit pas, la fonction ExecuteScript retourne la valeur False. La description et le nombre d’erreurs peuvent être utilisés pour savoir ce qui s’est passé. 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 une fois que la fonction d’exécution est exécutée. La fonction retourne une chaîne au format XML qui contient le rapport d’exécution complet. Le nœud Script contient la structure XML du script exécuté.

Pour chaque fonction qui échoue pendant 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. Un nombre d’erreurs de « 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 reçoivent un traitement spécial. Les valeurs non numériques sont utilisées comme valeur de recherche pour localiser les entités correspondantes dans le magasin de données BHOLD. Lorsque la valeur de recherche n’est pas unique, la première entité conforme à la valeur de recherche 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. Les caractères génériques SQL '%' peuvent être utilisés.

Les champs suivants sont utilisés avec la valeur de recherche :

Type d’ID Champ de recherche
OrgUnitID Description
roleID Description
taskID Description
userID DefaultAlias

Accès et autorisations de script

Le code côté serveur dans les pages 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 conserve des 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é à entrer les 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 ayant 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. Étant donné qu’un script peut effectuer des actions dans le système BHOLD sous une identité différente de celle de l’utilisateur connecté. Il est possible de donner l’autorisation d’effectuer une action spécifique sans avoir de supervision sur un objet. Par exemple, cela peut être utile pour un employé qui n’est autorisé qu’à entrer de nouveaux clients dans l’entreprise. Ces scripts peuvent également être utilisés pour créer des pages auto-inscrites.

Script de commande

Le script de commande contient une liste de fonctions 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}
fonction <function name="functionName » functionParameters [return] (/> | > parameterList </ function>)
functionName Nom de fonction valide, comme décrit dans les sections suivantes.
functionParameters { functionParameter }
functionParameter parameterName = « parameterValue »
parameterName Nom de paramètre valide.
parameterValue @variable@ | valeur
valeur Valeur de paramètre valide.
parameterList <paramètres> {parameterItem} </parameters>
parameterItem <parameter name="parameterName »> parameterValue </parameter>
return return="@variable@ »
variable Nom de variable personnalisée.

XML contient les traductions suivantes de caractères spéciaux :

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

Ces caractères XML peuvent être utilisés dans des identificateurs, mais ils ne sont pas recommandés.

Le code suivant montre 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 des fonctions

Cette section explique comment utiliser les fonctions d’exécution.

ABAAttributeRuleAdd

Créez une 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é avec la commande « ABAattributeruletypeupdate ». Exige que la description de l’attribut soit unique.

Arguments Catégorie
Description Texte
RuleType Spécifiez le type de règle d’attribut. Selon le type de règle d’attribut, d’autres arguments doivent être inclus. Les valeurs de type de règle suivantes sont valides :
  • 0 : Expression régulière (ajouter l’argument « value »).
  • 1 : Valeur (ajouter des arguments « opérateur » et « value »).
  • 2 : Liste des valeurs.
  • 3 : Plage (ajouter des arguments « rangemin » et « rangemax »).
  • 4 : Âge (ajouter des arguments « opérateur » et « value »).
InvertResult ["0"|"1"|"N"|"Y"]
AttributeTypeID Texte
Arguments facultatifs Catégorie
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 Nombre
Remarque: cet argument est obligatoire si RuleType est 3.
RangeMax Nombre
Remarque: cet argument est obligatoire si RuleType est 3.
Valeur Texte
Remarque: cet argument est obligatoire si RuleType a la valeur 0, 1 ou 4. L’argument doit être une valeur numérique ou alphanumérique.
Type de retour AttributeRuleID Texte

applicationadd

Crée une application, retourne l’ID de la nouvelle application.

Arguments Catégorie
description
machine
module
paramètre
protocole
nom d’utilisateur
mot de passe
svroleID (facultatif) Si cet argument n’est pas présent, un rôle de superviseur de l’utilisateur actuel est utilisé.
Applicationaliasformula (facultatif) La formule d’alias est utilisée pour créer un alias pour un utilisateur lorsqu’il est affecté à une autorisation de l’application. L’alias est créé si l’utilisateur n’a pas déjà d’alias pour cette application. Si aucune valeur n’est donnée à l’alias par défaut de l’utilisateur, elle est utilisée 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 Utilisateur et Application peuvent être utilisés. Le texte libre peut être utilisé. Les caractères réservés sont crochets gauches ([) et crochet droit (]). Par exemple : [Application.bholdDescription]\[User.bholdDefAlias(1,5)].
Type renvoyé ID de la nouvelle application.

AttributeSetValue

Définit la valeur d’un type d’attribut connecté au type d’objet. Nécessite que les descriptions du type d’objet et du type d’attribut soient uniques.

Arguments Catégorie
ObjectTypeID Texte
ObjectID Texte
AttributeTypeID Texte
Valeur Texte
Type de retour Catégorie

AttributeTypeAdd

Insère un nouveau type d’attribut/type de propriété.

Arguments Catégorie
DataTypeID Texte
Description (=Identité) Texte
Remarque: les mots réservés ne peuvent pas être utilisés, notamment « a », « frm », « id », « usr » et « bhold ».
MaxLength Nombre dans [1,..,255]
ListOfValues (booléen) ["0"|"1"|"N"|"Y"]
Valeur par défaut Texte
Type de retour Catégorie
AttributeTypeID Texte

AttributeTypeSetAdd

Insère un nouveau jeu de types d’attributs. Exige que la description d’un jeu de types d’attributs soit unique.

Arguments Catégorie
Description (=Identité) Texte
Type de retour Catégorie
AttributeTypeSetID Texte

AttributeTypeSetAddAttributeType

Insère un nouveau type d’attribut dans un jeu de types d’attributs existant. Exige que les descriptions du jeu de types d’attributs et du type d’attribut soient uniques.

Arguments Catégorie
AttributeTypeSetID Texte
AttributeTypeID Texte
JSON Nombre
LocationID Texte
Remarque: l’emplacement est « group » ou « single ».
Obligatoire ["0"|"1"|"N"|"Y"]
Type de retour Catégorie

ObjectTypeAddAttributeTypeSet

Ajoute un type d’attribut défini à un type d’objet. Nécessite que la description du type d’objet et le jeu de types d’attributs soient uniques. Les types d’objets sont : System, OrgUnit, User, Task.

Arguments Catégorie
ObjectTypeID Texte
AttributeTypeSetID Texte
JSON Nombre
Visible
  • 0 : le jeu de types d’attributs est visible.
  • 2 : Le jeu de types d’attributs est visible lorsque le plus d’informations bouton est sélectionné.
  • 1 : Le jeu de types d’attributs est invisible.
Type de retour Catégorie

OrgUnitad

Crée une unité d’organisation, retourne l’ID de la nouvelle unité organisationnelle.

Arguments Catégorie
description
orgtypeID
parentID
OrgUnitinheritedroles (facultatif)
Type de retour Catégorie
ID de la nouvelle unité Paramètre OrgUnitinheritedroles
a la valeur oui ou non.

OrgUnitadsupervisor

Faire d’un utilisateur un superviseur d’une unité organisationnelle.

Arguments Catégorie
svroleID L’argument userID peut également être utilisé. Dans ce cas, le rôle de superviseur par défaut est sélectionné. Un rôle de superviseur par défaut a un nom tel que __svrole suivi d’un nombre. L’argument userID peut être utilisé pour la compatibilité descendante.
OrgUnitID

OrgUnitadduser

Faire d’un utilisateur un membre d’une unité organisationnelle.

Arguments Catégorie
userID
OrgUnitID

OrgUnitdelete

Supprime une unité d’organisation.

Arguments Catégorie
OrgUnitID

OrgUnitdeleteuser

Supprime un utilisateur en tant que membre d’une unité organisationnelle.

Arguments Catégorie
userID
OrgUnitID

roleadd

Crée un rôle.

Arguments Catégorie
Description
svrole
svroleID (facultatif) Si cet argument n’est pas présent, un rôle de superviseur de l’utilisateur actuel est utilisé.
ContextAdaptable (facultatif) ["0","1","N","Y"]
MaxPermissions (facultatif) Entier
MaxRoles (facultatif) Entier
MaxUsers (facultatif) Entier
Type de retour Catégorie
ID du nouveau rôle

roleaddOrgUnit

Attribue un rôle à une unité organisationnelle.

Arguments Catégorie
OrgUnitID roleID
inheritThisRole 'true' ou 'false', indique si le rôle est proposé aux unités sous-jacentes.

roleaddrole

Attribue un rôle en tant que sous-rôle d’un autre rôle.

Arguments Catégorie
roleID
subRoleID

roleaddsupervisor

Faire d’un utilisateur un superviseur d’un rôle.

Arguments Catégorie
svroleID L’argument userID peut également être utilisé. Dans ce cas, le rôle de superviseur par défaut est sélectionné. Un rôle de superviseur par défaut a un nom tel que __svrole suivi d’un nombre. L’argument userID peut être utilisé pour la compatibilité descendante.
roleID

roleadduser

Attribue un rôle à un utilisateur. Le rôle ne peut pas être un rôle adaptable au contexte lorsqu’aucun contextID n’est donné.

Arguments Catégorie
userID
roleID
durationType (facultatif) Peut contenir les valeurs « free », « hours » et « days ».
durationLength (facultatif) Obligatoire lorsque durationType est « heures » ou « jours ». doit contenir la valeur entière pour le nombre d’heures ou de jours que le rôle est affecté à un utilisateur.
démarrer (facultatif) Date et heure auxquelles le rôle est affecté. Lorsque cet attribut est omis, le rôle est attribué immédiatement. Le format de date est « AAAA-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.
end (facultatif) Date et heure à laquelle le rôle est révoqué. Lorsque durationType et durationLength sont donnés, cette valeur est ignorée. Le format de date est « AAAA-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ée, sinon ignorée.
contextId (facultatif) ID de l’unité organisationnelle, requis uniquement pour les rôles adaptatifs de contexte.

roledelete

Supprime un rôle.

Arguments Catégorie
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 Catégorie
userID
roleID
contextID (facultatif)

roleproposeOrgUnit

Propose un rôle pour l’affecter aux membres et aux sous-OrgUnits d’un OrgUnit.

Arguments Catégorie
OrgUnitID
roleID
durationType (facultatif) Peut contenir des 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 que le rôle est affecté à 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 tâche, retourne l’ID de la nouvelle tâche.

Arguments Catégorie
applicationID
description Texte avec un maximum de 254 caractères.
nom_tâche Texte avec un maximum de 254 caractères.
tokenGroupID
svroleID (facultatif) Si cet argument n’est pas présent, un rôle de superviseur de l’utilisateur actuel est utilisé.
contextAdaptable (facultatif) ["0","1","N","Y"]
sous-construction (facultatif) ["0","1","N","Y"]
auditaction (facultatif)
  • 0 : Inconnu (valeur par défaut)
  • 1 : ReportOnly
  • 2 : AlertAppAll
  • 3 : AlertAppObsolete
  • 4 : AlertAppMissing
  • 5 : EnforceAppAll
  • 6 : EnforceAppObsolete
  • 7 : EnforceAppMissing
  • 8 : AlertEnforceAppAll
  • 9 : AlertEnforceAppObsolete
  • 10 : AlertEnforceAppMissing
  • 11 : ImportAll
auditalertmail (facultatif) L’adresse de messagerie à envoyer aux alertes concernant cette autorisation est envoyée par l’auditeur. Si cet argument n’est pas présent, l’adresse de messagerie de l’alerte de l’auditeur est utilisée.
MaxRoles (facultatif) Entier
MaxUsers (facultatif) Entier
Type de retour ID de la nouvelle tâche.

taskadditask

Indiquez que deux tâches sont incompatibles.

Arguments Catégorie
taskID
taskID2

taskaddrole

Affecte une tâche à un rôle.

Arguments Catégorie
roleID
taskID

taskaddsupervisor

Faire d’un utilisateur un superviseur d’une tâche.

Arguments Catégorie
svroleID L’argument userID peut également être utilisé. Dans ce cas, le rôle de superviseur par défaut est sélectionné. Un rôle de superviseur par défaut a un nom tel que __svrole suivi d’un nombre. L’argument userID peut être utilisé pour la compatibilité descendante.
taskID

useradd

Crée un utilisateur, retourne l’ID du nouvel utilisateur.

Arguments Catégorie
description
alias
languageID
  • 1 : Anglais
  • 2 : Néerlandais
OrgUnitID
enddate (facultatif) Le format de date est « AAAA-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)
  • 0 : Activé
  • 1 : Désactivé
MaxPermissions (facultatif) Entier
MaxRoles (facultatif) Entier
Type de retour ID du nouvel utilisateur.

UserAddRole

Ajoute un rôle d’utilisateur.

Arguments Catégorie

UserDeleteRole

Supprime un rôle d’utilisateur.

Arguments Catégorie

Userupdate

Met à jour un utilisateur.

Arguments Catégorie
UserID
description (facultatif)
Langue
  • 1 : Anglais
  • 2 : Néerlandais
userDisabled (facultatif)
  • 0 : Activé
  • 1 : Désactivé
UserEndDate (facultatif) Le format de date est « AAAA-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) Entier
maxRoles (facultatif) Entier

GetInfo Functions

L’ensemble de fonctions décrites 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 à partir de l’objet BScript. Certains objets nécessitent des paramètres. Les données retournées sont soumises aux autorisations d’affichage et aux objets supervisés de l’utilisateur connecté.

Arguments GetInfo

Nom Description
Applications Retourne une liste d’applications.
attributetypes Retourne une liste de types d’attributs.
orgtypes Retourne une liste de types d’unités d’organisation.
OrgUnits Retourne une liste d’unités organisationnelles sans les attributs des unités organisationnelles.
OrgUnitproposedroles Retourne la liste des rôles proposés liés à l’unité organisationnelle.
OrgUnitroles Retourne une liste des rôles directement liés de l’unité organisationnelle donnée
Objecttypeattributetypes
autorisations
permissionusers
Rôles 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 de superviseur liés de l’utilisateur donné.
userpermissions Retourne la liste des autorisations de l’utilisateur donné.

OrgUnit Info

Nom Paramètres Type de retour
OrgUnit OrgUnitID OrgUnit
OrgUnitasiattributes OrgUnitID Collection
OrgUnits filter (facultatif), proptypeid (facultatif)
Recherche des 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 sur les rôles

Nom Paramètres Type de retour
rôle roleID Objet
Rôles filter (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
proposésroleusers roleID Collection

Autorisation - Informations sur les tâches

Nom Paramètres Type de retour
permission TaskID Autorisation
autorisations filter (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 filter (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 type d’attribut spécifié par attributetypeid la chaîne spécifiée par filtre. Si cet ID est omis, le filtre s’applique à l’alias par défaut de l’utilisateur. Si aucun filtre n’est fourni, tous les utilisateurs visibles sont retournés. Par exemple:
  • GetInfo("users") retourne tous les utilisateurs.
  • GetInfo("users", "%dmin%") retourne tous les utilisateurs avec la chaîne « dmin » dans l’alias par défaut.
  • Supposons que les utilisateurs disposent d’un attribut supplémentaire appelé "City".GetInfo("users", "%msterda%", "City"). Cet appel retourne tous les utilisateurs ayant la chaîne « msterda » dans l’attribut City.
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>
Objet =<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>
Rôle = <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 un script automatisé qui crée de nouveaux clients. Les informations sur l’entreprise et son responsable d’achat entrent dans une page web personnalisée. Chaque client est présenté dans le modèle en tant qu’unité sous les clients de l’unité. Le responsable de l’achat est aussi bien membre qu’un superviseur de cette unité. Un rôle est créé qui donne aux propriétaires le droit d’acheter en nom du nouveau client.

Toutefois, ce client n’existe pas dans l’application. Une fonction spéciale est implémentée dans asI FunctionDispatch qui crée un 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. L’AA choisit le type approprié 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 l’ASI en tant que fichier /customers/customer id/purchase. Ce fichier doit être lié à la nouvelle tâche.

La page Active Server qui collecte 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 doivent effectuer une demande d’informations appropriées 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, l’assignez au b1script. Les paramètres objet et appellent enfin la fonction b1script.ExecuteScript("MyScript").

Le script d’entrée suivant montre 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 d’une fonction prédéfinie. Cette fonction prédéfinie traduit cet objet en document XML avec des commandes BHOLD. Ce mécanisme empêche l’utilisateur d’envoyer des scripts au système BHOLD qui contiennent des fonctions que l’utilisateur n’est pas autorisé à exécuter, telles que setUser et les répartitions de fonction vers 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>

Étapes suivantes