Sun Identity Manager 8.1 リソースリファレンス

使用上の注意

ここでは、SmartRoles リソースアダプタの使用に関連する情報を提供します。説明する内容は次のとおりです。

全般的な注意事項

このリソースに関する全般的な注意事項は次のとおりです。

Complex 属性のサポート

Identity Manager では新しい complex 属性タイプが導入され、これによって SmartRoles アダプタが複雑な属性をサポートできるようになりました。この complex 属性タイプは、属性値が単一の値や値のリストよりも複雑な場合に使用されます。この新しい complex タイプは、次の属性とともに使用されます。

Complex 属性の属性値は、新しい com.waveset.object.GenericAttribute クラスのインスタンスです。GenericAttribute インスタンスは、実際の属性値情報を格納している GenericObject インスタンスをラップします。GenericObject は、パス表現を使用して設定および取得できる階層内に、属性と値を格納します。

ResourceAction のサポート

このアダプタは 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>

制限事項

現在、このアダプタには次のような制限があります。