Sdílet prostřednictvím


Referenční informace pro vývojáře BHOLD pro Microsoft Identity Manager 2016

Modul BHOLD-core dokáže zpracovat příkazy skriptu. Můžete to provést přímo pomocí bscript.dll v projektu .NET. Také interakce s rozhraním webové služby b1scriptservice.asmx.

Před spuštěním skriptu by se měly shromáždit všechny informace uvnitř skriptu pro vytvoření tohoto skriptu. Tyto informace lze shromáždit z následujících zdrojů:

  • Vstup uživatele
  • Data BHOLD
  • Aplikace
  • Jiné

Data BHOLD lze načíst pomocí funkce GetInfo objektu skriptu. K dispozici je úplný seznam příkazů, které mohou prezentovat všechna data uložená v databázi BHOLD. Prezentovaná data ale podléhají oprávněním k zobrazení přihlášeného uživatele. Výsledek je ve formě dokumentu XML, který lze analyzovat.

Dalším zdrojem informací může být jedna z aplikací, které řídí BHOLD. Modul snap-in aplikace má speciální funkci FunctionDispatch, která se dá použít k prezentaci informací specifických pro aplikaci. Tento dokument je také prezentován jako dokument XML.

Pokud neexistuje žádný jiný způsob, skript může obsahovat příkazy přímo do jiných aplikací nebo systémů. NoThenstalace dodatečného softwaru na serveru BHOLD může podkopat zabezpečení celého systému.

Všechny tyto informace jsou vloženy do jednoho dokumentu XML a přiřazeny objektu skriptu BHOLD. Objekt kombinuje tento dokument s předdefinované funkce. Předdefinovaná funkce je dokument XSL, který přeloží vstupní dokument skriptu na dokument příkazu BHOLD.

Zpracování skriptů BHOLD

Příkazy se spouštějí ve stejném pořadí jako v dokumentu. Pokud jedna funkce selže, vrátí se zpět všechny spuštěné příkazy.

Objekt script

Tato část popisuje, jak používat objekt script.

Načtení informací BHOLD

Funkce GetInfo slouží k načtení informací z dostupných dat v autorizačním systému BHOLD. Funkce vyžaduje název funkce a nakonec jeden nebo více parametrů. Pokud je tato funkce úspěšná, vrátí se objekt nebo kolekce BHOLD ve formě dokumentu XML.

Pokud funkce neuspěje, vrátí funkce GetInfo prázdný řetězec nebo chybu. Popis a číslo chyby můžete použít k získání dalších informací o selhání.

Funkci GetInfo FunctionDispatch lze použít k načtení informací z aplikace řízené systémem BHOLD. Tato funkce vyžaduje tři parametry: ID aplikace, funkci dispatch definovanou v asi a dokument XML s podpůrnými informacemi pro ASI. Pokud je funkce úspěšná, je výsledek v objektu výsledku k dispozici ve formátu XML.

Následující fragment kódu je jednoduchým příkladem funkce GetInfo v jazyce C#:

ScriptProcessor myScriptProcessor = new ScriptProcessor();
myScriptProcessor.Initializae("CORP\\b1user");
myScriptProcessor.GetInfo("OrgUnit", "1");

Podobně lze k objektu BScript přistupovat také prostřednictvím webové služby b1scriptservice. To se provádí přidáním webového odkazu na projekt pomocí http://< server>:5151/BHOLD/Core/b1scriptservice.asmx, kde <server> je server s nainstalovanými binárními soubory BHOLD. Další informace najdete v tématu Přidání odkazu na webovou službu do projektu sady Visual Studio.

Následující příklad ukazuje, jak použít funkci GetInfo z webové služby. Tento kód načte organizační jednotku, která má ID organizace 1, a pak na obrazovce zobrazí název této organizační jednotky.

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);

        }
    }
}

Následující příklad jazyka VBScript používá webovou službu přes SOAP a metodu GetInfo. Další příklady pro PROTOKOL SOAP 1.1, SOAP 1.2 a HTTP POST najdete v části Spravované referenční informace BHOLD nebo můžete přejít na webovou službu přímo z prohlížeče a zobrazit je tam.

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

Spouštění skriptů

