![]() | |
Sun™ Identity Manager 8.0 配備に関する技術概要 |
第 6 章
ユーザーアクションを設定するこの章では、Identity Manager の管理者インタフェースにカスタムタスクを追加する方法と、次の 2 つのインタフェース領域から実行できるユーザーアクションの設定方法について説明します。
カスタムタスクを追加するカスタムタスクを追加するには、次の一般的な手順に従います。
カスタムタスクへの認証を設定する
通常は、タスクへのアクセスを特定の管理者の集合に制限するように、カスタムタスクへの認証を設定します。認証を設定するには、次の手順を実行します。
手順 1 : AuthType を作成する
新しい AuthType は、既存の TaskDefinition、TaskInstance、および TaskTemplate の各 AuthType を拡張して作成してください。AuthType を追加するには、リポジトリの AuthType 設定オブジェクトを編集して、タスクの新しい AuthType 要素を追加します。
<AuthType> 要素を使用して、新しい AuthType を作成します。この要素には、1 つの必須プロパティー name があります。次の例は、<AuthType> 要素の正しい構文を示します。
AuthType の作成後、リポジトリの AuthType 設定オブジェクトを編集して、新しい <AuthType> 要素を追加する必要があります。
次の例は、複数のユーザーを新しい組織に移動するカスタムタスクの追加方法を示します。
手順 2 : AdminGroup を作成する
次に、新しく作成した AuthType に Right.VIEW を許可する AdminGroup を作成します。これを行うには、新しい管理者グループを定義した XML ファイルを作成し、このファイルを Identity Manager リポジトリにインポートする必要があります。
コード例 6-2 AdminGroup の作成
<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE Waveset PUBLIC 'waveset.dtd' 'waveset.dtd'>
<Waveset>
<AdminGroup name='Move User'
protected='true'
displayName='UI_ADMINGROUP_MOVE_USER'
description='UI_ADMINGROUP_MOVE_USER_DESCRIPTION'>
<Permissions>
<Permission type='Move User' rights='View'/>
</Permissions>
<MemberObjectGroups>
<ObjectRef type='ObjectGroup' id='#ID#All' name='All'/>
</MemberObjectGroups>
</AdminGroup>
</Waveset>
注
displayName 属性と description 属性はメッセージカタログキーです。メッセージカタログに見つからない場合、これらの属性は属性に見つかった時点で表示されます。メッセージカタログキーを使用する場合、WPMessages.properties またはカスタムメッセージカタログのどちらかにメッセージを追加する必要があります。
手順 3 : 管理者に機能を許可する
最後に、新しく定義したタスクを実行するためのアクセス権限を管理者に許可する必要があります。これは、次の 2 つの方法のいずれかで行うことができます。
タスクをリポジトリに追加する
タスクへの認証を設定したあとで、タスクをリポジトリに追加することができます。タスクは、Identity Manager IDE を使用しての定義または XML 形式でのインポートが可能な標準の TaskDefinition です。たとえば、複数のユーザーの組織を変更するタスクは次の例のようになります (この例は samples ディレクトリにある)。
コード例 6-3 複数ユーザーの組織の変更
<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE TaskDefinition PUBLIC 'waveset.dtd' 'waveset.dtd'>
<!-- MemberObjectGroups="#ID#Top" authType="Move User" name="Change Organizations" taskType="Workflow" visibility="runschedule"-->
<TaskDefinition authType='MoveUser'
name='Change Organizations' taskType='Workflow'
executor='com.waveset.workflow.WorkflowExecutor'
suspendable='true'
syncControlAllowed='true' execMode='sync'
execLimit='0' resultLimit='0'
resultOption='delete' visibility='runschedule'
progressInterval='0'>
<Form name='Change Organization Form'
title='Change Organization Form'>
<Display class='EditForm'/>
<Include>
<ObjectRef type='UserForm' name='User Library'/>
<ObjectRef type='UserForm' name='Organization Library'/>
</Include>
FieldRef name='namesList'/>
<FieldRef name='orgsList'/>
<FieldRef name='waveset.organization'/>
</Form>
<Extension>
<WFProcess name='Change Organizations' title='Change Organizations'>
<Variable name='waveset.organization'/>
<Variable name='userObjectIds' input='true'>
<Comments>The names of the accounts to change the organization on.</Comments>
</Variable>
Activity id='0' name='start'>
<ReportTitle>
<s>start</s>
</ReportTitle>
<Transition to='Process Org Moves'/>
</Activity>
<Activity id='1' name='Process Org Moves'>
<Action id='0' process='Move User'>
<Iterate for='currentAccount' in='userObjectIds'/>
<Argument name='userId' value='$(currentAccount)'/>
<Argument name='organizationId'
value='$(waveset.organization)'/>
</Action>
<Transition to='end'/>
</Activity>
<Activity id='2' name='end'/>
</WFProcess>
</Extension>
<MemberObjectGroups>
<ObjectRef type='ObjectGroup' id='#ID#Top' name='Top'/>
</MemberObjectGroups>
</TaskDefinition>
例について
前掲の例については、次の点に注意してください。
- タスクの authType 属性は「Move User」に設定されます。これにより、このタスクにアクセスできるのは、この AuthType を実行する機能を割り当てられたユーザーに限定されます。
- フォームには namesList および orgsList への FieldRef (フィールド参照) が含まれます。これらのフィールドは、それぞれユーザーライブラリと組織ライブラリで定義されます。これらのフィールドを含めると、すべての選択対象ユーザーおよび選択対象組織の名前のリストが表示されます。危険を伴う可能性のあるタスクについては、タスクを実行することの潜在的な影響をユーザーが認識できるように、これらのフィールドのどちらかまたは両方を含めるようにしてください。
- タスクには userObjectIds という名前の入力変数があります。この変数の内容は、「ユーザーアカウントの検索結果」ページ、または「アカウント」ページのユーザーアプレットで選択されたユーザーの名前または ID のリストです。すべての選択したユーザーに対して目的のアクションを実行するには、この変数を反復処理します。
次の表は、タスクへの入力として使用できる変数の一覧です。
表 6-1 タスク変数
変数
説明
userObjectIds
選択されたユーザーの ID のリスト。「ユーザーアカウントの検索結果」ページおよび「アカウント」ページから利用できます。「ユーザーアカウントの検索結果」ページから呼び出された場合、このリストの内容は選択されたユーザーの名前になります。
userNames
選択されたユーザーの名前のリスト。「ユーザーアカウントの検索結果」ページおよび「アカウント」ページから利用できます。
orgObjectIds
選択された組織の ID のリスト。「アカウント」ページからのみ利用できます。
orgNames
選択された組織の名前のリスト。「アカウント」ページからのみ利用できます。
このワークフローを有効にするには、次の例に示すように、ユーザーの組織を変更するためのサブプロセスをリポジトリに追加する必要もあります。
コード例 6-4 ユーザーの組織の変更
<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE Configuration PUBLIC 'waveset.dtd' 'waveset.dtd'>
<!-- MemberObjectGroups="#ID#Top" configType="WFProcess" name="Move User"-->
<Configuration name='Move User' createDate='1083353996807'>
<Extension>
<WFProcess name='Move User' title='Move User'>
<Variable name='userId' input='true'>
<Comments>移動するユーザーのアカウント ID。< /Comments>
</Variable>
<Variable name='organizationId' input='true'>
<Comments>ユーザーの移動先組織の ID。
into.</Comments>
</Variable>
<Activity id='0' name='Start'>
<Transition to='Update Organization'/>
</Activity>
<Activity id='1' name='Update Organization'>
<Action id='0' process='Update User View'>
<Argument name='accountId' value='$(userId)'/>
<Argument name='updates'>
<map>
<s>waveset.organization</s>
<ref>organizationId</ref>
</map>
</Argument>
</Action>
<Transition to='End'/>
</Activity>
<Activity id='2' name='End'/>
</WFProcess>
</Extension>
<MemberObjectGroups>
<ObjectRef type='ObjectGroup' id='#ID#Top' name='Top'/>
</MemberObjectGroups>
</Configuration>
ユーザーアクションを設定するカスタムアクションを開始するボタンおよびアクションメニュー選択の定義を設定する必要があります。「ユーザーアカウントの検索結果」ページと「アカウント」ページに表示されるボタンおよびアクションメニュー項目の定義は、User Actions Configuration 設定オブジェクトに格納されます。
User Actions Configuration オブジェクトを直接編集しないでください。その代わりに、ユーザーアクションを設定するために推奨される方法は次のとおりです。
一般に、ユーザーアクションを設定する手順は次のとおりです。
- User Actions Configuration 設定オブジェクトを新しい XML ファイルにコピーします。
- 新しいオブジェクトの名前を「My User Actions Configuration」に変更します。
- My User Actions Configuration オブジェクトに必要な変更を行います。
- 「交換ファイルのインポート」ページから、XML ファイルを Identity Manager にインポートします。
- SystemConfiguration の userActionsConfigMapping 属性の値を「My User Actions Configuration」に変更します。
設定オブジェクトは、次の設定セクションで構成されます。
表 6-2 User Actions Configuration 属性
属性
説明
findUsersButtons
管理者インタフェースの「ユーザーアカウントの検索結果」ページのボタン定義のリスト。
userApplet.userMenu
ユーザーに対する処理メニューのメニュー項目定義のリスト。このメニューは、管理者インタフェースの「アカウント」ページのアプレット内でユーザーを右クリックしたときに表示されます。
userApplet.organizationMenu
組織に対する処理メニューのメニュー項目定義のリスト。このメニューは、「アカウント」ページのアプレット内で組織を右クリックしたときに表示されます。
各セクションでは、インタフェースで表示するユーザーアクションのリストが定義されます。ボタンおよびメニューの設定項目には共通の基本プロパティーがあります。どちらの項目にも、インタフェースに特有のいくつかの拡張が含まれます。
次の抜粋部分は、各リストに Change Organization (組織変更) タスクを追加するためのカスタマイズされたユーザーアクション設定の例です。
コード例 6-5 各リストへの組織変更タスクの追加
<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE Waveset PUBLIC 'waveset.dtd' 'waveset.dtd'>
<Waveset>
<Configuration name='My User Actions Configuration'>
<Extension>
<Object>
<!-- ユーザー検索の結果ページのボタン -- -->
<Attribute name='findUsersButtons'>
<List>
<Object>
<Attribute name='textKey' value='UI_NEW_LABEL' />
<Attribute name='commandName' value='New' />
<Attribute name='requiredPermission'>
<Object>
<Attribute name='objectType' value='User' />
<Attribute name='rights' value='Create' />
</Object>
</Attribute>
<Attribute name='alwaysDisplay' value='true' />
</Object>
...
<Object>
<Attribute name='textKey' value='UI_CHANGE_ORGANIZATIONS_LABEL' />
<Attribute name='commandName'
value='Change Organizations' />
</Object>
</List>
</Attribute>
<Attribute name='userApplet'>
<Object>
<!-- ユーザーが選択されたときに表示するメニュー -- -->
<Attribute name='userMenu'>
<List>
<Object>
<Attribute name='textKey'
value='UI_ACCT_JAVA_MENU_NEW_ORG' />
<Attribute name='commandName'
value='New Organization' />
<Attribute name='requiredPermission'>
<Object>
<Attribute name='objectType' value='ObjectGroup' />
<Attribute name='rights' value='Create' />
</Object>
</Attribute>
</Object>
...
<Object>
<Attribute name='separator' value='separator' />
</Object>
<Object>
<Attribute name='textKey'
value='UI_CHANGE_ORGANIZATIONS_MENU_LABEL' />
<Attribute name='commandName'
value='Change Organizations' />
</Object>
</List>
</Attribute>
<!-- 組織が選択されたときに表示するメニュー -- -->
<Attribute name='organizationMenu'>
<List>
<Object>
<Attribute name='textKey'
value='UI_ACCT_JAVA_MENU_NEW_JUNCTION' />
<Attribute name='commandName'
value='New Directory Junction' />
<Attribute name='requiredPermission'>
<Object>
<Attribute name='objectType' value='ObjectGroup' />
<Attribute name='rights' value='Create' />
</Object>
</Attribute>
<Attribute name='orgTypes' value='normal,dynamic' />
</Object>
...
<Object>
<Attribute name='separator' value='separator' />
</Object>
<Object>
<Attribute name='textKey'
value='UI_CHANGE_ORGANIZATIONS_MENU_LABEL' />
<Attribute name='commandName'
value='Change Organizations' />
</Object>
</List>
</Attribute>
</Object>
</Attribute>
</Object>
</Extension>
<MemberObjectGroups>
<ObjectRef type='ObjectGroup' name='All'/>
</MemberObjectGroups>
</Configuration>
</Waveset>
ユーザーアクション定義は、次のコア属性をサポートします。
表 6-3 サポートされるコア属性
属性
説明
textKey
ボタンまたはメニュー項目のテキストのメッセージカタログキー。
commandName
実行するコマンドの名前。この属性は、(「新規」や「ユーザーの削除」などの) ネイティブにサポートされているコマンド、または実行する TaskDefinition の名前に設定できます。
requiredPermission.objectType
この項目を表示するために権限が必要なオブジェクトの種類。これは、ネイティブにサポートされているコマンドのみに適用されます。タスク定義については、アクセスの制御に AuthType を使用するようにしてください。
requiredPermission.rights
指定された objectType がこの項目を表示するために必要な権限名のコンマ区切りのリスト。これは、ネイティブにサポートされているコマンドのみに適用されます。タスク定義については、アクセスの制御に AuthType を使用するようにしてください。
alwaysDisplay
オプション。このボタンを常に表示するかどうかを指定します。この値を true に設定した場合、ユーザー検索で結果が何も返されない場合でもボタンが表示されます。この属性のデフォルト値は false です。
findUsersButtons セクションのみに適用されます。
userApplet セクションのユーザーアクション定義は、次の表に示す属性もサポートします。
表 6-4 userApplet ユーザーアクションでサポートされる属性
属性
説明
orgTypes
組織メニューに項目を表示する組織タイプのコンマ区切りリスト。指定できる値は、通常の組織を表す normal、動的組織を表す dynamic、仮想組織を表す virtual です。
この属性を指定しない場合、すべての組織タイプに対してメニュー項目が表示されます。
separator
<Object><Attribute name='separator' value='separator'/></Object> の形式の特殊項目。セパレータは管理者インタフェースに水平バーとして表示され、選択できません。