カスタム属性の追加

ServiceNow は、ユーザー・オブジェクトのカスタム・フィールドをサポートします。アダプターがサポートするのは一連の標準属性のみですが、カスタム属性をサポートするようにアダプターをカスタマイズできます。

手順

  1. アダプター・プロファイルの JAR ファイルをコピーして、解凍します。
    1. IBM® パスポート・アドバンテージ Web サイトからアダプター・パッケージをダウンロードします。
    2. アダプター・パッケージに含まれている ServiceNowProfile.jar ファイルを一時ディレクトリーにコピーします。
    3. 次のコマンドを実行して、ServiceNowProfile.jar ファイルの内容を抽出します。
      cd c:¥temp
      jar -xvf ServiceNowProfile.jar

      jar コマンドによって c:¥temp¥ServiceNowProfile ディレクトリーが作成されます。

      JAR ファイルに含まれる ServiceNowProfile フォルダーには以下のファイルがあります。
      • CustomLabels.properties
      • erServiceNowAccount.xml
      • erServiceNowService.xml
      • schema.dsml
      • service.def
      • servicenowAL.xml
  2. schema.dsml ファイルを更新します。このファイルは、ユーザー・アカウントのすべての標準属性を識別します。新規カスタム属性を識別するようにこのファイルを変更します。
    1. schema.dsml をテキスト・エディターで開きます。
    2. 一連の属性の末尾にカスタム属性を追加します。
      例えば、以下のとおりです。
      <attribute-type single-value="true">
      <name>erServiceNowCustomAttribute</name>
      <object-identifier>1.3.6.1.4.1.6054.3.177.2.1001</object-identifier>
      <syntax>1.3.6.1.4.1.1466.115.121.1.15</syntax>
      </attribute-type>
      注:
      • attribute-type では、属性が単一値か複数値かを示すために single-value を使用します。
      • 属性名の先頭に接頭部 erServiceNow を付けて、IBM® Security Identity Manager で使用する属性を容易に識別できるようにします。
      • オブジェクト ID (OID) は 1 ずつ大きくなります。カスタム属性の番号は新たな範囲で開始して、アダプターの今後のバージョンでの OID の競合を回避してください。例えば、属性 OID を 1.3.6.1.4.1.6054.3.177.2.1000 から開始すると、最初の属性 OID は 1.3.6.1.4.1.6054.3.177.2.1001 になります。 OID が競合した場合はエラー・メッセージが表示されます。
    3. カスタム・フィールドが別のテーブルを参照している場合は、サポート・データとしてフィールドを定義します。
      ページの URL を確認して、カスタム・フィールドが ServiceNow UI から何を参照しているかを判別します。例: https://XXX.service-now.com/cmn_department_list.do?sysparm_target=sys_user.department&sysparm_target_value=1231342432&sysparm_nameofstack=reflist&sysparm_clear_stack=true&sysparm_element=department&sysparm_reference=cmn_department&sysparm_view=sys_ref_list&sysparm_additional_qual=&sysparm_dependent=&sysparm_domain_restore=false
      注:

      参照先のテーブルは sysparm_reference=cmn_department と示されています。department の値は cmn_department 内の SYSID を参照しており、cmn_department から Name を表示します。

      erServiceNowAccount オブジェクト・クラスには、ServiceNow の「部門」フィールドを表すために属性 erServiceNowDepartment が必要です。アダプターには、LDAP に SYSID および Name を保管するためのオブジェクト・クラスも必要です。例えば、アダプターの部門サポート・データのオブジェクト・クラスは以下のようになります。
      <class superior="top">
      <name>erServiceNowDepartmentClass</name>
      <description>Department supporting data</description>
      <object-identifier>1.3.6.1.4.1.6054.3.177.1.5</object-identifier>
      <attribute ref="erServiceNowDepartmentSysID" required="true"/>
      <attribute ref="erServiceNowDepartmentName" required="false"/>
      </class>

      erServiceNowDepartmentSysID および erServiceNowDepartmentNamecmn_department テーブルを参照しています。

      カスタム・フィールド・オブジェクト・クラスの OID は新しい範囲から開始する必要があります。できれば 1.3.6.1.4.1.6054.3.177.1.100 以降にします。

  3. この属性とそのラベルを CustomLabels.properties ファイルに追加して、アダプター・アカウント・フォームに正しいラベルを表示するようにします。
    使用する形式は attribute=label です。
    注: 属性名は小文字にする必要があります。 例: erservicenowcustomattribute=Custom Field One
  4. カスタム属性の新規マッピングを追加するためにアセンブリー・ラインを変更します。servicenowAl.xml 内のアセンブリー・ラインには、IBM Security Identity Manager 要求から ServiceNow へのマッピング命令が含まれています。
    1. Tivoli Directory Integrator Configuration Editor を起動します。
    2. 「ファイル」 > 「Tivoli Directory Integrator 構成ファイルを開く」を選択して servicenowAL.xml を開きます。
    3. 「snAdd」 > 「addUser」を選択します。これには、ユーザーの追加 操作のためのマッピングが含まれています。
    4. 「OutputMap」に、ServiceNow での API 名と完全に一致するようにカスタム・フィールドの名前を追加します。
    5. デフォルト値 work.[custom field name]work.[custom attribute name] に変更します。例えば、work.u_custom_fieldwork.erServiceNowCustomAttribute にします。
    6. 属性を「snModify」 > 「出力マップ」に追加します。
    7. 属性を「snRecon」に追加します。「searchUser」を選択してカスタム属性を追加します。
    8. 「入力マップ」で、「作業属性」erServiceNowCustomAttribute と設定し、「割り当て」conn.u_custom_field と設定します。
    9. erServiceNowDepartment など、サポート・データを持つ属性の場合は、以下のようにします。
      • 「searchUser」の「入力マップ」で「割り当て」を conn.departmentValue と設定します。
      • 「GetNext の指定変更」で以下の箇所を検索します。
        if(usersList[currentUser].department)
        {usersList[currentUser].departmentValue 
        = usersList[currentUser].department.value; }
      • カスタム属性を追加します。スクリプトのこの部分の目的は department.value (これが SYSID) を取得することです。
      • それを departmentValue に割り当てます。これは入力マッピングで使用されます。
      • 「searchChoice」で、サポート・データ属性の入力マップを以下のように追加します。
        erServiceNowDepartmentName maps to conn.erServiceNowDepartmentName, 
        erServiceNowDepartmentSysID maps to conn.erServiceNowDepartmentSysID
      • 「初期化後」で、カスタム属性用に以下の行を追加します。
        addToChoiceMap(supporting data object class anme, titleName, 
        attribute name, attribute SYSID, url for the table supporting data referred to)
        例えば、部門のコードは以下のようになります。
        addToChoiceMap(“erServiceNowDepartmentClass”,”name”,”erServiceNowDepartmentName”,
        “erServiceNowDepartmentSysID”,”/api/now/v1/table/cmn_department”)
    10. 保存して servicenowAL.xml にエクスポートして戻します。
  5. JAR ファイルを作成して新規アダプター・プロファイルをインストールします。
    1. ¥temp ディレクトリー内のファイルを使用して JAR ファイルを作成します。以下のコマンドを実行します。
      cd c:¥temp
      jar -cvf ServiceNowProfile.jar ServiceNowProfile
    2. ServiceNowProfile.jar ファイルを IBM Security Identity サーバーにインポートします。
    3. ディスパッチャーを再始動します。
      注: LDAP のログおよびトレース・ログを調べて、プロファイルのロードに問題がないかを確認してください。
  6. 新規カスタム属性を表示または編集するためにアダプター・フォームを変更します。これを行わないと、アセンブリー・ラインが機能している場合でも、属性が表示されません。

    属性値のタイプを ServiceNow のフィールド・タイプに従って設定できます。

    サポート・データを持つ属性の場合は、タイプを「ドロップダウン・ボックス」に設定します。フィルターの Attribute はサポート・データの Name または Label にする必要があります。SourceSYSIDFilter は objectclass (サポート・データのオブジェクト・クラス) とします。例えば、以下のとおりです。
    Attribute: erservicenowdepartmentname
    Source Attribute: erservicenowdepartmentsysid
    Filter:(objectclass=erservicenowdepartmentclass)

    アカウント・フォームの変更について詳しくは、IBM Security Identity Manager の製品資料を参照してください。