Microsoft Identity Manager 2016 の BHOLD 開発者向けリファレンス

BHOLD-core モジュールでは、スクリプト コマンドを処理できます。 これを行うには、.NET プロジェクトで bscript.dll を直接使用します。 Web サービス b1scriptservice.asmx インターフェイスとの対話も行います。

スクリプトを実行する前に、スクリプト内のすべての情報を収集して、このスクリプトを作成する必要があります。 この情報は、次のソースから収集できます。

  • ユーザー入力
  • BHOLD データ
  • アプリケーション
  • その他

BHOLD データは、スクリプト オブジェクトの GetInfo 関数を使用して取得できます。 BHOLD データベースに格納されているすべてのデータを表示できるコマンドの完全な一覧があります。 ただし、表示されるデータには、ログインしたユーザーの表示アクセス許可が適用されます。 結果は、解析できる XML ドキュメントの形式になります。

情報のもう 1 つのソースは、BHOLD によって制御されるアプリケーションのいずれかです。 アプリケーション スナップインには特別な関数 FunctionDispatch があり、これを使用してアプリケーション固有の情報を提示できます。 これは XML ドキュメントとしても表示されます。

最後に、他の方法がない場合は、スクリプトに他のアプリケーションまたはシステムに直接コマンドを含めることができます。 いいえBHOLDサーバー上の余分なソフトウェアの拡張は、システム全体のセキュリティを損なう可能性があります。

この情報はすべて 1 つの XML ドキュメントに格納され、BHOLD スクリプト オブジェクトに割り当てられます。 オブジェクトは、このドキュメントを定義済みの関数と組み合わせます。 定義済みの関数は、スクリプト入力ドキュメントを BHOLD コマンド ドキュメントに変換する XSL ドキュメントです。

BHOLD スクリプト処理

コマンドは、ドキュメントと同じ順序で実行されます。 1 つの関数が失敗した場合、実行されたすべてのコマンドがロールバックされます。

Script オブジェクト

このセクションでは、スクリプト オブジェクトの使用方法について説明します。

BHOLD 情報を取得する

GetInfo 関数は、BHOLD 認可システムで使用可能なデータから情報を取得するために使用されます。 関数には、関数名と、最終的には 1 つ以上のパラメーターが必要です。 この関数が成功すると、BHOLD オブジェクトまたはコレクションが XML ドキュメントの形式で返されます。

関数が成功しない場合、GetInfo 関数は空の文字列またはエラーを返します。 エラーの説明と番号を使用して、エラーに関する詳細情報を取得できます。

GetInfo 関数 'FunctionDispatch' を使用して、BHOLD システムによって制御されるアプリケーションから情報を取得できます。 この関数には、アプリケーションの ID、ASI で定義されているディスパッチ関数、ASI のサポート情報を含む XML ドキュメントの 3 つのパラメーターが必要です。 関数が成功した場合、結果は結果オブジェクトの XML 形式で使用できます。

次のスニペットは、GetInfo の単純な C# の例です。

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

同様に、 BScript オブジェクトにも Web サービス b1scriptserviceを介してアクセスできます。 これを行うには、http://< server>:5151/BHOLD/Core/b1scriptservice.asmx を使用してプロジェクトに Web 参照を追加します。サーバー>は、BHOLD バイナリが<インストールされているサーバーです。 詳細については、「 Visual Studio プロジェクトへの Web サービス参照の追加」を参照してください。

次の例は、Web サービスから GetInfo 関数を使用する方法を示しています。 このコードは、OrgID が 1 の組織単位を取得し、その組織単位の名前を画面に表示します。

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

        }
    }
}

次の VBScript の例では、SOAP 経由の Web サービスと GetInfo の使用を使用します。 SOAP 1.1、SOAP 1.2、および HTTP POST のその他の例については、「BHOLD マネージド リファレンス」セクションを参照するか、ブラウザーから直接 Web サービスに移動して表示できます。

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

スクリプトの実行