Funkci ExecuteScript objektu BScript lze použít ke spouštění skriptů. Tato funkce vyžaduje dva parametry. Prvním parametrem je dokument XML, který obsahuje vlastní informace, které má skript použít. Druhý parametr je název předdefinovaného skriptu, který se má použít. V adresáři předdefinovaných skriptů BHOLD by zde měl být dokument XSL se stejným názvem jako funkce, ale s příponou .xsl.

Pokud funkce neuspěje, vrátí funkce ExecuteScript hodnotu False. Pomocí popisu a čísla chyby můžete zjistit, co se nepovedlo. Následuje příklad použití webové metody ExecuteXML. Tato metoda vyvolá 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

Tato funkce GetInfo je k dispozici po provedení funkce executescript . Funkce vrátí řetězec ve formátu XML, který obsahuje kompletní sestavu spuštění. Uzel Script obsahuje strukturu XML spuštěného skriptu.

Pro každou funkci, která selže během provádění skriptu, se přidá funkce uzlu s názvem uzlů. Na konec dokumentu se přidají všechna vygenerovaná ID ExecuteXML a Error.

Všimněte si, že se přidají jenom funkce, které obsahují chybu. Číslo chyby 0 znamená, že se funkce nespustí.

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

Parametry ID

Parametry ID mají zvláštní zacházení. Nečíselné hodnoty se používají jako vyhledávací hodnota pro vyhledání odpovídajících entit v úložišti dat BHOLD. Pokud vyhledávací hodnota není jedinečná, vrátí se první entita, která vyhovuje hodnotě hledání.

K odlišení číselných hodnot hledání od ID je možné použít předponu. Pokud se prvních šest znaků hledané hodnoty rovná "no_id:", jsou tyto znaky odstraněny předtím, než se hodnota použije k hledání. Je možné použít zástupné znaky SQL %.

S hledanou hodnotou se použijí následující pole:

Typ ID Vyhledávací pole
ORGUnitID Description
ID role Description
Taskid Description
ID uživatele Výchozíalias

Přístup ke skriptům a oprávnění

Kód na straně serveru v active serverových stránkách se používá ke spouštění skriptů. Přístup ke skriptu proto znamená přístup k těmto stránkám. Systém BHOLD udržuje informace o vstupních bodech vlastních stránek. Tyto informace zahrnují úvodní stránku a popis funkce (mělo by být podporováno více jazyků).

Uživatel má oprávnění k tomu, aby mohl vstoupit na vlastní stránky a spustit skript. Každý vstupní bod je prezentován jako úkol. Každý uživatel, který získal tento úkol prostřednictvím role nebo jednotky, může provést odpovídající funkci.

Nová funkce v nabídce představuje všechny vlastní funkce, které může uživatel spustit. Protože skript může provádět akce v systému BHOLD pod jinou identitou, než je přihlášený uživatel. Je možné udělit oprávnění k provedení jedné konkrétní akce bez dohledu nad jakýmkoli objektem. Může to být například užitečné pro zaměstnance, který může do společnosti zadávat jenom nové zákazníky. Tyto skripty lze také použít k vytvoření stránek s vlastní registrací.

Skript příkazu

Příkazový skript obsahuje seznam funkcí, které jsou spouštěné systémem BHOLD. Seznam je zapsán v dokumentu XML, který odpovídá následujícím definicím:

Skript příkazu <functions>functions</functions>
– funkce funkce {function}
– funkce <function name="functionName" functionParameters [return] (/> | > parameterList </ function>)
název_funkce Platný název funkce, jak je popsáno v následujících částech.
functionParameters { functionParameter }
Functionparameter parameterName = "parameterValue"
Parametername Platný název parametru.
hodnota parametru @variable@ | Hodnotu
hodnota Platná hodnota parametru.
parameterList <parameters> {parameterItem} </parameters>
parametrItem <název parametru="název_parametru"> parameterValue </parameter>
return return="@variable@"
proměnná Název vlastní proměnné.

XML obsahuje následující překlady speciálních znaků:

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

Tyto znaky XML se dají použít v identifikátorech, ale nedoporučují se.

Následující kód ukazuje příklad platného dokumentu příkazu se třemi funkcemi:

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

Funkce OrgUnitAdd ukládá ID vytvořené jednotky do proměnné s názvem UnitID. Tato proměnná se používá jako vstup pro funkci UserAdd. Návratová hodnota této funkce se nepoužije. Následující části popisují všechny dostupné funkce, požadované parametry a jejich návratové hodnoty.

