Sun Java ロゴ     前へ      目次      索引      次へ     

Sun ロゴ
Sun™ Identity Manager 8.0 配備に関する技術概要 

第 6 章
ユーザーアクションを設定する

この章では、Identity Manager の管理者インタフェースにカスタムタスクを追加する方法と、次の 2 つのインタフェース領域から実行できるユーザーアクションの設定方法について説明します。


カスタムタスクを追加する

カスタムタスクを追加するには、次の一般的な手順に従います。

カスタムタスクへの認証を設定する

通常は、タスクへのアクセスを特定の管理者の集合に制限するように、カスタムタスクへの認証を設定します。認証を設定するには、次の手順を実行します。

  1. 新しい AuthType をタスクのリポジトリに追加します。
  2. タスクの新しい AdminGroup (機能) を作成します。
  3. 新しい機能を 1 名以上の管理者に許可します。

手順 1 : AuthType を作成する

新しい AuthType は、既存の TaskDefinitionTaskInstance、および TaskTemplate の各 AuthType を拡張して作成してください。AuthType を追加するには、リポジトリの AuthType 設定オブジェクトを編集して、タスクの新しい AuthType 要素を追加します。

<AuthType> 要素を使用して、新しい AuthType を作成します。この要素には、1 つの必須プロパティー name があります。次の例は、<AuthType> 要素の正しい構文を示します。

AuthType の作成後、リポジトリの AuthType 設定オブジェクトを編集して、新しい <AuthType> 要素を追加する必要があります。

次の例は、複数のユーザーを新しい組織に移動するカスタムタスクの追加方法を示します。

コード例 6-1 新しい組織への複数ユーザーの移動

<Configuration name='AuthorizationTypes'>

      <Extension>

        <AuthTypes>

          <AuthType name='Move User'

extends='TaskDefinition,TaskInstance,TaskTemplate'/>

        </AuthTypes>

      </Extension>

</Configuration>

手順 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>

例について

前掲の例については、次の点に注意してください。

次の表は、タスクへの入力として使用できる変数の一覧です。

表 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 オブジェクトを直接編集しないでください。その代わりに、ユーザーアクションを設定するために推奨される方法は次のとおりです。

一般に、ユーザーアクションを設定する手順は次のとおりです。

  1. User Actions Configuration 設定オブジェクトを新しい XML ファイルにコピーします。
  2. 新しいオブジェクトの名前を「My User Actions Configuration」に変更します。
  3. My User Actions Configuration オブジェクトに必要な変更を行います。
  4. 「交換ファイルのインポート」ページから、XML ファイルを Identity Manager にインポートします。
  5. 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> の形式の特殊項目。セパレータは管理者インタフェースに水平バーとして表示され、選択できません。



前へ      目次      索引      次へ     


Part No: 820-5432.   Copyright 2008 Sun Microsystems, Inc. All rights reserved.