Identity Manager では、どのユーザーをエンドユーザーの制御範囲に置くかを管理できます。
「制御の範囲」タブ (図 6–4) を使用して、この組織のメンバーで管理可能な組織を指定するか、管理者ロールのユーザーによって管理される組織を決定する規則を指定し、管理者ロールのユーザーフォームを選択します。
「管理する組織」。「利用可能な組織」リストから、この管理者ロールが管理する権利を持つ組織を選択します。
「管理する組織の規則」。ユーザーログイン時に評価の対象となる、この管理者ロールが割り当てられたユーザーによって管理される組織に対する規則を選択します。選択する規則は、ControlledOrganizationsRule authType を持つ必要があります。デフォルトで、管理する組織の規則は選択されていません。
EndUserControlledOrganizations 規則を使用して必要なロジックを定義し、組織のニーズに応じて委任に適した一連のユーザーを選択可能にすることができます。
ユーザーが管理者インタフェースとエンドユーザーインタフェースのどちらにログインしていても、管理者に表示されるユーザーリストの範囲が同じになるようにするには、EndUserControlledOrganizations 規則を変更します。
認証中のユーザーが管理者かどうかを最初にチェックするように規則を変更し、それから次のように設定します。
ユーザーが管理者でない場合は、そのユーザー自身の組織など、エンドユーザーによって管理される一連の組織を返します (例: waveset.organization)。
ユーザーが管理者である場合はどの組織も返さず、管理者であるために割り当てられた組織のみをそのユーザーが管理するようにします。
たとえば、次のようにします。
<Rule protectedFromDelete=’true’ authType=’EndUserControlledOrganizationsRule’ id=’#ID#End User Controlled Organizations’ name=’End User Controlled Organizations’> <Comments> If the user logging in is not an Idm administrator, then return the organization that they are a member of. Otherwise, return null. </Comments> <cond> <and> <isnull><ref>waveset.adminRoles</ref></isnull> <isnull><ref>waveset.capabilities</ref></isnull> <isnull><ref>waveset.controlledOrganizations</ref></isnull> </and> <ref>waveset.organization</ref> </cond> <MemberObjectGroups> <ObjectRef type=’ObjectGroup’ id=’#ID#Top’ name=’Top’/> </MemberObjectGroups> </Rule> |
動的な組織に所属しているユーザーまたは管理者は、検索結果に返されません。
ただし、動的な組織のユーザーを返すように規則を作成することもできます。次のサンプル規則で、Idm Schema Configuration オブジェクトで定義されている Identity Manager ユーザースキーマ定義に新しい属性を追加し、このオブジェクトをインポートして、Identity Manager サーバーを再起動します。
<IDMAttributeConfigurations> ... <IDMAttributeConfiguration name='region' syntax='STRING' description='region of the country'/> </IDMAttributeConfigurations> <IDMObjectClassConfigurations> ... <IDMObjectClassConfiguration name='User' extends='Principal' description='User description'> ... <IDMObjectClassAttributeConfiguration name='region' queryable='true'/> </IDMObjectClassConfiguration> </IDMObjectClassConfigurations> Next, import the following Identity Manager objects: <!-- User member rule that will include all users whose region attribute matches the region organization display name --> <Rule name="Region User Member Rule" authType="UserMembersRule"> <Description>User Member Rule</Description> <list> <new class='com.waveset.object.AttributeCondition'> <s>region</s> <s>equals</s> <ref>userMemberRuleOrganizationDisplayName</ref> </new> </list> <MemberObjectGroups> <ObjectRef type="ObjectGroup" id="#ID#All" name="All"/> </MemberObjectGroups> </Rule> <!-- North & South Region organizations with user member rule assigned --> <ObjectGroup id='#ID#North Region' name='North Region' displayName='North Region'> <UserMembersRule cacheTimeout='3600000'> <ObjectRef type='Rule' name='Region User Member Rule'/> </UserMembersRule> <MemberObjectGroups> <ObjectRef type='ObjectGroup' name='Top' id='#ID#Top'/> </MemberObjectGroups> </ObjectGroup> <ObjectGroup id='#ID#South Region' name='South Region' displayName='South Region'> <UserMembersRule cacheTimeout='3600000'> <ObjectRef type='Rule' name='Region User Member Rule'/> </UserMembersRule> <MemberObjectGroups> <ObjectRef type='ObjectGroup' name='Top' id='#ID#Top'/> </MemberObjectGroups> </ObjectGroup> <!-- Organization containing all employees --> <ObjectGroup id='#ID#Employees' name='Employees' displayName='Employees'> <MemberObjectGroups> <ObjectRef type='ObjectGroup' name='Top' id='#ID#Top'/> </MemberObjectGroups> </ObjectGroup> <!-- End user controlled organization rule that give each user control of the regional organization they are a member of --> <Rule protectedFromDelete='true' authType='EndUserControlledOrganizationsRule' id='#ID#End User Controlled Organizations' name='End User Controlled Organizations' primaryObjectClass='Rule'> <switch> <ref>waveset.attributes.region</ref> <case> <s>North Region</s> <s>North Region</s> </case> <case> <s>South Region</s> <s>South Region</s> </case> <case> <s>East Region</s> <s>East Region</s> </case> <case> <s>West Region</s> <s>West Region</s> </case> </switch> <MemberObjectGroups> <ObjectRef type='ObjectGroup' id='#ID#Top' name='Top'/> </MemberObjectGroups> </Rule> <!-- 4 employees (2 in North and 2 in South region) --> <User name='emp1' primaryObjectClass='User' asciipassword='1111'> <Attribute name='firstname' type='string' value='Employee'/> <Attribute name='fullname' type='string' value='Employee One'/> <Attribute name='lastname' type='string' value='One'/> <Attribute name='region' type='string' value='North Region'/> <MemberObjectGroups> <ObjectRef type='ObjectGroup' id='#ID#Employees' name='Employees' displayName='Employees'/> </MemberObjectGroups> </User> <User name='emp2' primaryObjectClass='User' asciipassword='1111'> <Attribute name='firstname' type='string' value='Employee'/> <Attribute name='fullname' type='string' value='Employee Two'/> <Attribute name='lastname' type='string' value='Two'/> <Attribute name='region' type='string' value='North Region'/> <MemberObjectGroups> <ObjectRef type='ObjectGroup' id='#ID#Employees' name='Employees' displayName='Employees'/> </MemberObjectGroups> </User> <User name='emp4' primaryObjectClass='User' asciipassword='1111'> <Attribute name='firstname' type='string' value='Employee'/> <Attribute name='fullname' type='string' value='Employee Four'/> <Attribute name='lastname' type='string' value='Four'/> <Attribute name='region' type='string' value='South Region'/> <MemberObjectGroups> <ObjectRef type='ObjectGroup' id='#ID#Employees' name='Employees' displayName='Employees'/> </MemberObjectGroups> </User> <User name='emp5' primaryObjectClass='User' asciipassword='1111'> <Attribute name='firstname' type='string' value='Employee'/> <Attribute name='fullname' type='string' value='Employee Five'/> <Attribute name='lastname' type='string' value='Five'/> <Attribute name='region' type='string' value='South Region'/> <MemberObjectGroups> <ObjectRef type='ObjectGroup' id='#ID#Employees' name='Employees' displayName='Employees'/> </MemberObjectGroups> </User> |
続いて、Identity Manager エンドユーザーインタフェースを使用して、North 地域のユーザー emp1 としてログインします。「委任」、「新規」の順に選択します。検索を変更します。条件として「が次の文字で始まる」を選択し、値を emp に変更して「検索」を選択します。これにより、利用可能なユーザーのリストに emp2 が返されます。
「管理する組織のユーザーフォーム」。この管理者ロールが割り当てられたユーザーが、この管理者ロールの管理する組織のメンバーであるユーザーを作成または編集する場合に使用するユーザーフォームを選択します。デフォルトで、「管理する組織のユーザーフォーム」は選択されていません。
管理者ロールを介して割り当てられたユーザーフォームは、管理者がメンバーになっている組織から継承したすべてのユーザーフォームよりも優先されます。ただし、管理者に直接割り当てられたユーザーフォームよりも優先されることはありません。