カスタム属性の追加
ServiceNow は、ユーザー・オブジェクトのカスタム・フィールドをサポートします。アダプターがサポートするのは一連の標準属性のみですが、カスタム属性をサポートするようにアダプターをカスタマイズできます。
手順
-
アダプター・プロファイルの JAR ファイルをコピーして、解凍します。
- IBM® パスポート・アドバンテージ Web サイトからアダプター・パッケージをダウンロードします。
- アダプター・パッケージに含まれている ServiceNowProfile.jar ファイルを一時ディレクトリーにコピーします。
-
次のコマンドを実行して、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
-
schema.dsml ファイルを更新します。このファイルは、ユーザー・アカウントのすべての標準属性を識別します。新規カスタム属性を識別するようにこのファイルを変更します。
- schema.dsml をテキスト・エディターで開きます。
-
一連の属性の末尾にカスタム属性を追加します。
例えば、以下のとおりです。
<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 が競合した場合はエラー・メッセージが表示されます。
-
カスタム・フィールドが別のテーブルを参照している場合は、サポート・データとしてフィールドを定義します。
ページの 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
およびerServiceNowDepartmentName
はcmn_department
テーブルを参照しています。カスタム・フィールド・オブジェクト・クラスの OID は新しい範囲から開始する必要があります。できれば 1.3.6.1.4.1.6054.3.177.1.100 以降にします。
-
この属性とそのラベルを CustomLabels.properties ファイルに追加して、アダプター・アカウント・フォームに正しいラベルを表示するようにします。
使用する形式は
attribute=label
です。注: 属性名は小文字にする必要があります。 例:erservicenowcustomattribute=Custom Field One
-
カスタム属性の新規マッピングを追加するためにアセンブリー・ラインを変更します。servicenowAl.xml 内のアセンブリー・ラインには、IBM Security
Identity Manager 要求から ServiceNow へのマッピング命令が含まれています。
- Tivoli Directory Integrator Configuration Editor を起動します。
- 「ファイル」 > 「Tivoli Directory Integrator 構成ファイルを開く」を選択して servicenowAL.xml を開きます。
- 「snAdd」 > 「addUser」を選択します。これには、ユーザーの追加 操作のためのマッピングが含まれています。
- 「OutputMap」に、ServiceNow での API 名と完全に一致するようにカスタム・フィールドの名前を追加します。
-
デフォルト値
work.[custom field name]
をwork.[custom attribute name]
に変更します。例えば、work.u_custom_field
をwork.erServiceNowCustomAttribute
にします。 - 属性を「snModify」 > 「出力マップ」に追加します。
- 属性を「snRecon」に追加します。「searchUser」を選択してカスタム属性を追加します。
-
「入力マップ」で、「作業属性」を
erServiceNowCustomAttribute
と設定し、「割り当て」をconn.u_custom_field
と設定します。 -
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”)
- 保存して servicenowAL.xml にエクスポートして戻します。
-
JAR ファイルを作成して新規アダプター・プロファイルをインストールします。
-
¥temp ディレクトリー内のファイルを使用して JAR ファイルを作成します。以下のコマンドを実行します。
cd c:¥temp jar -cvf ServiceNowProfile.jar ServiceNowProfile
- ServiceNowProfile.jar ファイルを IBM Security Identity サーバーにインポートします。
-
ディスパッチャーを再始動します。
注: LDAP のログおよびトレース・ログを調べて、プロファイルのロードに問題がないかを確認してください。
-
¥temp ディレクトリー内のファイルを使用して JAR ファイルを作成します。以下のコマンドを実行します。
-
新規カスタム属性を表示または編集するためにアダプター・フォームを変更します。これを行わないと、アセンブリー・ラインが機能している場合でも、属性が表示されません。
属性値のタイプを ServiceNow のフィールド・タイプに従って設定できます。
サポート・データを持つ属性の場合は、タイプを「ドロップダウン・ボックス」に設定します。フィルターのAttribute
はサポート・データのName
またはLabel
にする必要があります。Source
はSYSID
、Filter
は objectclass (サポート・データのオブジェクト・クラス) とします。例えば、以下のとおりです。Attribute: erservicenowdepartmentname Source Attribute: erservicenowdepartmentsysid Filter:(objectclass=erservicenowdepartmentclass)
アカウント・フォームの変更について詳しくは、IBM Security Identity Manager の製品資料を参照してください。