ここでは、SmartRoles リソースアダプタの使用に関連する情報を提供します。説明する内容は次のとおりです。
全般的な注意事項
Complex 属性のサポート
制限事項
このリソースに関する全般的な注意事項は次のとおりです。
SmartRoles アダプタは SmartRoles リポジトリと直接通信するため、このアダプタを動作させるために Relationship Manager アプリケーションを実行する必要はありません。
このアダプタは汎用 ID を生成し、設定ファイル内に接続情報を格納できます。
SmartRoles アダプタを設定するときに、SmartRoles で新しいアカウントの汎用 ID を生成するか、アダプタで汎用 ID を提供するかを選択できます。アダプタで ID を提供する場合は、アイデンティティーテンプレートで生成された値が使用されます。
Identity Manager では新しい complex 属性タイプが導入され、これによって SmartRoles アダプタが複雑な属性をサポートできるようになりました。この complex 属性タイプは、属性値が単一の値や値のリストよりも複雑な場合に使用されます。この新しい complex タイプは、次の属性とともに使用されます。
sr_positions
sr_grantedRolesSphere
sr_organizations
Complex 属性の属性値は、新しい com.waveset.object.GenericAttribute クラスのインスタンスです。GenericAttribute インスタンスは、実際の属性値情報を格納している GenericObject インスタンスをラップします。GenericObject は、パス表現を使用して設定および取得できる階層内に、属性と値を格納します。
このアダプタは before および after アクションをサポートしていませんが、runResourceAction プロビジョニングワークフローサービスを使用して、実行中のアクションをサポートしています。SmartRoles アクションは JavaScript または BeanShell で作成でき、作成されたアクションは SmartRoles API を呼び出してワークフローの一部としてカスタム動作を実行できます。アクションスクリプトへの入力は、actionContext という名前のマップオブジェクトに格納されます。actionContext マップに格納される内容は次のとおりです。
キー |
値 |
---|---|
action |
実行しているアクションのタイプを説明する文字列。現在、このアクションをrun 以外にすることはできません。 |
adapter |
com.waveset.adapter.SmartRolesResourceAdapter インスタンスへの参照を格納します。 |
additionalArgs |
runResourceAction プロビジョニングワークフローサービスの呼び出しに渡される追加の引数を格納するマップです。 |
result |
runResourceAction プロビジョニングワークフローサービスの呼び出しから返される WavesetResult への参照。 |
session |
SmartRoles の IOMSession インスタンスへの参照。セッションは、SmartRoles リソースで定義される管理者とパスワードを使用して作成されます。 |
trace |
com.waveset.adapter.SmartRolesResourceAdapter クラスに関連付けられた com.sun.idm.logging.trace.Trace インスタンスへの参照。これを使用して、アクションスクリプトのデバッグに使用するためのトレースメッセージを出力できます。 |
次に示す ResourceAction XML は、BeanShell アクションの例です。JavaScript アクションの場合は actionType を JAVASCRIPT に設定します。このアクションは、additionalArgs マップから取得された user という名前の引数を使用し、SmartRoles リポジトリを検索して、user 引数の値と一致する LOGON_ID を持つ 1 つ以上の Person オブジェクトを見つけます。すると、一致したそれぞれの Person の文字列表現は、ACTION_RC ResultItem 内の WavesetResult に返されます。
<?xml version=’1.0’ encoding=’UTF-8’?> <!DOCTYPE ResourceAction PUBLIC ’waveset.dtd’ ’waveset.dtd’> <!-- MemberObjectGroups="#ID#Top"--> <ResourceAction createDate=’1148443502593’> <ResTypeAction restype=’SmartRoles’ timeout=’0’ actionType=’BEANSHELL’> <act> import bridgestream.core.*; import bridgestream.util.*; import bridgestream.temporal.person.*; import java.util.*; import com.waveset.object.*; IOMSession session = actionContext.get("session"); OMEngine engine = OMEngine.getInstance(session); String user = actionContext.get("additionalArgs").get("user"); UTNameValuePair[] criteria = new UTNameValuePair[] { new UTNameValuePair ("LOGON_ID", user) }; UTTimestamp time = UTTimestamp.getSystemTimestamp(); List list = session.search("PERSON", criteria, time, null, null); Iterator iter = list.iterator(); StringBuffer buf = new StringBuffer(); while (iter.hasNext()) { ENPerson person = (ENPerson)iter.next(); buf.append(person.toString()); buf.append("\n\n"); } WavesetResult result = actionContext.get("result"); result.addResult("ACTION_RC", buf.toString()); </act> </ResTypeAction> <MemberObjectGroups> <ObjectRef type=’ObjectGroup’ id=’#ID#Top’ name=’Top’/> </MemberObjectGroups> </ResourceAction>
現在、このアダプタには次のような制限があります。
ロールは、SmartRoles の person オブジェクトにのみ許可されます。position オブジェクトにロールを許可することはできません。
Identity Manager では、1 つの SmartRoles インストールとの通信のみ設定できます。
許可されたロール範囲の制御を割り当てる場合、その範囲の制御内の組織には、直接割り当てられた組織だけでなく、それらの組織のすべての子孫も含まれます。割り当て済みの組織の子孫を割り当てようとすると、エラーが発生します。
アダプタは SmartRoles の組織を名前で参照するため、SmartRoles 内の組織名は一意にしてください。
SmartRoles の person オブジェクトを position に割り当てるときに、アダプタは使用可能な position を見つけようとはしません。代わりに、アダプタは常に新しい position オブジェクトを作成し、person オブジェクトをその新しい position に割り当てます。