ユーザーが自己登録のリクエストを送信すると、ユーザーのホーム組織がホーム組織のポリシーによって決定されます。送信されたリクエストには、ホーム組織ポリシーによって決定された組織名が入力されています。承認者は、リクエストを承認する際に、ユーザーのホーム組織をオーバーライドできます。自己登録時にホーム組織を決定する前処理カスタム・ハンドラが定義されている場合、ホーム組織のポリシーは評価されません。ワークフロー・ポリシーが定義されている場合は、ホーム組織ポリシーに優先します。
ホーム組織ポリシーでは、ユーザー属性に基づいてルールを定義できます。ルールの戻り値は、組織名です。ルールは最初のルールから最後のルールへと、Oracle Identity System Administrationの「ホーム組織ポリシー」ページに表示される順に評価されます。ルールは、「ホーム組織ポリシー」ページで並替えができます。ルール評価は、ルールが一致して組織名が返されると停止します。残りのルールは評価されません。
この章の内容は次のとおりです。
Oracle Identity Managerのデプロイメント中に、ホーム組織決定ポリシーと呼ばれるデフォルトのホーム組織ポリシー、および単一組織へのすべてのユーザーのデフォルト設定と呼ばれるデフォルトのルールがシードされます(存在していない場合)。Oracle Identity Managerでは新しいホーム組織ポリシーを定義することはできません。ただし、デフォルトのホーム組織ポリシーの下に新しいルールを作成することはできます。
単一組織へのすべてのユーザーのデフォルト設定ルールは、すべてのユーザーによって満たされます。なんらかの理由により、デフォルト・ルールが削除されたときに、ユーザーが他のいずれかのルールを満たさない場合は、送信されたリクエスト内でこのユーザーのホーム組織が空白のままになります。承認者は、承認する前にホーム組織名を入力できます。SOAサーバーが無効な場合、承認者はホーム組織名を入力できないため、空白のホーム組織フィールドにより、リクエストが失敗します。すべてのユーザーが1つ以上のルールを満たし、ホーム組織を割り当てることができるように、ルールが定義されていることを確認します。
ホーム組織ポリシーのルールは、テキスト、数値、チェック・ボックス、および日付タイプのUDFを使用して定義できます。ただし、参照タイプのUDFを自己登録ページに追加することはできません。IF条件を作成するために使用可能な演算子のリストは、UDFの各タイプごとに異なります。
次の各ユースケースでは、ホーム組織ポリシーの機能を示します。
デフォルト・ルールは、単一組織へのすべてのユーザーのデフォルト設定です。このルールは変更できますが、削除することはできません。
定義されている条件は、次のとおりです。
IF user.User Login Equals $(user.User Login) THEN organization equals "Xellerate Users"
デフォルト条件は常にTrueに評価されます。このため、ホーム組織ポリシーに定義されている他のルールが満たされない場合、デフォルト・ルールが確実に満たされ、ホーム組織名を提供します。
たとえば、userLoginがUser1であるユーザーが自己登録リクエストを送信したときに、他のルールが定義されていないか満たされない場合、デフォルト・ルールが評価されます。また、ホーム組織は「Xellerateユーザー」に設定されます。
単純ルールは、単一のIF条件を使用し、AND/ORなどの他の演算子は使用しないで作成されるルールです。
たとえば、ExampleSimpleRuleと呼ばれるルールが次の条件で定義されたとします。
IF user.Nickname Starts with "Test" THEN organization equals "testOrg2"
この場合、user.NicknameはテキストUDF属性です。
ここで、TestUser2というニックネームを持つユーザーが自己登録リクエストを送信すると、ルール条件が満たされ、ホーム組織はtestOrg2に設定されます。
複合ルールは、複数のIF条件を使用して作成されたルールで、AND/OR演算子を使用してルールを形成します。
たとえば、ExampleComplexRuleと呼ばれるルールが次の条件で定義されたとします。
IF user.Nickname Starts with "Test" AND user.Display Name Ends with "User" THEN organization equals "testOrg3"
この場合、user.NicknameはUDF属性であり、user.Display Nameはデフォルト属性です。
ここで、TestUser3というニックネームを持ち、表示名がtestUserであるユーザーが自己登録リクエストを送信すると、ルール条件が満たされ、ホーム組織はtestOrg3に設定されます。
ユーザーが自己登録すると、ホーム組織のページに表示されるリストのトップ・ルールが最初に評価され、それに続いてその次のルールから最後のルールまでが順に評価されます。一致するルールが見つかると評価は停止されます。たとえば、図14-1に示すように、ExampleSimpleRuleの後にExampleComplexRuleが作成されます。
この場合、ユーザーが自己登録すると、ユーザー属性値がExampleComplexRuleに対して最初に評価され、一致しない場合は、ExampleSimpleRuleに対する評価に進みます。これも一致しない場合は、デフォルト・ルールである単一組織へのすべてのユーザーのデフォルト設定に対して評価されます。
ExampleSimpleRuleに対する評価が満たされた場合は、ルール内の条件に応じてユーザーのホーム組織が設定されます。
SOAがオフであるときに自己登録リクエストが送信されると、リクエストは自動承認され、リクエストのステータスは完了として表示されます。
SOAサーバーを無効にする手順は、「SOAサーバーの無効化」を参照してください。
これで、ユーザーが自己登録を送信すると、リクエストが自動承認され、ステータスが完了として表示されるようになります。ホーム組織ルールの評価は、前述の例で説明したものと同じです。
ホーム組織ポリシーのルールを作成するには:
Oracle Identity System Administrationにログインします。
左側のペインの「システム構成」で、「ホーム組織ポリシー」をクリックします。「ホーム組織ポリシー」ウィンドウが表示されます。
ツールバーの「作成」をクリックします。「ホーム組織ポリシー・ルールの追加」ページが表示されます。
「ルールの作成」セクションで、新しいルールの「名前」、「説明」、「所有者」および「ステータス」を入力します。ルールの「ステータス」は、「有効化」または「無効化」に設定できます。「ステータス」が「無効化」,に設定されている場合、ユーザーが自己登録すると、評価時にこのルールはスキップされます。
「条件ビルダー」セクションでルール条件を設定します。たとえば、表示名に「Test」が含まれ、姓に「User」が含まれる場合、組織は「Vision North America」になります。この例では、属性は「Display name」、条件は「contains」、および値は「test」です。
ルールは、条件ビルダーまたはスクリプトを使用して設定できます。
条件ビルダーを使用してルールを設定するには、次を実行します。
ルールのIF部分で属性を入力するには、「条件ビルダー」アイコンをクリックします。条件ビルダーのポップアップ画面が表示されます。
例として、図14-2に、ルールを設定するために「条件ビルダー」オプションが選択された「ルールの作成」ページを示します。
属性リストとしてユーザー属性を選択すると、ユーザーに関連付けられたUDFおよびデフォルト属性のリストが表示されます。
リストから特定の属性を検索するか、テキスト・ボックスに属性の名前を入力し、「検索」アイコンをクリックします。リストから属性を選択し、「OK」をクリックします。
条件ドロップダウンから条件を選択します。使用可能な条件は、「次と等しい」、「次と等しくない」、「次を含む」、「次を含まない」、「次で始まる」、「次で始まらない」、「次で終わる」、「次で終わらない」です。
注意: このリストは、属性のタイプによって異なります。前述のリストはテキスト・タイプ用です。数値型属性の場合、値は「次より大きい」や「次より小さい」などになります。 |
値を入力するには、テキスト・ボックスに値を入力して「OK」をクリックするか、「値」アイコンをクリックして条件ビルダーのポップアップ画面を開きます。
条件ビルダーでは、「値」と「式」のどちらかを選択して入力できます。
「値」を選択すると、値のリストが表示されます。必要な値を選択するか、テキスト・ボックスに値を入力して「OK」をクリックします。
「式」を選択すると、条件のリストが表示されます。必要な値を選択し、「OK」をクリックします。
ルールの「THEN」部分を入力するには、組織アイコンをクリックします。条件ビルダーのポップアップ画面が表示されます。組織を選択し、「OK」をクリックします。
デフォルトでは、条件は「次と等しい」に設定されており、変更できません。
組織を選択するには、組織名アイコンをクリックします。条件ビルダーのポップアップ画面が表示されます。リストから組織名を選択し、「OK」をクリックします。
スクリプトを使用できるgroovy式のサポートは、デフォルトで提供されています。
スクリプトを使用してルールを設定するには、次を実行します。
「スクリプト」が選択されている場合、既存のスクリプトが表示されます。たとえば、ユーザーの部門番号が構成されている場合は、組織の値を部門番号として設定します。部門番号がOracle、Oracle-HQまたはOracle-IDCの場合、組織の値は部門番号に設定されます。Oracle、Oracle-IDC、Oracle-HQという名前の組織がシステムに存在することを確認してください。
String deptNum= vo.getString("user.Department Number"); if(deptNum) { ValueObject rvo = new ValueObject(); rvo.put("organization",deptNum); return rvo; }
例として、図14-3に、ルールを設定するために「スクリプト」オプションが選択された「ルールの作成」ページを示します。
検索する単語を入力し、「検索」アイコンをクリックします。「検索と置換」パネルが表示されます。
特定の行にジャンプするには、行番号を入力し、「検索」アイコンをクリックします。
複合ルールを設定するには、「条件の追加」をクリックします。「AND」または「OR」条件を選択し、手順5の指示に従って追加ルールを設定します。
「作成」をクリックします。
定義されているすべてのルールが、「ホーム組織ポリシー」ページに表示されます。定義されたルールは、リスト内で上下に移動してその順序を変更でき、これを行うには、ルールの「順序」列の上矢印または下矢印をクリックします。
ホーム組織ポリシーのルールを変更するには:
Oracle Identity System Administrationにログインします。
左側のペインの「システム構成」で、「ホーム組織ポリシー」をクリックします。「ホーム組織ポリシー」ウィンドウが表示されます。
リストから必要なホーム組織ポリシーを選択し、「開く」をクリックします。
必要な詳細を変更し、「更新」をクリックします。
ルールに対して行った変更を更新しない場合は、「元に戻す」をクリックします。ルールは元のルールにリストアされます。
ホーム組織ポリシーのルールを削除するには:
Oracle Identity System Administrationにログインします。
左側のペインの「システム構成」で、「ホーム組織ポリシー」をクリックします。「ホーム組織ポリシー」ウィンドウが表示されます。
削除する必要があるホーム組織ポリシーをリストから選択し、「削除」をクリックします。