BScript オブジェクトの ExecuteScript 関数を使用してスクリプトを実行できます。 この関数には 2 つのパラメーターが必要です。 最初のパラメーターは、スクリプトで使用されるカスタム情報を含む XML ドキュメントです。 2 番目のパラメーターは、使用する定義済みスクリプトの名前です。 In In the BHOLD predefined scripts directory, here should be an XSL document with the same name as the function, but with the .xsl extension.

関数が成功しない場合、ExecuteScript 関数は値 False を返します。 エラーの説明と番号を使用して、問題が発生したことを把握できます。 ExecuteXML Web メソッドの使用例を次に示します。 このメソッドは 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

この GetInfo 関数は、 executescript 関数の実行後に使用できます。 関数は、完全な実行レポートを含む XML 形式の文字列を返します。 [スクリプト] ノードには、実行されるスクリプトの XML 構造が含まれています。

スクリプトの実行中に失敗した関数ごとに、ノード名を使用して Node 関数が追加されます。 ExecuteXML と Error がドキュメントの末尾に追加され、生成されたすべての ID が追加されます。

エラーを含む関数のみが追加されることに注意してください。 エラー番号 '0' は、関数が実行されていないことを意味します。

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

ID パラメーター

ID パラメーターは特別な処理を受けます。 数値以外の値は、BHOLD データ ストア内の対応するエンティティを検索するための検索値として使用されます。 検索値が一意でない場合は、検索値に準拠する最初のエンティティが返されます。

数値検索値と ID を区別するために、プレフィックスを使用できます。 検索値の最初の 6 文字が 'no_id:' と等しい場合、これらの文字は削除されてから、値が検索に使用されます。 SQL ワイルドカード文字 '%' を使用できます。

検索値には、次のフィールドが使用されます。

ID 型 検索フィールド
OrgUnitID 説明
roleID 説明
Taskid 説明
userID DefaultAlias

スクリプトのアクセスとアクセス許可

Active Server Pages のサーバー側コードは、スクリプトの実行に使用されます。 したがって、スクリプトへのアクセスは、これらのページへのアクセスを意味します。 BHOLD システムは、カスタム ページのエントリ ポイントに関する情報を保持します。 この情報には、スタート ページと関数の説明が含まれます (複数の言語をサポートする必要があります)。

ユーザーは、カスタム ページを入力してスクリプトを実行できる権限を持っています。 各エントリ ポイントはタスクとして表示されます。 ロールまたはユニットを使用してこのタスクを取得した各ユーザーは、対応する関数を実行できます。

メニューの新しい関数には、ユーザーが実行できるすべてのカスタム関数が表示されます。 スクリプトは、ログオンしているユーザーとは異なる ID で BHOLD システムでアクションを実行できるためです。 オブジェクトを監督することなく、1 つの特定のアクションを実行するアクセス許可を付与できます。 たとえば、これは、会社に新しい顧客を入力することしか許可されていない従業員に役立つ場合があります。 これらのスクリプトを使用して、自己登録ページを作成することもできます。

コマンド スクリプト

コマンド スクリプトには、BHOLD システムによって実行される関数の一覧が含まれています。 リストは、次の定義に準拠する XML ドキュメントに書き込まれます。

コマンド スクリプト <functions>functions</functions>
functions 関数 {function}
function <function name="functionName" functionParameters [return] (/> | > parameterList </ function>)
functionName 次のセクションで説明する有効な関数名。
functionParameters { functionParameter }
functionParameter parameterName = "parameterValue"
parameterName 有効なパラメーター名。
parameterValue @variable@ |値
value 有効なパラメーター値。
parameterList <parameters> {parameterItem} </parameters>
parameterItem <parameter name="parameterName"> parameterValue </parameter>
戻り値 return="@variable@"
変数 カスタム変数名。

XML には、次の特殊文字の翻訳があります。

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

これらの XML 文字は識別子で使用できますが、推奨されません。

次のコードは、3 つの関数を持つ有効なコマンド ドキュメントの例を示しています。

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