Spouštění funkcí

Tato část popisuje, jak používat funkce spouštění.

ABAAttributeRuleAdd

Vytvořte nové pravidlo atributu pro konkrétní typ atributu. Pravidla atributů lze propojit pouze s jedním typem atributu.

Zadané pravidlo atributu lze propojit se všemi možnými typy atributů.

Typ pravidla nelze změnit pomocí příkazu ABAattributeruletypeupdate. Vyžaduje, aby popis atributu jedinečný.

Argumenty Typ
Description Text
Typ pravidla Zadejte druh pravidla atributu. V závislosti na druhu typu pravidla atributu musí být zahrnuty další argumenty. Následující hodnoty typu pravidla jsou platné:
  • 0: Regulární výraz (přidání argumentu "value").
  • 1: Hodnota (přidejte argumenty "operátor" a "hodnota").
  • 2: Seznam hodnot.
  • 3: Rozsah (přidejte argumenty "rangemin" a "rangemax").
  • 4: Age (přidejte argumenty "operátor" a "hodnota").
InvertResult ["0"|"1"|"N"|"Y"]
ID atributu Text
Volitelné argumenty Typ
Operátor Text
Poznámka: Tento argument je povinný, pokud je RuleType 1 nebo 4. Možné hodnoty jsou =, nebo< .> Značky XML musí používat ">" pro '>' a "<" pro '<'.
RangeMin Číslo
Poznámka: Tento argument je povinný, pokud je RuleType 3.
Rangemax Číslo
Poznámka: Tento argument je povinný, pokud je RuleType 3.
Hodnota Text
Poznámka: Tento argument je povinný, pokud je RuleType 0, 1 nebo 4. Argument musí být číselná nebo alfanumerická hodnota.
Návratový typ AttributeRuleID Text

applicationadd

Vytvoří novou aplikaci a vrátí ID nové aplikace.

Argumenty Typ
description
Stroj
modul
parameter
Protokol
username
heslo
svroleID (volitelné) Pokud tento argument neexistuje, použije se role správce aktuálního uživatele.
Applicationaliasformula (volitelné) Vzorec aliasu se používá k vytvoření aliasu pro uživatele, když je přiřazený k oprávnění aplikace. Alias se vytvoří, pokud uživatel ještě nemá alias pro tuto aplikaci. Pokud není zadána žádná hodnota, použije se výchozí alias uživatele jako alias pro aplikaci. Vzorec je formátovaný jako [<<objecttype>>.<<nameofobjecttypeattribute>>(startindexoffset,length offset)]. Posun je volitelný. Je možné použít pouze atributy Uživatel a Aplikace. Je možné použít volný text. Vyhrazené znaky jsou levá hranatá závorka ([) a pravá hranatá závorka (]). Příklad: [Application.bholdDescription]\[User.bholdDefAlias(1,5)].
Návratový typ ID nové aplikace.

AttributeSetValue

Nastaví hodnotu typu atributu připojeného k typu objektu. Vyžaduje, aby popisy typu objektu a typu atributu byly jedinečné.

Argumenty Typ
ObjectTypeID Text
ObjectId Text
AttributeTypeID Text
Hodnota Text
Návratový typ Typ

AttributeTypeAdd

Vloží nový typ atributu nebo typ vlastnosti.

Argumenty Typ
ID datového typu Text
Popis (=Identita) Text
Poznámka: Rezervovaná slova nelze použít, včetně slov "a", "frm", "id", "usr" a "bhold".
Maxlength Číslo v [1,..,255]
ListOfValues (logická hodnota) ["0"|"1"|"N"|"Y"]
Defaultvalue Text
Návratový typ Typ
AttributeTypeID Text

AttributeTypeSetAdd

Vloží novou sadu typů atributů. Vyžaduje, aby popis sady typů atributů byl jedinečný.

Argumenty Typ
Popis (=Identita) Text
Návratový typ Typ
AttributeTypeSetID Text

AttributeTypeSetAddAttributeType

Vloží nový typ atributu do existující sady typů atributů. Vyžaduje, aby popisy sady typů atributů a typu atributu byly jedinečné.

