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.

BHOLD Script Processing

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
&amp; &
&lt; <
&gt; >
&quot; "
&apos; '

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 :
  • 0 : expression régulière (ajouter l’argument "valeur").
  • 1 : valeur (ajouter des arguments "opérateur" et "valeur").
  • 2 : liste de valeurs.
  • 3 : plage (ajouter des arguments « RangeMin » et « RangeMax »).
  • 4 : Age (ajouter des arguments "opérateur" et "valeur").
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
  • 0 : l’ensemble de types d’attributs est visible.
  • 2 : l’ensemble de types d’attributs est visible lorsque le bouton plus d’informations est sélectionné.
  • 1 : le type d’attribut défini est invisible.
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)
  • 0 : inconnu (par défaut)
  • 1 : ReportOnly
  • 2 : AlertAppAll
  • 3 : AlertAppObsolete
  • 4 : AlertAppMissing
  • 5 : EnforceAppAll
  • 6 : EnforceAppObsolete
  • 7 : EnforceAppMissing
  • 8 : AlertEnforceAppAll
  • 9 : AlertEnforceAppObsolete
  • 10 : AlertEnforceAppMissing
  • 11 : importail
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
  • 1 : anglais
  • 2 : Néerlandais
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)
  • 0 : activé
  • 1 : désactivé
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
  • 1 : anglais
  • 2 : Néerlandais
userDisabled (facultatif)
  • 0 : activé
  • 1 : désactivé
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 :
  • 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 dont la chaîne est « 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>
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>

Étapes suivantes