OrgUnitAdd 関数は、作成されたユニットの ID を UnitID という変数に格納します。 この変数は、UserAdd 関数の入力として使用されます。 この関数の戻り値は使用されません。 次のセクションでは、使用可能なすべての関数、必要なパラメーター、およびその戻り値について説明します。

関数の実行

このセクションでは、実行関数の使用方法について説明します。

ABAAttributeRuleAdd

特定の属性の種類に対して新しい属性ルールを作成します。 属性ルールは、1 つの属性型にのみリンクできます。

指定した属性ルールは、使用可能なすべての属性の種類にリンクできます。

RuleType は、"ABAattributeruletypeupdate" コマンドでは変更できません。 属性の説明が一意である必要があります。

引数
説明 Text
RuleType 属性ルールの種類を指定します。 属性ルールの種類に応じて、他の引数を含める必要があります。 次のルールの種類の値が有効です。
  • 0: 正規表現 (引数 "value" を追加)。
  • 1: Value (引数 "operator" と "value") を追加します。
  • 2: 値の一覧。
  • 3: Range (引数 "rangemin" と "rangemax" を追加します)。
  • 4: Age (引数 "operator" と "value") を追加します。
InvertResult ["0"|"1"|"N"|"Y"]
AttributeTypeID Text
省略可能な引数。
演算子 Text
: RuleType が 1 または 4 の場合、この引数は必須です。 指定できる値は、'='、'<'、または '>' です。 XML タグでは、'' には ">" を、'>' には "<" を使用する<必要があります。
RangeMin Number
: RuleType が 3 の場合、この引数は必須です。
RangeMax Number
: RuleType が 3 の場合、この引数は必須です。
Text
: RuleType が 0、1、または 4 の場合、この引数は必須です。 引数には、数値または英数字の値を指定する必要があります。
戻り値の型 AttributeRuleID Text

applicationadd

新しいアプリケーションを作成し、新しいアプリケーションの ID を返します。

引数
description
マシン
name
parameter
protocol
username
password
svroleID (省略可能) この引数が存在しない場合は、現在のユーザーの監督者ロールが使用されます。
Applicationaliasformula (省略可能) エイリアス式は、アプリケーションのアクセス許可に割り当てられたユーザーのエイリアスを作成するために使用されます。 ユーザーがこのアプリケーションの別名をまだ持っていない場合は、別名が作成されます。 値が指定されていない場合、ユーザーの既定のエイリアスがアプリケーションのエイリアスとして使用されます。 数式は として [<<objecttype>>.<<nameofobjecttypeattribute>>(startindexoffset,length offset)]書式設定されます。 オフセットは省略可能です。 ユーザー属性とアプリケーション属性のみを使用できます。 フリー テキストを使用できます。 予約文字は左角かっこ ([) と右角かっこ (]) です。 (例: [Application.bholdDescription]\[User.bholdDefAlias(1,5)])。
戻り値の型 新しいアプリケーションの ID。

AttributeSetValue

オブジェクト型に接続されている属性型の値を設定します。 オブジェクト型と属性型の説明が一意である必要があります。

引数
ObjectTypeID Text
ObjectID Text
AttributeTypeID Text
Text
の戻り値の型 :

AttributeTypeAdd

新しい属性型/プロパティ型を挿入します。

引数
DataTypeID Text
Description (=Identity) Text
: 予約語 ('a'、'frm'、'id'、'usr'、'bhold' など) は使用できません。
MaxLength [1,..,255] の数値
ListOfValues (boolean) ["0"|"1"|"N"|"Y"]
DefaultValue Text
の戻り値の型 :
AttributeTypeID Text

AttributeTypeSetAdd

新しい属性型セットを挿入します。 属性型セットの説明が一意である必要があります。

引数
Description (=Identity) Text
の戻り値の型 :
AttributeTypeSetID Text

AttributeTypeSetAddAttributeType

既存の属性型セットに新しい属性型を挿入します。 属性型セットと属性型の説明が一意である必要があります。