Argumenty Typ
AttributeTypeSetID Text
AttributeTypeID Text
Objednávka Číslo
Locationid Text
Poznámka: Umístění je buď "skupina", nebo "jedno".
Povinné ["0"|"1"|"N"|"Y"]
Návratový typ Typ

ObjectTypeAddAttributeTypeSet

Přidá sadu typu atributu k typu objektu. Vyžaduje, aby popis typu objektu a sady typů atributů byly jedinečné. Typy objektů jsou: System, OrgUnit, User, Task.

Argumenty Typ
ObjectTypeID Text
AttributeTypeSetID Text
Objednávka Číslo
Viditelné
  • 0: Sada typů atributů je viditelná.
  • 2: Sada typů atributů se zobrazí, když je vybráno tlačítko Další informace .
  • 1: Sada typů atributů je neviditelná.
Návratový typ Typ

OrgUnitadd

Vytvoří novou organizační jednotku a vrátí ID nové organizační jednotky.

Argumenty Typ
description
orgtypeID
Parentid
OrgUnitinheritedroles (volitelné)
Návratový typ Typ
ID nové jednotky Parametr OrgUnitinheritedroles
má buď hodnotu ano, nebo ne.

OrgUnitaddsupervisor

Nastavte uživatele jako nadřízeného organizační jednotky.

Argumenty Typ
svroleID Můžete také použít argument userID. V tomto případě je vybraná výchozí role správce. Výchozí role nadřízeného má název __svrole následovaný číslem. Argument userID lze použít pro zpětnou kompatibilitu.
OrgUnitID

OrgUnitadduser

Nastavte uživatele jako člena organizační jednotky.

Argumenty Typ
ID uživatele
OrgUnitID

OrgUnitdelete

Odebere organizační jednotku.

Argumenty Typ
OrgUnitID

OrgUnitdeleteuser

Odebere uživatele jako člena organizační jednotky.

Argumenty Typ
ID uživatele
OrgUnitID

roleadd

Vytvoří novou roli.

Argumenty Typ
Description
svrole
svroleID (volitelné) Pokud tento argument neexistuje, použije se role správce aktuálního uživatele.
ContextAdaptable (volitelné) ["0","1","N","Y"]
MaxPermissions (volitelné) Integer
MaxRoles (volitelné) Integer
MaxUsers (volitelné) Integer
Návratový typ Typ
ID nové role

roleaddOrgUnit

Přiřadí roli organizační jednotce.

Argumenty Typ
OrgUnitID roleID
inheritThisRole "true" nebo "false" označuje, zda je role navržena pro základní jednotky.

roleaddrole

Přiřadí roli jako podroli jiné role.

Argumenty Typ
roleID
subRoleID

roleaddsupervisor

Nastavte uživatele jako nadřízeného role.

Argumenty Typ
svroleID Můžete také použít argument userID. V tomto případě je vybraná výchozí role správce. Výchozí role nadřízeného má název __svrole následovaný číslem. Argument userID lze použít pro zpětnou kompatibilitu.
roleID

roleadduser

Přiřadí roli uživateli. Role nemůže být kontextově přizpůsobitelná role, pokud není zadané žádné ID kontextu.

Argumenty Typ
ID uživatele
roleID
durationType (volitelné) Může obsahovat hodnoty "free", "hours" a "days".
durationLength (volitelné) Vyžaduje se, pokud je durationType "hours" nebo "days". by mělo obsahovat celočíselnou hodnotu pro počet hodin nebo dnů, kdy je role přiřazena uživateli.
start (volitelné) Datum a čas přiřazení role Pokud je tento atribut vynechán, role se přiřadí okamžitě. Formát data je RRRR-MM-DDThh:nn:ss, kde se vyžaduje jenom rok, měsíc a den. Například "2004-12-11" a "2004-11-28T08:00" jsou platné hodnoty.
end (volitelné) Datum a čas odvolání role Při zadání durationType a durationLength je tato hodnota ignorována. Formát data je RRRR-MM-DDThh:nn:ss, kde se vyžaduje jenom rok, měsíc a den. Například "2004-12-11" a "2004-11-28T08:00" jsou platné hodnoty.
linkreason Vyžaduje se při zadání začátku, konce nebo doby trvání, jinak se ignoruje.
contextId (volitelné) ID organizační jednotky, které se vyžaduje jenom pro kontextově přizpůsobitelné role.

