Partager via


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

Le module BHOLD-core peut traiter des commandes de script. Pour ce faire, utilisez directement le bscript.dll dans un projet .NET. Interaction é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
  • Autres

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 est également présenté sous forme de document XML.

Enfin, s’il n’existe pas d’autre moyen, le script peut contenir des commandes directement vers d’autres applications ou systèmes. Aucunethéstallation 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 seul 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.

Traitement des scripts 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 éventuellement 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 échoue, la fonction GetInfo retourne 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 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 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 b1scriptserviceweb . Pour ce faire, ajoutez une référence web à votre projet à l’aide de http://< server> :5151/BHOLD/Core/b1scriptservice.asmx où <le 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 échoue, la fonction ExecuteScript retourne la valeur False. La description et le numéro de l’erreur peuvent être utilisés pour savoir ce qui s’est mal 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 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 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 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 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 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 serveur actif 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 forme de tâche. Chaque utilisateur qui a obtenu cette tâche via un rôle ou une unité peut 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. Car 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 d’accorder l’autorisation d’effectuer une action spécifique sans avoir de supervision sur n’importe quel objet. Pour instance, 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 d’auto-inscription.

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}
function <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
value Valeur de paramètre valide.
parameterList <parameters> {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 Caractère
&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 ». Nécessite que la description de l’attribut par unique.

Arguments Type
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 (ajoutez les arguments « operator » et « value »).
  • 2 : Liste des valeurs.
  • 3 : Plage (ajoutez les arguments « rangemin » et « rangemax »).
  • 4 : Age (ajoutez les arguments « operator » et « value »).
InvertResult ["0"|"1"|"N"|"Y"]
AttributeTypeID Texte
Arguments facultatifs Type
Opérateur Texte
Remarque : cet argument est obligatoire si RuleType a la valeur 1 ou 4. Les valeurs possibles sont '=', '<' ou '>'. Les balises XML doivent utiliser «> » pour «> » et «< » pour « ».<
RangeMin Number
Remarque : cet argument est obligatoire si RuleType a la valeur 3.
RangeMax Number
Remarque : cet argument est obligatoire si RuleType a la valeur 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 Type
description
ordinateur
module
paramètre
protocol
username
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 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 en tant que [<<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 crochet gauche ([) et 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. Exige 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, notamment « 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 jeu de types d’attributs. Exige que la description d’un jeu 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 jeu de types d’attributs existant. Nécessite que les descriptions du jeu de types d’attributs et du type d’attribut soient uniques.

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

ObjectTypeAddAttributeTypeSet

Ajoute un type d’attribut défini à un type d’objet. Exige 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 Type
ObjectTypeID Texte
AttributeTypeSetID Texte
JSON Number
Visible
  • 0 : l’ensemble de types d’attributs est visible.
  • 2 : Le type d’attribut défini 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 unité d’organisation, retourne l’ID de la nouvelle unité organisationnelle.

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

OrgUnitaddsupervisor

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

Arguments Type
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 comme __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 Type
userID
OrgUnitID

OrgUnitdelete

Supprime une unité organisationnelle.

Arguments Type
OrgUnitID

OrgUnitdeleteuser

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

Arguments Type
userID
OrgUnitID

roleadd

Crée un rôle.

Arguments Type
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) Integer
MaxRoles (facultatif) Integer
MaxUsers (facultatif) Integer
Type de retour Type
ID du nouveau rôle

roleaddOrgUnit

Attribue un rôle à une unité organisationnelle.

Arguments Type
OrgUnitID roleID
hériteThisRole '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 Type
roleID
subRoleID

roleaddsupervisor

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

Arguments Type
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 comme __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 d’adaptation au contexte lorsqu’aucun contextID n’est donné.

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 lesquels le rôle est attribué à un utilisateur.
démarrer (facultatif) Date et heure auxquelles le rôle est attribué. Lorsque cet attribut est omis, le rôle est immédiatement attribué. Le format de date est « AAAA-MM-JJThh :nn :ss », où seuls 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 auxquelles 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-JJThh :nn :ss », où seuls 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é organisationnelle, obligatoire uniquement pour les rôles d’adaptation au 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’affecter aux membres et aux sous-OrgUnits d’une OrgUnit.

Arguments Type
OrgUnitID
roleID
durationType (facultatif) Peut contenir les valeurs « free », « hours » et « days ».
durationLength Obligatoire lorsque durationType a la valeur « hours » ou « days », doit contenir la valeur entière pour le nombre d’heures ou de jours pendant lesquels 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.
hériteThisRole '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 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 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 : AppliquerAppMissing
  • 8 : AlertEnforceAppAll
  • 9 : AlertEnforceAppObsolete
  • 10 : AlertEnforceAppMissing
  • 11 : ImportAll
auditalertmail (facultatif) L’adresse de messagerie à laquelle sont envoyées les alertes relatives à cette autorisation est envoyée par l’auditeur. Si cet argument n’est pas présent, l’adresse e-mail d’alerte de l’auditeur est utilisée.
MaxRoles (facultatif) Integer
MaxUsers (facultatif) Integer
Type de retour ID de la nouvelle tâche.

taskadditask

Indiquez que deux tâches sont incompatibles.

Arguments Type
Taskid
taskID2

taskaddrole

Affecte une tâche à un rôle.

Arguments Type
roleID
Taskid

taskaddsupervisor

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

Arguments Type
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 comme __svrole suivi d’un nombre. L’argument userID peut être utilisé pour la compatibilité descendante.
Taskid

Useradd

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

Arguments Type
description
alias
languageID
  • 1 : Anglais
  • 2 : Néerlandais
OrgUnitID
enddate (facultatif) Le format de date est « AAAA-MM-JJThh :nn :ss », où seuls 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 « AAAA-MM-JJThh :nn :ss », où seuls 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 Functions

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 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 Renvoie 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 d’organisation sans les attributs des unités d’organisation.
OrgUnitproposedroles Retourne une liste des rôles proposés liés à l’unité d’organisation.
OrgUnitroles Retourne une liste de rôles directement liés de l’unité d’organisation donnée
Objecttypeattributetypes
autorisations
permissionusers
roles Retourne une liste de rôles.
tâches de rôle 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 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 sur le rôle

Nom Paramètres Type de retour
rôle roleID Object
roles filter (facultatif) Collection
roleasiattributes roleID Collection
roleOrgUnits roleID Collection
roleparentroles roleID Collection
rôlesubroles roleID Collection
rolesupervisors roleID Collection
rolesupervisorroles roleID Collection
tâches de rôle 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
autorisation TaskID Autorisation
autorisations filter (facultatif) Collection
permissionasiattributes TaskID Collection
permissionsattachments TaskID Collection
permissionattributetypes - Collection
permissionsparams TaskID Collection
permissionroles TaskID Collection
permissionsupervisors TaskID Collection
permissionsupervisorroles TaskID Collection
permissionusers TaskID Collection
tâche TaskID Tâche
tâches filter (facultatif) Collection
attachements de tâches TaskID Collection
paramètres de tâche 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
utilisateursunits UserID Collection
tâches utilisateur 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 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 des achats entrent dans une page web personnalisée. Chaque client est présenté dans le modèle sous la forme d’une unité sous les clients de l’unité. Le responsable des achats est aussi bien membre que superviseur de cette unité. Un rôle est créé qui donne aux propriétaires le droit d’acheter au 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 sous la forme d’un 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>

Tout ce que les pages personnalisées doivent faire est de demander les informations appropriées et de créer un document XML avec les informations demandées. Dans cet exemple, la page MySubmit transforme les données du document XML et les affecte au code b1script. L’objet Parameters et enfin appelle la b1script.ExecuteScript("MyScript") fonction.

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 distributions de fonction à 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