引数
AttributeTypeSetID Text
AttributeTypeID Text
Order Number
LocationID Text
: 場所は "group" または "single" です。
Mandatory ["0"|"1"|"N"|"Y"]
の戻り値の型 :

ObjectTypeAddAttributeTypeSet

オブジェクト型に設定された属性型を追加します。 オブジェクト型と属性型セットの説明が一意である必要があります。 オブジェクトの種類は、System、OrgUnit、User、Task です。

引数
ObjectTypeID Text
AttributeTypeSetID Text
Order Number
Visible
  • 0: 属性の種類セットが表示されます。
  • 2: [ 詳細情報 ] ボタンを選択すると、属性の種類セットが表示されます。
  • 1: 属性の種類セットは非表示です。
の戻り値の型 :

OrgUnitadd

新しい組織単位を作成し、新しい組織単位の ID を返します。

引数
description
orgtypeID
parentID
OrgUnitinheritedroles (省略可能)
の戻り値の型 :
新しいユニットの ID パラメーター OrgUnitinheritedroles
には、yes または no のいずれかの値があります。

OrgUnitaddsupervisor

ユーザーを組織単位のスーパーバイザーにします。

引数
svroleID 引数 userID も使用できます。 この場合、既定のスーパーバイザ ロールが選択されます。 既定のスーパーバイザ ロールには、 __svrole のような名前の後に数字が続きます。 引数 userID は、下位互換性のために使用できます。
OrgUnitID

OrgUnitadduser

ユーザーを組織単位のメンバーにします。

引数
userID
OrgUnitID

OrgUnitdelete

組織単位を削除します。

引数
OrgUnitID

OrgUnitdeleteuser

組織単位のメンバーとしてユーザーを削除します。

引数
userID
OrgUnitID

roleadd

新しいロールを作成します。

引数
説明
svrole
svroleID (省略可能) この引数が存在しない場合は、現在のユーザーのスーパーバイザ ロールが使用されます。
ContextAdaptable (省略可能) ["0","1","N","Y"]
MaxPermissions (省略可能) Integer
MaxRoles (省略可能) Integer
MaxUsers (省略可能) Integer
の戻り値の型 :
新しいロールの ID

roleaddOrgUnit

組織単位にロールを割り当てます。

引数
OrgUnitID roleID
inheritThisRole 'true' または 'false' は、基になるユニットにロールが提案されているかどうかを示します。

roleaddrole

ロールを別のロールのサブロールとして割り当てます。

引数
roleID
subRoleID

roleaddsupervisor

ユーザーをロールのスーパーバイザーにします。

引数
svroleID 引数 userID も使用できます。 この場合、既定のスーパーバイザ ロールが選択されます。 既定のスーパーバイザ ロールには、 __svrole のような名前の後に数字が続きます。 引数 userID は、下位互換性のために使用できます。
roleID

roleadduser

ユーザーにロールを割り当てます。 contextID が指定されていない場合、ロールをコンテキスト適応可能ロールにすることはできません。

引数
userID
roleID
durationType (省略可能) 値 'free'、'hours'、および 'days' を含めることができます。
durationLength (省略可能) durationType が 'hours' または 'days' の場合は必須です。 には、ロールがユーザーに割り当てられる時間数または日数の整数値が含まれている必要があります。
start (省略可能) ロールが割り当てられる日時。 この属性を省略すると、ロールがすぐに割り当てられます。 日付形式は 'YYYY-MM-DDThh:nn:ss" で、年、月、日のみが必要です。 たとえば、"2004-12-11" や "2004-11-28T08:00" は有効な値です。
end (省略可能) ロールが取り消された日時。 durationType と durationLength を指定すると、この値は無視されます。 日付形式は 'YYYY-MM-DDThh:nn:ss" で、年、月、日のみが必要です。 たとえば、"2004-12-11" や "2004-11-28T08:00" は有効な値です。
linkreason start、end、または duration が指定されている場合は必須。それ以外の場合は無視されます。
contextId (省略可能) 組織単位の ID。コンテキストに適応可能なロールにのみ必要です。