roledelete

Odstraní roli.

Argumenty Typ
roleID

roledeleteuser

Odebere uživateli přiřazení role. Tento příkaz odvolá zděděné role uživatelem.

Argumenty Typ
ID uživatele
roleID
contextID (volitelné)

roleproposeOrgUnit

Navrhuje roli, která ji přiřadí členům a dílčím organizačním jednotce OrgUnit.

Argumenty Typ
OrgUnitID
roleID
durationType (volitelné) Může obsahovat hodnoty "free", "hours" a "days".
durationLength Vyžaduje se, pokud je durationType "hours" nebo "days", měl by obsahovat celočíselnou hodnotu pro počet hodin nebo dnů, kdy je role přiřazena uživateli.
durationFixed Hodnota true nebo false označuje, jestli se přiřazení této role uživateli má rovnat durationLength.
inheritThisRole "true" nebo "false" označuje, zda je role navržena pro základní jednotky.

taskadd

Vytvoří nový úkol a vrátí ID nového úkolu.

Argumenty Typ
applicationID
description Text s maximálně 254 znaky.
název_úkolu Text s maximálně 254 znaky.
tokenGroupID
svroleID (volitelné) Pokud tento argument neexistuje, použije se role správce aktuálního uživatele.
contextAdaptable (volitelné) ["0","1","N","Y"]
podkonstrukce (volitelné) ["0","1","N","Y"]
auditaction (volitelné)
  • 0: Neznámý (výchozí)
  • 1: ReportOnly
  • 2: AlertAppAll
  • 3: AlertAppObsolete
  • 4: AlertAppMissing
  • 5: VynuceníAppAll
  • 6: VynuceníAppObsolete
  • 7: VynuceníAppMissing
  • 8: AlertEnforceAppAll
  • 9: AlertEnforceAppObsolete
  • 10: AlertEnforceAppMissing
  • 11: ImportAll
auditalertmail (volitelné) Auditor odešle e-mailovou adresu, na kterou má být upozornění na toto oprávnění. Pokud tento argument neexistuje, použije se e-mailová adresa pro upozornění auditora.
MaxRoles (volitelné) Integer
MaxUsers (volitelné) Integer
Návratový typ ID nového úkolu.

taskadditask

Označuje, že dva úkoly nejsou kompatibilní.

Argumenty Typ
Taskid
taskID2

taskaddrole

Přiřadí úkol roli.

Argumenty Typ
roleID
Taskid

taskaddsupervisor

Nastavte uživatele jako nadřízeného úkolu.

Argumenty Typ
svroleID Můžete také použít argument userID. V tomto případě je vybraná výchozí role správce. Výchozí role nadřízeného má název __svrole následovaný číslem. Argument userID lze použít pro zpětnou kompatibilitu.
Taskid

useradd

Vytvoří nového uživatele a vrátí ID nového uživatele.

Argumenty Typ
description
alias
languageID
  • 1: Angličtina
  • 2: nizozemština
OrgUnitID
enddate (volitelné) Formát data je RRRR-MM-DDThh:nn:ss, kde se vyžaduje jenom rok, měsíc a den. Například "2004-12-11" a "2004-11-28T08:00" jsou platné hodnoty.
zakázáno (volitelné)
  • 0: Povoleno
  • 1: Zakázáno
MaxPermissions (volitelné) Integer
MaxRoles (volitelné) Integer
Návratový typ ID nového uživatele.

UserAddRole

Přidá roli uživatele.

Argumenty Typ

UserDeleteRole

Odstraní roli uživatele.

Argumenty Typ

Aktualizace uživatele

Aktualizace uživatele.

Argumenty Typ
UserID
popis (volitelné)
language
  • 1: angličtina
  • 2: nizozemština
userDisabled (volitelné)
  • 0: Povoleno
  • 1: Zakázáno
UserEndDate (volitelné) Formát data je "RRRR-MM-DDThh:nn:ss", kde se vyžaduje pouze rok, měsíc a den. Například "2004-12-11" a "2004-11-28T08:00" jsou platné hodnoty.
firstName (volitelné)
middleName (volitelné)
lastName (volitelné)
maxPermissions (volitelné) Integer
maxRoles (volitelné) Integer

Funkce GetInfo

