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.
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 b1scriptservice
web . 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 |
---|---|
& |
& |
< |
< |
> |
> |
" |
" |
' |
' |
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 :
|
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 |
|
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) |
|
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 |
|
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) |
|
MaxPermissions (facultatif) | Integer |
MaxRoles (facultatif) | Integer |
Type de retour | ID du nouvel utilisateur. |
UserAddRole
Ajoute un rôle d’utilisateur.
Arguments | Type |
---|---|
UserDeleteRole
Supprime un rôle d’utilisateur.
Arguments | Type |
---|---|
Userupdate
Met à jour un utilisateur.
Arguments | Type |
---|---|
UserID | |
description (facultatif) | |
langage |
|
userDisabled (facultatif) |
|
UserEndDate (facultatif) | Le format de date est « 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 :
|
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>