roledelete

ロールを削除します。

引数
roleID

roledeleteuser

ユーザーへのロールの割り当てを削除します。 ユーザーによって継承されたロールは、このコマンドによって取り消されます。

引数
userID
roleID
contextID (省略可能)

roleproposeOrgUnit

OrgUnit のメンバーとサブ OrgUnit に割り当てるロールを提案します。

引数
OrgUnitID
roleID
durationType (省略可能) 値 'free'、'hours'、および 'days' を含めることができます。
durationLength durationType が 'hours' または 'days' の場合は必須です。ロールがユーザーに割り当てられている時間数または日数の整数値を含める必要があります。
durationFixed 'true' または 'false' は、ユーザーへのこのロールの割り当てが durationLength と等しいかどうかを示します。
inheritThisRole 'true' または 'false' は、基になるユニットにロールが提案されているかどうかを示します。

taskadd

新しいタスクを作成し、新しいタスクの ID を返します。

引数
applicationID
description 最大 254 文字のテキスト。
taskname 最大 254 文字のテキスト。
tokenGroupID
svroleID (省略可能) この引数が存在しない場合は、現在のユーザーのスーパーバイザ ロールが使用されます。
contextAdaptable (省略可能) ["0","1","N","Y"]
underconstruction (省略可能) ["0","1","N","Y"]
auditaction (省略可能)
  • 0: 不明 (既定値)
  • 1: ReportOnly
  • 2: AlertAppAll
  • 3: AlertAppObsolete
  • 4: AlertAppMissing
  • 5: EnforceAppAll
  • 6: EnforceAppObsolete
  • 7: EnforceAppMissing
  • 8: AlertEnforceAppAll
  • 9: AlertEnforceAppObsolete
  • 10: AlertEnforceAppMissing
  • 11: ImportAll
auditalertmail (省略可能) このアクセス許可に関するアラートを送信した電子メール アドレスは、監査者によって送信されます。 この引数が存在しない場合は、監査人の通知電子メール アドレスが使用されます。
MaxRoles (省略可能) Integer
MaxUsers (省略可能) Integer
の戻り値の型 : 新しいタスクの ID。

taskadditask

2 つのタスクに互換性があることを示します。

引数
Taskid
taskID2

taskaddrole

ロールにタスクを割り当てます。

引数
roleID
Taskid

taskaddsupervisor

ユーザーをタスクのスーパーバイザーにします。

引数
svroleID 引数 userID も使用できます。 この場合、既定のスーパーバイザ ロールが選択されます。 既定のスーパーバイザ ロールには、 __svrole のような名前の後に数字が続きます。 引数 userID は、下位互換性のために使用できます。
Taskid

Useradd

新しいユーザーを作成し、新しいユーザーの ID を返します。

引数
description
alias
languageID
  • 1: 英語
  • 2: オランダ語
OrgUnitID
enddate (省略可能) 日付形式は 'YYYY-MM-DDThh:nn:ss" で、年、月、日のみが必要です。 たとえば、"2004-12-11" や "2004-11-28T08:00" は有効な値です。
disabled (省略可能)
  • 0: 有効
  • 1: 無効
MaxPermissions (省略可能) Integer
MaxRoles (省略可能) Integer
の戻り値の型 : 新しいユーザーの ID。

UserAddRole

ユーザー ロールを追加します。

引数

UserDeleteRole

ユーザー ロールを削除します。

引数

Userupdate

ユーザーの更新。

引数
UserID
description (省略可能)
language
  • 1: 英語
  • 2: オランダ語
userDisabled (省略可能)
  • 0: 有効
  • 1: 無効
UserEndDate (省略可能) 日付形式は 'YYYY-MM-DDThh:nn:ss" で、年、月、日のみが必要です。 たとえば、"2004-12-11" や "2004-11-28T08:00" は有効な値です。
firstName (省略可能)
middleName (省略可能)
lastName (省略可能)
maxPermissions (省略可能) Integer
maxRoles (省略可能) Integer

GetInfo 関数