Sadu funkcí popsaných v této části lze použít k načtení informací uložených v systému BHOLD. Každou funkci lze volat pomocí funkce GetInfo z objektu BScript. Některé objekty vyžadují parametry. Vrácená data podléhají oprávněním k zobrazení a objektům pod dohledem přihlášeného uživatele.

Argumenty GetInfo

Název Description
aplikace Vrátí seznam aplikací.
attributetypes Vrátí seznam typů atributů.
typy organizací Vrátí seznam typů organizačních jednotek.
OrgUnits Vrátí seznam organizačních jednotek bez atributů organizačních jednotek.
OrgUnitproposedroles Vrátí seznam navrhovaných rolí propojených s organizační jednotkou.
OrganizaceUnitroles Vrátí seznam přímo propojených rolí dané organizační jednotky.
Objecttypeattributetypes
oprávnění
oprávněníuuživatelé
Role Vrátí seznam rolí.
roletasks Vrátí seznam úkolů dané role.
úlohy Vrátí všechny úkoly známé podle BHOLD.
uživatelé Vrátí seznam uživatelů.
role uživatelů Vrátí seznam propojených rolí správce daného uživatele.
oprávnění uživatele Vrátí seznam oprávnění daného uživatele.

Informace o organizační jednotce

Name Parametry Návratový typ
Organizační jednotka ORGUnitID Organizační jednotka
OrgUnitasiattributes ORGUnitID Kolekce
OrgUnits filter (volitelné), proptypeid (volitelné)
Vyhledá jednotky, které obsahují řetězec popsaný ve filtru v proptype popsaném v části proptypeid. Pokud toto ID vynecháte, použije se filtr na popis jednotky. Pokud není zadán žádný filtr, vrátí se všechny viditelné jednotky.
Kolekce
OrgUnitOrgUnits ORGUnitID Kolekce
OrgUnitparents ORGUnitID Kolekce
OrgUnitpropertyvalues ORGUnitID Kolekce
OrgUnitproptypes Kolekce
OrganizaceUnitusers ORGUnitID Kolekce
OrgUnitproposedroles ORGUnitID Kolekce
OrganizaceUnitroles ORGUnitID Kolekce
OrganizaceUnitinheritedroles ORGUnitID Kolekce
OrgUnitsupervisors ORGUnitID Kolekce
OrganizaceUnitinheritedsupervisors ORGUnitID Kolekce
OrgUnitsupervisorroles ORGUnitID Kolekce

Informace o rolích

Name Parametry Návratový typ
role ID role Objekt
Role filtr (volitelné) Kolekce
roleasiattributes ID role Kolekce
roleOrgUnits ID role Kolekce
roleparentroles ID role Kolekce
rolesubroles ID role Kolekce
roleupervisors ID role Kolekce
roleupervisorroles ID role Kolekce
roletasks ID role Kolekce
roleusers ID role Kolekce
roleupervisorroles ID role Kolekce
navrhovanároleOrgUnits ID role Kolekce
navrhovanýchroleuášů ID role Kolekce

Oprávnění – informace o úkolu

Name Parametry Návratový typ
Oprávnění TaskID Oprávnění
oprávnění filtr (volitelné) Kolekce
zdroje oprávnění TaskID Kolekce
oprávněnípřipojené TaskID Kolekce
permissionattributetypes - Kolekce
permissionparams TaskID Kolekce
role oprávnění TaskID Kolekce
permissionsupervisors TaskID Kolekce
permissionsupervisorroles TaskID Kolekce
oprávněníuuživatelé TaskID Kolekce
úkol TaskID Úkol
úlohy filtr (volitelné) Kolekce
připojení k úkolům TaskID Kolekce
taskparams TaskID Kolekce
role úloh TaskID Kolekce
tasksupervisors TaskID Kolekce
tasksupervisorroles TaskID Kolekce
taskusers TaskID Kolekce

Údaje uživatele

Name Parametry Návratový typ
uživatel UserID Uživatel
uživatelé filter (volitelné), attributetypeid (volitelné)
Vyhledá uživatele, kteří obsahují v atributu attributetype zadaném atributem attributetypeid řetězec zadaný filtrem. Pokud je toto ID vynecháno, použije se filtr na výchozí alias uživatele. Pokud není zadán žádný filtr, vrátí se všichni viditelní uživatelé. Příklad:
  • GetInfo("users") vrátí všechny uživatele.
  • GetInfo("users", "%dmin%") vrátí všechny uživatele s řetězcem "dmin" ve výchozím aliasu.
  • Předpokládejme, že uživatelé mají další atribut s názvem "City".GetInfo("users", "%msterda%", "City"). Toto volání vrátí všechny uživatele s řetězcem "msterda" v atributu City.
