LDAP スクリプティング

  • リリースバージョン: Xanadu
  • 更新日 2024年08月01日
  • 所要時間:4分
  • データをインポートするときの要件を指定するカスタム変換マップ、スクリプト、およびビジネスルールを作成します。

    カスタム変換マップには、onStart および onAfter 変換スクリプトを含める必要があります。

    onStart スクリプトは LDAPUtils スクリプトインクルードを呼び出してログ記録を開始する必要があります。たとえば、[LDAP ユーザーインポート] 変換マップには、次のコードを使用する onStart スクリプトがあります。
    gs.include ( "LDAPUtils" ) ; var ldapUtils  = new LDAPUtils ( ) ;
    ldapUtils. setLog (log ) ;
    onAfter スクリプトは addMembers 関数を呼び出します。例:
    ldapUtils.addMembers (source , target ) ;

    無効な Active Directory ユーザーを非アクティブに設定する

    関連付けられた AD ユーザーが無効になっている場合は、次のスクリプトを使用してユーザーを自動的に非アクティブ化します。

    始める前に

    必要なロール:admin

    このタスクについて

    無効な Active Directory ユーザーは、userAccountControl 属性の値を確認することで識別できます。このルールは、userAccountControl の値が変更されるたびに実行され、[ユーザーアカウント制御] が無効な AD アカウントを示している場合はユーザーアカウントを非アクティブ化します。

    関連付けられた AD ユーザーが無効になっている場合は、次のスクリプトを使用してユーザーを自動的に非アクティブ化します。

    手順

    1. [ユーザー] フォームを設定し、[ユーザーアカウント制御] という名前の新しい整数フィールドを作成します。
    2. userAccountControl (外部) のマッピングを新しいフィールドに追加します。
    3. 次のプロパティを使用して、新しいビジネスルールを作成します。
      表 : 1. AD ユーザーのビジネスルールを無効にする
      [ビジネスルール] フィールド
      名前 AD ユーザーを無効化
      テーブル ユーザー [sys_user]
      時期
      条件 current.u_user_account_control.changes()

      [スクリプト] フィールドには、以下を含める必要があります。

      var disabledFlag = 2;
      //perform a bitwise comparison on userAccountControl to see if the 2 bit flag is enabled
      if (current.u_user_account_control & disabledFlag) {
        gs.log('Disabling user: ' + current.user_name + 'userAccountControl=' + current.u_user_account_control);
        current.active='false';
        current.locked_out='true';
      }

    LDAP フィールド値の割り当て

    スクリプトを使用して、フィールドマッピングがあるフィールドに値を割り当てることができます。

    たとえば、[sys_user.company] フィールドに値を割り当てるには、[会社] フィールドのフィールドマップを作成し、次の変換スクリプトを追加します。

    company = "Don's Sporting Goods";

    特定の LDAP ユーザーを除外する

    LDAP フィルタープロパティを使用して LDAP ユーザーリストを完全にフィルタリングできない場合は、マップスクリプトを使用してユーザーを除外できます。

    インポートしないユーザーを識別するロジックを実行した後、user_name フィールドを空の文字列に設定すると、このユーザーはインポートされません。

    user_name='';

    除外するユーザーを識別する方法の 1 つは、DistinguusedName 属性で文字列を検索することです。たとえば、このスクリプトは、ユーザー OU にないアカウントを除外します。ユーザー OU が多すぎてターゲット OU LDAP オプションに含めることができない場合は、このスクリプトを使用できます。

    //vdn is a variable mapped to distinguishedName
    gs.include("LDAPUtils");
    var vdn = source.getElement(this.distinguishedName);
    if (vdn.indexOf('OU=Users')<0) {
      user_name='';
      gs.log('LDAP Import Skipping User: ' + vdn);
    }

    フィルタリングのより複雑な方法は、正規表現を使用することです。

    //vcn is a variable mapped to cn
    //vdn is a variable mapped to distinguishedName
    //c is the regular expression string
    gs.include("LDAPUtils");
    var vdn = source.getElement(this.distinguishedName);
    var vcn = source.getElement(this.cn);
    var c = /^[a-z][a-z][a-z][0-9][0-9][0-9]$/;
    var nvcn = vcn.toLowerCase();
    //test to see if the cn is in the form of 3 letters followed by 3 numbers, only import these
    if (c.test(nvcn)) {
    	user_name = nvcn;
    } else {
    	gs.log("LDAP import rejected username: " + vcn + " for DN: " + vdn);
    	user_name = "";
    }