このセクションで説明する一連の関数を使用して、BHOLD システムに格納されている情報を取得できます。 各関数は、BScript オブジェクトの GetInfo 関数を使用して呼び出すことができます。 一部のオブジェクトにはパラメーターが必要です。 返されるデータは、ビューのアクセス許可と、ログインしているユーザーの監視対象オブジェクトの影響を受けます。

GetInfo 引数

名前 説明
applications アプリケーションの一覧を返します。
attributetypes 属性型の一覧を返します。
orgtypes 組織単位の種類の一覧を返します。
OrgUnits 組織単位の属性を含まない組織単位の一覧を返します。
OrgUnitproposedroles 組織単位にリンクされている提案されたロールの一覧を返します。
OrgUnitroles 指定された組織単位の直接リンクされたロールの一覧を返します
Objecttypeattributetypes
権限
permissionusers
roles ロールの一覧を返します。
roletasks 指定されたロールのタスクの一覧を返します。
tasks BHOLD で認識されているすべてのタスクを返します。
users ユーザーの一覧を返します。
usersroles 指定されたユーザーのリンクされたスーパーバイザ ロールの一覧を返します。
userpermissions 指定されたユーザーのアクセス許可の一覧を返します。

OrgUnit 情報

名前 パラメーター の戻り値の型 :
OrgUnit OrgUnitID OrgUnit
OrgUnitasiattributes OrgUnitID コレクション
OrgUnits filter (省略可能)、proptypeid (省略可能)
proptypeid で説明されている proptype の filter で説明されている文字列を含む単位を検索します。 この ID を省略すると、フィルターはユニットの説明に適用されます。 フィルターが指定されていない場合は、すべての表示単位が返されます。
コレクション
OrgUnitOrgUnits OrgUnitID コレクション
OrgUnitparents OrgUnitID コレクション
OrgUnitpropertyvalues OrgUnitID コレクション
OrgUnitproptypes コレクション
OrgUnitusers OrgUnitID コレクション
OrgUnitproposedroles OrgUnitID コレクション
OrgUnitroles OrgUnitID コレクション
OrgUnitinheritedroles OrgUnitID コレクション
OrgUnitsupervisors OrgUnitID コレクション
OrgUnitinheritedsupervisors OrgUnitID コレクション
OrgUnitsupervisorroles OrgUnitID コレクション

ロール情報

名前 パラメーター の戻り値の型 :
role roleID Object
roles filter (省略可能) コレクション
roleasiattributes roleID コレクション
roleOrgUnits roleID コレクション
roleparentroles roleID コレクション
rolesubroles roleID コレクション
rolesupervisors roleID コレクション
rolesupervisorroles roleID コレクション
roletasks roleID コレクション
roleusers roleID コレクション
rolesupervisorroles roleID コレクション
proposedroleOrgUnits roleID コレクション
proposedroleusers roleID コレクション

アクセス許可 - タスク情報

名前 パラメーター の戻り値の型 :
権限 (permission) TaskID アクセス許可
権限 filter (省略可能) コレクション
permissionasiattributes TaskID コレクション
permissionattachments TaskID コレクション
permissionattributetypes - コレクション
permissionparams TaskID コレクション
permissionroles TaskID コレクション
permissionsupervisors TaskID コレクション
permissionsupervisorroles TaskID コレクション
permissionusers TaskID コレクション
タスク TaskID タスク
tasks filter (省略可能) コレクション
taskattachments TaskID コレクション
taskparams TaskID コレクション
taskroles TaskID コレクション
tasksupervisors TaskID コレクション
tasksupervisorroles TaskID コレクション
taskusers TaskID コレクション

ユーザー情報