UserCollection
uživateléaplikace UserID Kolekce
Uživatelské oprávnění UserID Kolekce
uživatelské role UserID Kolekce
uživatelské role UserID Kolekce
userstasks UserID Kolekce
usersunits UserID Kolekce
uživatelské úkoly UserID Kolekce
userunits UserID Kolekce

Návratové typy

V této části jsou popsány návratové typy funkce GetInfo.

Name Návratový typ
Kolekce =<ITEMS>{<ITEM description="..." id="..." />}</ITEMS>
Objekt =<ITEM type="…" description="..." />
OrgUnit = <ITEM id="…" description="..." orgtype="..." parent="..."> <LIST> {<ITEM> <KEY>… </KEY> <VALUE> … </VALUE> </ITEM>} </LIST> </ITEM>
Oprávnění = <ITEM id="…" description="…" name="…" tokengroup="…" application="…" > <LIST> {<ITEM> <KEY>… </KEY> <VALUE> … </VALUE> </ITEM>} </LIST> </ITEM>
Role = <ITEMS> {<ITEM id="…" description="…" />} </ITEMS>
Role = <ITEM id="…" description="… " > <LIST> {<ITEM> <KEY>… </KEY> <VALUE> … </VALUE> </ITEM>} </LIST> </ITEM>
Úkol Zobrazit oprávnění
Uživatelé = <ITEMS> {<ITEM description="…" id="…" alias="…" />} </ITEMS>
Uživatel = <ITEM id="…" description="…" alias="…" firstname="…" lastname="…" uuid="…" language="…"> <LIST> {<ITEM> <KEY>… </KEY> <VALUE> … </VALUE> </ITEM>} </LIST> </ITEM>

Ukázka skriptu

Společnost má server BHOLD a chce automatizovaný skript, který vytvoří nové zákazníky. Informace o společnosti a jejím manažeru nákupu se zadají na přizpůsobenou webovou stránku. Každý zákazník se v modelu prezentuje jako jednotka pod zákazníky jednotek. Manažer nákupu je také členem jako nadřízený této jednotky. Vytvoří se role, která dává vlastníkům právo nakupovat jménem nového zákazníka.

Tento zákazník však v aplikaci neexistuje. V rozhraní ASI FunctionDispatch je implementovaná speciální funkce, která v nákupní aplikaci vytvoří nový zákaznický účet. Každý zákazník má typ zákazníka.

Funkce FunctionDispatch může také prezentovat možné typy. AA zvolí správný typ pro nového zákazníka.

Vytvořte roli a úkol pro prezentaci oprávnění k nákupu. Skutečná oprávnění k nákupu je prezentována asi jako soubor /customers/customer id/purchase. Tento soubor by měl být propojený s novým úkolem.

Stránka Active Server, která shromažďuje informace, vypadá takto:

<%@ 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>

Všechny přizpůsobené stránky by musely požádat o správné informace a vytvořit dokument XML s požadovanými informacemi. V tomto příkladu stránka MySubmit transformuje data v dokumentu XML a přiřadí je k b1scriptu. Parameters objekt a nakonec zavolá b1script.ExecuteScript("MyScript") funkci.

Následující vstupní skript ukazuje tento příklad:

<customer>
<description>ACME inc.</description>
<orgtype>5<orgtype>
<name>John Doe</name>
<alias>jdoe</alias>
<email>jdoe@acme.com</email>
</customer>

Tento vstupní skript neobsahuje žádné příkazy pro BHOLD. Je to proto, že tento skript není spuštěn přímo BHOLD; místo toho se jedná o vstup pro předdefinované funkce. Tato předdefinovaná funkce přeloží tento objekt do dokumentu XML pomocí příkazů BHOLD. Tento mechanismus brání uživateli v odesílání skriptů do systému BHOLD, které obsahují funkce, které uživatel nesmí spouštět, například setUser a funkce odesílá do 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>

Další kroky