名前 パラメーター の戻り値の型 :
user UserID User
users filter (省略可能)、attributetypeid (省略可能)
attributetypeid で指定された attributetype に filter で指定された文字列を含むユーザーを検索します。 この ID を省略すると、フィルターはユーザーの既定のエイリアスに適用されます。 フィルターが指定されていない場合は、表示されているすべてのユーザーが返されます。 例:
  • GetInfo("users") は、すべてのユーザーを返します。
  • GetInfo("users", "%dmin%") は、既定のエイリアスに文字列 "dmin" を持つすべてのユーザーを返します。
  • ユーザーに という名前 "City".GetInfo("users", "%msterda%", "City")の追加の属性があるとします。 この呼び出しは、City 属性に文字列 "msterda" を持つすべてのユーザーを返します。
UserCollection
usersapplications UserID コレクション
Userpermissions UserID コレクション
userroles UserID コレクション
usersroles UserID コレクション
userstasks UserID コレクション
usersunits UserID コレクション
usertasks UserID コレクション
userunits UserID コレクション

戻り値の型

このセクションでは、GetInfo 関数の戻り値の型について説明します。

名前 の戻り値の型 :
コレクション =<ITEMS>{<ITEM description="..." id="..." />}</ITEMS>
Object =<ITEM type="…" description="..." />
OrgUnit = <ITEM id="…" description="..." orgtype="..." parent="..."> <LIST> {<ITEM> <KEY>… </KEY> <VALUE> … </VALUE> </ITEM>} </LIST> </ITEM>
アクセス許可 = <ITEM id="…" description="…" name="…" tokengroup="…" application="…" > <LIST> {<ITEM> <KEY>… </KEY> <VALUE> … </VALUE> </ITEM>} </LIST> </ITEM>
ロール = <ITEMS> {<ITEM id="…" description="…" />} </ITEMS>
Role = <ITEM id="…" description="… " > <LIST> {<ITEM> <KEY>… </KEY> <VALUE> … </VALUE> </ITEM>} </LIST> </ITEM>
タスク 「アクセス許可」を参照してください
ユーザー = <ITEMS> {<ITEM description="…" id="…" alias="…" />} </ITEMS>
User = <ITEM id="…" description="…" alias="…" firstname="…" lastname="…" uuid="…" language="…"> <LIST> {<ITEM> <KEY>… </KEY> <VALUE> … </VALUE> </ITEM>} </LIST> </ITEM>

サンプル スクリプト

ある会社には BHOLD サーバーがあり、新しい顧客を作成する自動化されたスクリプトが必要です。 会社とその購入マネージャーに関する情報は、カスタマイズされた Web ページに入力されます。 すべての顧客は、ユニット顧客の下のユニットとしてモデルに表示されます。 購入マネージャーは、このユニットの監督者としてもメンバーです。 所有者に新しい顧客の名前で購入する権限を与えるロールが作成されます。

ただし、この顧客はアプリケーションに存在しません。 購入アプリケーションで新しい顧客アカウントを作成する特別な関数が ASI FunctionDispatch に実装されています。 各顧客には顧客の種類があります。

使用できる型は、FunctionDispatch 関数でも表示できます。 AA は、新しい顧客に適した型を選択します。

購入特権を提示するロールとタスクを作成します。 実際の購入特権は、ASI によって ファイル /customers/customer id/purchaseとして表示されます。 このファイルは、新しいタスクにリンクされている必要があります。

情報を収集する [Active Server] ページは次のようになります。

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

カスタマイズする必要があるページはすべて、適切な情報を要求し、要求された情報を含む XML ドキュメントを作成することです。 この例では、MySubmit ページで XML ドキュメント内のデータを変換し、b1script に割り当てます 。Parameters オブジェクトを指定し、最後に 関数を呼び出します b1script.ExecuteScript("MyScript")

次の入力スクリプトは、この例を示しています。

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

この入力スクリプトには、BHOLD 用のコマンドは含まれません。 これは、このスクリプトが BHOLD によって直接実行されないためです。代わりに、これは定義済みの関数の入力です。 この定義済み関数は、BHOLD コマンドを使用して、このオブジェクトを XML ドキュメントに変換します。 このメカニズムでは、setUser や関数ディスパッチなど、ユーザーが実行を許可されていない関数を含むスクリプトを BHOLD システムに送信できないようにします。

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

次の手順