この製品のマニュアルセットは、偏向のない言語を使用するように配慮されています。このマニュアルセットでの偏向のない言語とは、年齢、障害、性別、人種的アイデンティティ、民族的アイデンティティ、性的指向、社会経済的地位、およびインターセクショナリティに基づく差別を意味しない言語として定義されています。製品ソフトウェアのユーザーインターフェイスにハードコードされている言語、RFP のドキュメントに基づいて使用されている言語、または参照されているサードパーティ製品で使用されている言語によりドキュメントに例外が存在する場合があります。シスコのインクルーシブランゲージに対する取り組みの詳細は、こちらをご覧ください。
このドキュメントは、米国シスコ発行ドキュメントの参考和訳です。リンク情報につきましては、日本語版掲載時点で、英語版にアップデートがあり、リンク先のページが移動/変更されている場合がありますことをご了承ください。あくまでも参考和訳となりますので、正式な内容については米国サイトのドキュメントを参照ください。
• 「概要」
Cisco Service Portal(Service Portal)ディレクトリ統合は、一元化されたユーザ認証およびエンタープライズ ディレクトリとの同期を実装することによって、セキュリティ管理を簡略化し、ユーザの利便性と生産性を向上します。
Service Portal では、カスタマーは(通常は LDAP プロトコルを使用して)外部ディレクトリと統合し、ユーザ情報を同期することができます。この同期は、ユーザが Order-on-behalf(OOB)で選択されたとき、または Person Lookup 時に起動されます。
シングル サインオン(SSO)の統合により、一元管理されたユーザ認証が可能になり、個別のログイン メカニズムが不要になります。SSO イベントを有効にすると、Service Portal が統合されているエンタープライズ ポータルにすでにログインしているユーザは、ログインし直す必要がありません。ユーザ認証データは、アプリケーション データベースに格納されます。Service Portal は SSO ツールを利用して Demand Center および Request Center のすべての URL を保護し、認証を実行します。Service Portal は、SSO ツールが、成功したそれぞれの認証に対する個人の認識情報を、HTTP ヘッダーで Service Portal URL に提供することを前提としています。認証されると、それらの情報をアプリケーション データベースと同期することができます。
SSO が有効でない場合は、Service Portal のログイン画面がすべてのユーザに表示され、ユーザは正しいユーザ名とパスワードの組み合わせを入力することができます。デフォルトでは、これらのクレデンシャルは内部データベースで認証されます。または、外部システム(通常は LDAP ディレクトリ)で認証するよう、Directory Integration を設定することもできます。Service Portal にアクセスするすべてのユーザは、認証が正常に行われるように、このソース内に存在している必要があります。
Directory Integration Framework は、頻繁に導入される SSO およびディレクトリ サーバ製品に対して、Administration モジュールで使用できる設定オプションを通じて上記の機能を提供します。フレームワークには、定義済みの設定機能を補完可能なアプリケーション プログラミング インターフェイス(API)も含まれています。プログラマは API を使用して追加の SSO ポータルやディレクトリ サーバにアクセスできるだけでなく、Service Portal と外部ディレクトリの間でユーザ情報が同期されるよう、デフォルトの動作を変更または補完できます。
• Service Portal インストールが作動していること。
• ディレクトリ サーバがインストールされ、ディレクトリに会社データが入力されていること。潜在的なすべてのユーザに対するディレクトリ エントリでは、「マッピングの定義」 で説明されているように、統合処理で必要なフィールドにマップされるすべての属性についてヌル以外の値が含まれている必要があります。
• シングル サインオン(SSO)を使用する場合は、認証および承認を行う SSO システムが Service Portal にアクセスします。
• ユーザは、「グローバル設定の管理」機能が含まれたロールでログインします。この機能は、「Site Administrator」ロールに自動的に含まれ、「admin」ユーザに割り当てられます。ただし、必要に応じて、Administration モジュールの Roles オプションを使用して他のロールまたはユーザに割り当てることもできます。
この章では、Administration モジュールを使用して Service Portal に対してディレクトリ統合を設定する方法について説明します。また、有効な統合オプションのカスタマイズで使用できる公開 API とインターフェイスのセット、カスタム コードをコンパイルおよび導入するためのベスト プラクティス、Administration モジュールを使用してカスタム コードを設定するための手順についても説明します。
ディレクトリ統合を設定するには、SSO の現在の実装(使用している場合)および社内のディレクトリ サーバに関する有用な情報を入手し、これらのシステムを Service Portal に統合するための要件を文書化する必要があります。ここでは、この情報を収集するためのワークシートをいくつか示します。
これらのワークシートは、ディレクトリ/SSO 統合を設定したり、統合を実装する前に解決すべき問題を特定したりするのに必要な情報を収集するうえで役に立ちます。また、ディレクトリ統合で必要な開発およびテストの時間を見積もる場合にも有用です。
Service Portal は、アクセスされる個人データおよび組織データを格納する各ディレクトリに対して「データソース」を定義します。データソースの定義には、外部ディレクトリへの接続で必要なすべての情報、およびそのディレクトリからの抽出情報が含まれています。
各外部ディレクトリに対して 1 つのデータソースを定義する必要があります。たとえば、開発と実稼働で別のディレクトリを使用することができます。また、Service Portal は LDAP ディレクトリ照会をサポートしており、データソースは参照チェーン内の各ディレクトリに対して定義する必要があります。
|
|
|
現時点でサポートされているプロトコルは LDAP だけです。他のプロトコルを使用してディレクトリ情報を格納する場合は、この情報にアクセスするためのカスタム コードを作成する必要があります。 |
||
使用するディレクトリ サーバ製品を選択します。現時点でサーバがサポートされていない場合は、サーバにアクセスするためのカスタム コードを作成し、ディレクトリ情報を抽出する必要があります。 |
||
Simple はプレーン テキストのユーザとパスワードを表します。 SASL (Simple Authentication and Security Layer)も使用できますが、SASL は Sun ONE Directory Server でのみ機能します。 |
||
バインドの識別名フィールド。BindDN は、Service Portal がディレクトリ操作を実行するときに LDAP サーバに接続するために使用されます。 このデータソースを外部認証の手順で使用する場合は、[Options] 領域に EUA Bind DN を指定してこの値を変更します。詳細については、「外部ユーザ認証(EUA)操作」を参照してください。 |
||
認証で Simple または SASL を選択した場合に必要です。Bind DN に指定されたユーザのパスワードです。アカウントでパスワード エージングを使用する場合は、このパスワードを定期的に更新する必要があります。 |
||
ディレクトリ内の個人の検索を開始するディレクトリ。社内ディレクトリには多くのブランチが含まれることがあるため、ユーザ データに対してベース DN を指定することによって、ディレクトリ検索が最適化されます。 |
||
このフィルタは、使用する他の検索フィルタに追加されます。このフィルタを使用して、検索結果を効果的に変更できます。フィルタ式はカッコで囲む必要があります。たとえば、次のフィルタがあるとします。 |
||
1 つ以上のデータソースを照会用として追加できます。データソース検索で結果が返ってこない場合、システムは照会用のデータソースも検索します。照会は、検索でのみサポートされており、バインディングではサポートされていません。 循環照会は設定できません。循環照会は、あるデータソースが照会用として別のデータソースを持っており、同時にそのデータソースが、照会用として元のデータソースを使用しているものです。たとえば、データソース A が照会用としてデータソース B を持っており、データソース B が照会用としてデータソース A を持っている場合です。 |
「マッピング」は、外部ディレクトリから Service Portal へデータをどのように転送するか、という指示を与えるルール セットです。これにより、ディレクトリ内のソース属性と、Service Portal データベース内のターゲット フィールド間がマッピングされます。Service Portal データベースがディレクトリと同期されるとき、これらのルールを使用して、ディレクトリのデータを、指定されたターゲット フィールドへ転送します。
同じマッピングを複数のディレクトリ(データソース)に適用できます。
マッピングには、ユーザ/個人のプロファイルと、関連するすべてのエンティティ(住所、連絡先、場所、1 つ以上のグループ関係、1 つ以上の組織単位(OU)関係、1 つ以上の RBAC(ロールベース アクセス コントロール)ロール関係など)が含まれます。
個人のプロファイルには、7 個の必須フィールドが含まれており、これらのフィールドは以下のマッピング ワークシートの「必須」セクションにリストされています。これらのどのフィールドについても値を提供していないディレクトリ レコードはインポートできません。その他のフィールドで、個人プロファイルの一部になっているものもマップできます。これらのフィールドの概要については、個人の情報を保守するための Organization Designer で使用する画面で確認してください。
個人プロファイルの大半のフィールドはアプリケーション プロセスで使用されます。マッピングでは、マップされる属性が、フィールドに対して適切なソース値を提供していることを確認する必要があります。つまりこれらのフィールドに対して、フィールド名によって示されるよりも多くの情報、またはフィールド名に一致しない情報を指定しないようにします。
Service Portal には、標準の個人データを拡張するフィールドも含まれています。これらのフィールドは、以下の表では「拡張」として記載されており、Organization Designer の Person 情報の [Extensions] ページに表示されます。頻繁に必要とされるいくつかの拡張フィールドには、意味のある名前(Company Code、Division など)が割り当てられていますが、他のフィールドには Custom 1 から Custom 10 までの名前が付けられています。これは自由に使用することを意図しているもので、事前に考えられている意味はありません。LDAP ディレクトリに追加の個人情報があり、Request Center で公開する必要がある場合は、この情報が含まれている属性を、個人の拡張フィールドの 1 つにマップします。
以下のワークシートの「Directory Attribute」カラムは、個人プロファイルのすべてのフィールドについて値を挿入する必要があります。このフィールドには、ディレクトリがデータを提供します。属性には次のいずれかを指定できます。
• ディレクトリの属性名。複数の属性を(オプションのリテラルを付けて)連結し、フィールドの値を構成する場合は複数の属性名。
• 「カスタム マッピング」、およびそれに続く番号または説明。すべてのカスタム マッピングは、「カスタム マッピング」に詳細を記述するか、「Comments」カラムに簡単に説明を記載する必要があります。カスタム マッピングは、正規表現の結果を属性に割り当てることも、カスタム Java コードのモジュールを介して実装することもできます。これらのマッピングの実装の詳細は、「マッピングの設定」に示してあります。
|
|
マップされる LDAP 属性の戻り値の型は、long にする必要があります。Service Portal は他の形式をサポートしていません。 |
|
マップされる LDAP 属性の戻り値の型は、long にする必要があります。Service Portal は他の形式をサポートしていません。 |
|
マップされる属性は、次の形式のいずれかの値を返す必要があります。 2008 年 3 月以降、一般的に使用されていた 3 文字のタイム ゾーン指定(東部標準時は「EST」など)は使用されなくなりました。上記の形式についてサポートされている値のリストは、「サポートされるタイム ゾーン」を参照してください。戻り値が、正しい形式のどれにも一致しない場合、Service Portal はデフォルトのタイム ゾーンとして PST を使用します。 |
|
language は 2 文字の言語コードで、country は 2 文字の国コードです。 |
|
このフィールドはマネージャの ID を表します。詳細については、「Import Manager 操作」を参照してください。 |
|
数値を返す必要があります。このフィールドが Import Manager イベントで使用された場合、階層に従って Management Level が大きくなるようにしてください。たとえば、Junior Engineer と Senior Engineer の 2 つの指定があった場合、Junior Engineer に対して返される Management Level は、Senior Engineer の Management Level よりも小さくなる必要があります。 |
|
このマッピングを使用して、個人を 1 つ以上の組織単位に関連付けます。マッピングでは、複数の値が返されることがあります。このフィールドに対して、Service Portal は複数値の LDAP 属性で返されるすべての値を使用します。このフィールドの入力は、次の形式のいずれかにする必要があります。 • Directory Integration API ドキュメントの定義に従って複数値を返す Java クラスの名前。 • 「::」で区切った 1 つ以上の簡単なマッピング。 • 次のように、「::」で区切った 1 つ以上の式のマッピング |
|
Organizational Unit List と同様です。返されるロールは、システム定義またはユーザ定義のいずれかです。 システム定義ロールの場合、名前は言語が米国英語のときにブラウザに表示されるものと同一にする必要があります。他の言語はサポートされていません。たとば、ユーザに「My Services Executive」ロールを関連付けるには、このロールが返される必要があります。 |
以下のワークシートを使用して、カスタム マッピングの要件を文書化できます。
|
|
|
統合イベントは Service Portal と外部ディレクトリや SSO プログラムとの間のインターフェイスです。外部プログラムまたはディレクトリにアクセスする Service Portal を使用しているときだけのものです。これらのイベントは、順次実行される複数の操作によって構成されています。
Service Portal は、次の 4 つのディレクトリ統合イベントをサポートしています。
• 「 Login 」イベントは、ユーザのクレデンシャルが検証され、ユーザが Service Portal に接続したときに発生します。このイベントは、ユーザが最初に Service Portal セッションを開始したときに発生します。また、セッションがタイムアウトし(管理者が指定したタイムアウト期間が経過)、再接続が必要な場合にも発生します。
• 「 Person Lookup 」イベントは、ユーザ情報が取得されるたびに発生します。実際には、次の 3 つのタイプの Person Lookup イベントがあります。
– Person Lookup for Order on Behalf :あるユーザが他の個人の代わりにサービスを要求し、そのサービスのカスタマーとなっている個人を選択する必要があります。
– Person Lookup for Service Form :サービス フォームに [Person] フィールドが含まれ、これによってユーザが他の個人をサービス データの一部として指定できます。
– Person Lookup for Authorization Delegate :サービスの確認または承認を行うユーザが、他の個人を一時的な代理承認者として指定するために、自身のプロファイルの変更を要求します。
さまざまな種類の操作を実行するよう、イベントを設定できます。操作は、各イベントに対して複数の手順で指定します。これにより、各操作が呼び出される順序が決まります。
• Single Sign-On (SSO; シングル サインオン)は常に Login イベントの最初の手順です。SSO 操作は、ユーザのログイン名を識別します。
• External Authentication は SSO 操作の後に発生するか、または SSO を使用しない場合は、デフォルトの [Login] 画面の後に発生します。外部認証はユーザのログイン名とパスワードを使用して、外部データソースに対してユーザを認証します。
• Person Search は、ユーザがデータソース上で検索を呼び出したときにトリガーされます。Person Search はユーザの First Name と Last Name を使用して、一致した項目のリストを出力します。
• Import Person は、外部認証の後、または SSO の後に発生するか、[Person Search] ダイアログで個人が選択された後で発生します。Import Person は、検索されている個人、またはログインしている個人のログイン名を使用し、データソースに問い合わせて、個人をデータベースにインポートします。
• Import Manager は、個人のインポート後のみで発生します。Import Manager 操作は、インポートされた個人情報を使用して、このユーザのマネージャをインポートします。
各操作は、カスタム コード インターフェイスの実装によってカスタマイズできます。
ディレクトリ統合のログイン イベントが設定されていない場合は、デフォルトでログイン画面が表示され、アプリケーション データベースに対して入力されたクレデンシャル(ユーザ名とパスワード)が検証されます。
ディレクトリ統合イベントが有効になっている場合は、最初の手順として、次のいずれかの操作を使用して Login イベントを設定できます。
• シングル サインオン:すべてのユーザが SSO ベンダーを使用して事前に認証されている社内環境では、要求ヘッダーまたは CGI ヘッダーからユーザのログイン ID を自動的に抽出し、アプリケーションのログイン画面を表示せずに透過なログインを可能にします。
• 外部ユーザ認証:アプリケーションのログイン画面を表示し、指定した外部ディレクトリに対して入力されたクレデンシャルを検証します。外部ユーザ認証は、SSO 操作の後にも発生することがあります。
ユーザのクレデンシャルが検証されると、Login イベントには、外部データベースと Service Portal 間でユーザ データを同期するために、次の操作が含まれることがあります。
• 「Import Person」操作がその次の手順です。この操作は、選択された認証済みの個人プロファイルを Service Portal にインポートし、データと同期します。
• 「Import Manager」の操作は、「Import Person」手順の次の操作です。この操作は、外部ディレクトリから、選択された人のマネージャに関する情報を取得し、その情報を使用して Service Portal データベースを更新します。
シングル サインオン(SSO)ソリューションとの統合では、次の 2 つのメカニズムやプロトコルのいずれかを使用できます。
1. Active Directory Services(ADS)/NT LAN Manager(NTLM)ベースの認証済みユーザ
– Service Portal へのログインに、サードパーティの IM/AM/SSO 製品は必要ありません。
– ログインしたユーザの、POSIX 準拠 OS のクレデンシャルが、ブラウザによって Service Portal に返されます。
– これは、SSO の CGI ヘッダーによる統合とも呼ばれます。
– http プロトコルで要求ヘッダーを使用して Service Portal にログインするために、サードパーティの IM/AM/SSO 製品が必要です。
Portlet と Directory Integration の両方で SSO の使用を計画しているカスタマーについては、HTTP ヘッダー SSO のみがサポートされます。Directory Integration フレームワークのカスタム SSO プラグインはサポートされていません。
JBOS インストール環境で Active Directory を使用した IWA でシングル サインオンを有効にするには、tomcat 認証をオフにしておく必要があります。
< Request Center installation directory >¥jboss-4.2.3.GA¥server¥RequestCenter¥deploy¥jboss-web.deployer¥server¥ jboss-service.xml
ステップ 2 次のセクションを修正して、tomcatAuthentication が false になるようにします。
ステップ 3 次のセクションを修正して、tomcatAuthentication が false になるようにします。
シングル サインオン情報は http ヘッダーに格納されます。http ヘッダーのサイズが非常に大きい場合は、JBoss の Tomcat サーバの「maximum packet size」パラメータの値を大きくする必要があります。Tomcat のデフォルトの「maximum packet size」は 8192 バイトです。この数値は、以下に示す手順によって大きくできます。最大値は 65536 バイトです。
ステップ 1 JBoss マシンで、「<S ervice Portal_Install_Di r>¥jboss-4.2.3.GA¥isapi¥conf」ディレクトリにある「 worker.properties 」ファイルを探します。
ステップ 2 テキスト エディタを使用して、worker.properties ファイルの「Define Node1 worker」というセクションに次のパラメータを追加します。
ここで、 <number> は次のように 8192 よりも大きい整数値にします。
ステップ 3 「< Service Portal_Install_Dir >¥jboss-4.2.3.GA¥server¥RequestCenter¥deploy¥jboss-web.deployer」ディレクトリにある、「 server.xml 」ファイルを探します。
ステップ 4 テキスト エディタを使用して server.xml ファイルを次のように修正します。
• 文字列 Connector port="8999" を検索します。
• パラメータ packetSize="<number>" を追加します。 <number> は上記のステップ 2 の値と同じものとします。
ステップ 5 Request Center サービス、および IIS Web サーバを再起動します。
一部のユーザでシングル サインオンをバイパスして Service Portal に直接ログインできるようにすることが、必要になることがあります。この機能は通常、次のユーザにとって必要です。
• シングル サインオンでの問題を調査する必要があるシステム管理者
• サービス設計およびタスク計画を検証するために、複数ユーザのパフォーマンスをエミュレートする必要があるテスト担当者
Service Portal には、ユーザがログイン画面にアクセスし、ユーザ名とパスワードを入力できるようなメカニズムが用意されています。newscale.properties ファイル(RequestCenter.ear にあります)では「BackDoorURLParam」の値が指定されます。たとえば、次のようになります。
ログイン画面から Service Portal にアクセスするために使用する URL には、パラメータを含める必要があります。たとえば backDoorURLParam の上記の値について、サンプル URL は次のようになります。
会社のガイドラインに従って BackDoorURLParam の値の期限切れについてポリシーを設定したり、Service Portal への管理アクセスの制御についてポリシーを設定したりすることは、管理者が行います。管理 URL でアクセスできるのは、対応する管理者設定によって「Site Administrator」ロールを付与されたユーザだけです。
管理者は、ユーザが URL に直接アクセス可能なことも確認する必要があります。以前は、Service Portal アプリケーションへのアクセスが、Web サーバまたはネットワーク設定パラメータを介した SSO ソフトウェアによるアクセスに制限されていました。
外部認証を使用して、すべての Service Portal ユーザを社内ディレクトリで認証します。この方法では、ユーザ パスワードの同期を気にする必要がありません。
外部ユーザ認証は、ログインの試行後に、設定済みのシングル サインオン操作またはアプリケーションのログイン画面から行う必要があります。前の操作で取得した LoginId は EUA 操作で使用できます。ただし、このユーザを外部ディレクトリで検証する場合には、BindDN を見つけられるように、追加情報が必要になります。
EUABindDN 設定により、アプリケーションで、サインオンしようとしているユーザのバインド DN を自動的に推定できます。
Person Lookup のすべてのイベント(Order on Behalf、Service Form、Authorization Delegate)は同じ動作および設定オプションを使用します。
ディレクトリ統合イベントが有効になっていない場合、[Person Search] ウィンドウでは、Service Portal データベースの個人情報が検索されます。人が選択されると、その情報が使用されます。個人情報は更新されません。
ディレクトリ統合イベントが有効になっている場合、Person Lookup イベントは次の操作によって設定できます。
• 「Person Search」操作が最初の手順になっている必要があります。この操作は外部ディレクトリから個人情報を取得し、その情報を [Person Search] ウィンドウに表示します。人を選択すると、イベントに対して指定されているマッピングに従って、その人についての追加情報が取得され、コール側のコンテンツに提供されます。
• 「Import Person」操作がその次の手順です。この操作は、外部ディレクトリから選択した人のプロファイルを Service Portal にインポートし、データと同期します。
• 「Import Manager」の操作は、「Import Person」手順の次の操作です。この操作は、外部ディレクトリから、選択された人のマネージャに関する情報を取得し、その情報を使用して Service Portal データベースを更新します。
Person Search 操作の設定により、検索条件を満たす人を表示するウィンドウの外観および動作が決まります。
個人を Service Portal にインポートするためには、すべての必須フィールドが正しい属性マッピングを持ち、空白以外の値を返す必要があります。必須の値が 1 つでも指定されていない場合は、デフォルトで、検索結果から対象となる人が除外されます。代替の方法は、以下に示すように、対象となる人を検索結果に含めるが、情報が不完全であることをフラグで示すことです。
Person Search 操作を設定する場合は、次のようにします。
|
|
|
個人の検索を設定およびテストする場合には、ワイルドカード文字としてアスタリスク(*)の使用に注意が必要があります。
ユーザには表示されませんが、システムは検索文字列の末尾に必ず * を付加します。このため、[Last Name] フィールドに john と入力して [Search] をクリックすると、ディレクトリ内で姓が john で始まるすべての人(「John」、「Johnson」、「Johnston」など)が返されます。
[Search Person] ダイアログの検索文字列に、明示的に * の文字を入力することもできます。次に、ワイルドカード検索の使用例をいくつか示します。
• [Last Name] フィールドに「*」を入力して [Search] をクリックします。ディレクトリ内のすべての個人が返されます。
• [Last Name] フィールドに john* と入力して [Search] をクリックします。これは実質的に、[Last Name] フィールドに john とだけ入力したことと同じです。ディレクトリ内で、姓が「john」で始まるすべての個人が返されます。
• [Last Name] フィールドに *john と入力して [Search] をクリックします。姓に「john」という語が含まれているすべての個人(「John」、「McJohn」、「Johnson」など)が返されます。
• [Last Name] フィールドに *john*son と入力して [Search] をクリックします。姓に「john」という語が含まれ、それに続いて(直後でなくてもかまいません)「son」という語が含まれているすべての個人が返されます。具体的には、「Johnson」、「Mcjohnson」、「Upjohningson」などです。
(注) 検索文字列内では、* は常にワイルドカード文字として扱われます。このため、ユーザはディレクトリ内で * 文字が含まれている値を検索できません。その他のすべての特殊文字は、検索文字列で使用できます。
デフォルトでは、Select Person Popup の [Search Results] ウィンドウに個人の名と、その後に姓が表示されます。Administration モジュールで使用できる Setting for the Person Popup を変更して、ディスプレイにその他のフィールドを追加することもできます。
図 1-3 [Search Results] ウィンドウの設定
Import Person の設定は、アプリケーション内の個人情報が、(Person Search イベントで Import Person が使用された場合に)選択された個人に関する現在の情報で更新されるか、または(Login イベントで Import Person が使用された場合に)ログインしている個人に関する現在の情報で更新されるかを制御します。
Service Portal では、承認と確認を動的に割り当てることができます。たとえば、要求のドル値が指定されたしきい値を超えている場合、特定の部署の部長による承認が必要な場合があります。別の要求では、要求者の直属の上司による確認が必要な場合があります。
このようなビジネス ルールを実装するには、サービスを要求できる従業員のマネージャも、Service Portal データベース内に登録されている必要があります。Import Manager 操作は、従業員のデータとあわせてマネージャ(上司)のデータをインポートすることで、この要件をサポートします。
Import Manager 操作の動作を管理するには、次の方法があります。
• 従業員のディレクトリ エントリで、その従業員のマネージャを指定する属性を特定します。
• すべての従業員について、指定された属性に、マネージャを一意に特定する値が挿入されていることを確認します。これは通常、ログイン ID または電子メール アドレスにします。
• (Optional Person Data Mappings にリストされている)[Supervisor] フィールドのマッピングで、マネージャの情報を保持している従業員データの属性を指定します。次のサンプルでは、managerEmail 属性を使用しています。
• Import Manager 設定では、「Key Field for Manager ID」として、マネージャのディレクトリ レコードのフィールドを指定します。これらの値は、元の従業員に対して指定されている Supervisor 属性に対応しています。
考えられるシナリオとして、各個人のディレクトリ レコードに 1 つの属性が存在し、それが個人の上司を一意に特定する、というものがあります。たとえば、従業員のディレクトリ レコードの属性 manager_email にマネージャの電子メール ID が含まれていると仮定します。マネージャの他の情報は指定しません。
別のシナリオとして、ディレクトリ レコードに、従業員の上司の DN そのものである属性が含まれている、というものがあります。この属性の名前が manager とします。
|
|
||
|
|
直属の上司の承認を得なければならない要求の場合、ツリーの 1 つ上のレベルに上がる、「相対的な」検索が必要です。
または、特定の要求で部長の承認が必要、といった場合には、「絶対的な」検索が必要です。現在の個人の地位が「部長」になるまで、人(マネージャ)がインポートされます。Samantha Edgar の場合には、彼女の直属の上司 Harris Smith と、その人の上司で部長の Elizabeth Getty という、さらに 2 人が必要です。John Cullen の場合は、インポートが必要なのは 1 人です。
絶対検索(対象のレベル以上の権限を持つすべてのマネージャを、特定の地位の人が見つかるまでインポートする方法)を使用している場合は、地位に対して対応する数値を割り当てる必要があります。
• 社内階層を分析し、すべての管理職に対応する数値を割り当てます。
• 従業員のディレクトリ エントリで、その従業員の管理レベルを指定する属性を特定します。たとえば、「paygrade」という属性を使用できます。
• すべての従業員について、指定された属性に値が入っていることを確認します。
• (Optional Person Data Mappings にリストされている)[Management Lefel] フィールドのマッピングで、この情報を保持する属性を指定します。
• Import Manager の設定で、最も高いレベルのマネージャを「Maximum Level」としてインポートするよう入力します。
既知の値よりも上位の上司と同期しない場合は、検索の終わりを設定することができます。#value1#, #value2# などの形式で複数の値を指定できます。
たとえば、uid が「scarter」の人よりも上位の上司はすべてインポートしないとします。その場合は、その人の Supervisor 属性がその人の電子メール(scarter@email.com)にマッピングされます。このケースでは、Search Terminator を #scarter@email.com# に設定します。ディレクトリ統合は、scarter@email.com で上司としてレコードが見つかるとすぐに、上司の同期を停止します。
制約条件が Maximum Level または Search Terminator のいずれかを満たすとすぐに、上司の同期は停止します。
カスタム コード操作を使用して、アプリケーションでサポートされていないルーチンを呼び出します。カスタム コード操作は、Service Portal の操作を置き換えたり、補完したりできます。
|
|
|
Java クラスを使用してマッピングの名前を指定します。Java クラスの詳細については、このマニュアルの「ディレクトリ統合と API」の章を参照してください。 |
ディレクトリ統合の設定では、Administration モジュールの Directories オプションを使用します。基本的なプロセスは次のとおりです。
• ディレクトリ統合を有効にします 。[Administration module's Settings] タブで [Directory Integration] オプション ボタンをクリックして、ディレクトリ統合を有効にします。
• データソース情報を設定します 。[Administration module's Directories] タブの [Datasources] 領域を使用して、ディレクトリ サーバに接続するデータソースを設定します。データソース名、説明、プロトコル、サーバ製品、認証方法などの情報が必要です。
• マッピングを設定します 。[Administration module's Directories] タブの [Mappings] 領域を使用して、アプリケーション データをディレクトリ サーバ データにマップします。マッピングは、ユーザ/個人のプロファイル全体、およびそれに関連するすべてのエンティティ(住所、連絡先、場所、1 つ以上のグループ関係、1 つ以上の組織単位(OU)関係、1 つ以上のロール関係)を更新します。
• イベントを設定します 。[Administration module's Directories] タブの [Events] 領域を使用して、ディレクトリ統合の動作を設定します。Single Sign-On(SSO)、End User Authentication(EUA)、Import Person、Import Manager、Person Search などの操作を含めるよう、Login イベントと Person Lookup イベントを設定できます。
• 必要な場合は、クライアントのカスタマイズ(ディレクトリ Java クラス属性のマッピング、ディレクトリ サーバ API、個人のインポート、および関連エンティティ)に対して カスタム コード インターフェイスを設定します 。
ステップ 1 管理権限を持つアカウントを使用してログインし、[Administration] モジュールを選択します。
ステップ 3 [Directory Integration] の横にある [On] オプション ボタンを選択します。
ステップ 4 [Customizations] 画面の下部にある [Update] をクリックします。
これでディレクトリ統合が有効になりました(図 1-4 を参照してください)。
|
|
||
|
Administration モジュールの [Directories] タブを使用して、ディレクトリ統合の多数の設定を行います。
図 1-5 [Directory Integration] 領域
|
|
|
ステップ 1 管理権限を持つアカウントを使用してログインします。
ステップ 2 ドロップダウン メニューから [Administration] を選択します。
ステップ 3 [Directories] タブを選択します。
[Directory Integration] ページが表示されます。これらの設定は、ディレクトリ統合が有効になったときに反映されます。
以降の項では、データソース特有の情報設定について解説します。タスクには次のものがあります。
• データソースの追加または編集 :まだデータソースがない新しいインストールに対して、データソースを追加する必要があります。データソースが存在する場合は、それを編集できます。
• SSL 接続に対するサーバ証明書の追加 :接続メカニズムとして SSL を選択した場合のみ、これを行う必要があります。
少なくとも 1 つのデータソースを定義する必要があります。新しいデータソースを追加するには、次の手順に従います。
|
|
||
|
|
ステップ 1 [Administration] モジュールを選択して [Directories] タブをクリックし、[Directory Integration] ページに移動します。
ステップ 2 まだ選択していない場合は、ページ ナビゲータで [Datasources] オプションをクリックします。
ステップ 3 [Add] をクリックします。新しいデータソースを追加する代わりに既存のデータソースを編集するには、リスト内で対象のデータソースの横にある [Edit] ボタンをクリックします。
[Datasource Configuration] 領域が展開されます。
ステップ 4 [Datasource Name]、[Datasource Description]、および必要な設定を入力します。隣接する領域のすべての設定にアクセスするには、 ボタンをクリックします。これらの設定の詳細については、データソースのワークシート、または以降の項を参照してください。
データソースへの接続で使用する接続プロトコル、およびユーザのクレデンシャルを指定します。
接続メカニズムとして SSL を選択した場合は、ディレクトリ統合システムに対して証明書を指定する必要があります。
|
|
||
|
|
ステップ 1 Administration モジュールの [Directories] タブをクリックして、[Directory Integration] ページに移動します。
ステップ 2 まだ選択していない場合は、ページ ナビゲータで [Datasources] オプションをクリックします。
ステップ 3 証明書を追加するデータソースの横にある [Edit] ボタンをクリックします。
ステップ 4 [Add Certificate] をクリックします。
ステップ 5 証明書に名前を付けます。証明書のエイリアス名には、スペースや特殊文字を使用しないでください。
ステップ 6 [Certificate Type] ドロップダウン メニューから証明書のタイプを選択します。
ステップ 7 証明書の値(VeriSign などのベンダーから入手したもの)を、証明書のフィールドに貼り付けます。
複数のデータソースを設定した場合は、選択したデータソースに対して、照会用システムとしてデータソースを指定することができます。この方法では、選択されたデータソースに対してシステムが検索を実行するたびに、照会用のすべてのデータソースも検索されます。
照会用のデータソースは、一致するものが見つかるまで、指定された順序で検索されます。検索条件で 1 つ以上のレコードが返されたときに、一致が見つかったことになります。
照会用のデータソースは通常、ディレクトリ情報が複数のディレクトリ間に分散している場合に使用します。たとえば、企業の複数の事業部で、それぞれ独自のディレクトリを保持することができます。
|
|
||
|
ステップ 1 Administration モジュールの [Directory Integration] ページに移動します。
ステップ 2 まだ選択していない場合は、ページ ナビゲータで [Datasources] オプションをクリックします。
ステップ 3 照会用データソースを設定するデータソースの横にある [Edit] ボタンをクリックします。
ステップ 4 [Add Referral] をクリックします。
ステップ 5 [Referral Datasource] 領域が表示されます。[Datasource Name] ドロップダウン メニューからデータソースを選択し、[Mapping Name] ドロップダウン メニューからマッピング名を選択します。
必要な設定手順をすべて完了すると、次はディレクトリ統合の接続をテストできます。
|
|
ステップ 1 Administration モジュールの [Directory Integration] ページに移動します。
ステップ 2 まだ選択していない場合は、ページ ナビゲータで [Datasources] オプションをクリックします。
ステップ 3 データソース名の左にあるチェックボックスをクリックして、テストするデータソースを選択します。
ステップ 4 [Test Connection] をクリックします。
接続が成功した場合は [Test Status] カラムに OK と表示され、接続が失敗した場合は が表示されます。
Administration モジュールの [Directories] タブで [Mappings] 領域を使用して、Service Portal データをディレクトリ サーバ データにマップします。
マッピングを設定するには、図 1-11 を参照し、次の手順に従います。
|
|
||
|
|
ステップ 1 Administration モジュールの [Directory Integration] ページに移動します。
ステップ 2 ページ ナビゲータの [Mappings] オプションをクリックします。
ステップ 3 [Add] をクリックして新しいマッピングを追加するか、リスト内で対象のマッピングの横にある[Edit] ボタンをクリックして既存のマッピングを編集します。
[Mapping Configuration] 領域が展開されます。
ステップ 4 マッピング ワークシートに記載されている要件に基づいて、マッピングの名前、説明、および属性を設定します。[Person Data] セクションに表示された、先頭にアスタリスク(*)が付いているマッピングは必須です。 ボタンをクリックしてオプションのマッピングを設定し、[Optional Person Data Mappings] セクションを展開することもできます。
ここでは、指定可能なマッピング タイプについて説明し、正しいサンプルのマッピングを示します。また、式マッピングの例についても説明します。
|
|
属性の組み合わせをフィールドにマップします。# を使用して各属性名を区切ります。マッピングにはリテラルを含めることができます。次に例を示します。 |
|
式では、正規表現とパターン マッチングを使用してマッピングが得られます。詳細については、「式マッピング」を参照してください。 |
|
簡易、複合、または式の各マッピングで目的とする機能を提供できない場合は、Java マッピングを使用します。これには、Java クラスを記述し、アプリケーション サーバ上の適切なディレクトリに、コンパイルしたクラス ファイルを配置する、という作業が含まれます。詳細については、「Java クラス マッピング」を参照してください。 |
次の表は、必須フィールドに対する簡易マッピングと複合マッピングの例を示しています。
|
|
式マッピングを使用すると、式が一致するパターン(正規表現)基づいて、値を条件付きで属性に割り当てることができます。システムの式マッピングは Perl5 Regular Expression Language を使用し、Java の条件演算子に似た構文と組み合わせて、一致させるパターンを指定します。
パターンのセットに対応する、パイプ(|)で区切られた値のセットです。それぞれの値は、式が対応するパターンと一致した場合の戻り値を指定します。 |
|
<expression> が <pattern1> に一致すると、<value1> を返します。
<expression> が <pattern2> に一致すると、<value2> を返します。
<expression> がどのパターンにも一致しない場合、<default> を返します。
各要素(expression、pattern、または value)には、# 記号で区切って、ディレクトリの属性名を含めることができます。たとえば、パターンを「#givenName#_#sn#」のように指定できます。ここで #givenName# と #sn# はどちらも属性名です。
また、括弧を使用して一連のパターン要素を 1 つの要素にグループ化できます。括弧内のパターンと一致した場合、$1、$2 などの形式で後方参照を使用して、以前に一致したパターンを参照することができます。
ディレクトリ統合に適用される式の簡単な利用法として、ディレクトリ内でコード化されている 1 つ以上の値を、よりわかりやすい記述、または広範なカテゴリに変換することができます。たとえば、サービスによっては、従業員と請負業者の区別が必要になることがあります。costCenter 属性は、「000000」が請負業者用です。したがって、[Employee Type] フィールドに次の式を適用することができます。
もうひとつ、式の簡単な利用法として、ソース属性が空白の場合に、フィールドにデフォルト値を入力することができます。これは多くの場合に、ディレクトリ データが標準化できるまでの「応急処置」となります。また、たとえば外部の請負業者に部門が割り当てられない場合などの標準にすることができます。次の式を [Home OU] フィールド(マッピングの必須フィールド)に適用することができます。
この式では、該当する場合に DeptLevel2 属性を使用することも、ユーザの Home OU に対して事業部門のデフォルトを「Unknown」にすることもできます。
同様に、この式を使用して、一連の入力値を、異なる戻り値のセットに変換できます。これは、case 文、またはネストされた if/then 構造と同じです。たとえば、次の式を [Locale ID] フィールドに適用し、ユーザのロケーションに基づいて、そのユーザに言語を割り当てることができます。
ユーザの国が United States の場合は、言語を米国英語に設定し、ドイツの場合は言語をドイツ語に設定します。その他の国の場合は、言語を米国英語に設定します。
正規表現では、ソース属性の長さ、および英数字で構成されているかどうかをチェックできます。たとえば、郵便番号が数値データ タイプとして格納され、先行ゼロが切り捨てられることがあります。先行ゼロを回復するには、[Company Postal Code] フィールドに次のような式を適用できます。
postalCode 属性がちょうど 4 桁の場合は、属性に先行ゼロの値を追加します。これにより、郵便番号 1701 は 01701 に変換され、特定のパターンに一致しないすべてのソース値は、変更されずにそのままになります。
正規表現の同様の使用法として、属性値の形式が、予想したパターンと一致するかをチェックする、というものがあります。有効なマネージャのユーザ ID は、必ず 2 文字と、それに続く一連の数字で構成されている場合について考えてみましょう。たとえば、有効な ID は fd1024 や ID3839 となります。次の式を使用できます。
パターンと照合するためにあらゆる試行を作成する前に、Doe、Jane などのディレクトリ レコードの姓および名が 1 つの文字列に組み合わされます。
パターンの一部を抽出するには、括弧および後方参照を組み込むと役立ちます。たとえば個人が所属している組織は、識別名(dn)属性内に組み込まれることがよくあります。
[Home Organizational Unit] フィールドにマップされる式は、次のような形式になります。
戻り値「Corporate」は後方参照値 $1 で、これは最初の括弧 ([a-zA-Z]+) 内の式で照合したパターンに相当します。
複数のフィールドが含まれているオーバーロード属性を解析するために、後方参照変数の使用が必要になることがあります。たとえば、1 つの属性に、個人の勤務先住所(ビル名、階数(レベル)、オフィスなど)を含めることが可能です。
異なる後方参照変数を、次の値として使用すると、同じパターンを使用して、式内で 3 つの要素を照合することができます。
ディレクトリ データをフィールドにマップするためのカスタム Java クラスを実装するには、Java プログラミングをよく理解し、Java 開発環境が用意されている必要があります。
すべてのカスタム マッピング クラスは、「ディレクトリ統合でのカスタム コードの使用」のガイドラインに従っています。マッピング クラスは IEUIAttributeMapping インターフェイスを実装する必要があります。
開発者は以下のガイドラインに従って、カスタム コード モジュールをテストおよびインストールする必要があります。
1. 最適な Java IDE をインストールし、カスタム マッピング コードを開発するためのプロジェクトをセットアップします。
2. 要件を満たすようにカスタム コード ファイルを編集します。
4. カスタム Java クラスは、Request Center サービスがアクセスできるように、Service Portal の Web アーカイブ(war)にインストールする必要があります。RequestCenter.war/WEB-INF/classes にディレクトリを作成し、パッケージと一致するようにします。このようなディレクトリは通常、次のような名前になります。
com/newscale/client/<clientname>(com/newscale/client/aib など)。
5. CustomMapping.class ファイルを、前の手順で作成したディレクトリにコピーします。
6. Request Center サービスを再起動します。
7. クラス ファイルの完全修飾名を Mapped Attribute として指定し、フィールドに値が挿入されるようにします。
マッピング テスト機能を使用して、自身のデータ マッピングが正しく設定されていること、およびディレクトリ サーバから正しい値を取得することをテストします。
ディレクトリ マップのテスト機能を有効にするには、図 1-12 を参照し、次の手順に従ってください。
|
|
||
|
ステップ 1 Administration モジュールの [Settings] タブをクリックして [Settings] ページを表示します。
ステップ 2 ページ ナビゲータの [Debugging] オプションをクリックします。
ステップ 3 [Directory Map Testing] 設定の横にある [On] オプション ボタンをクリックします。
データ マッピング テスト機能が有効になります。[Data Mapping] タブにアクセスすると、図 1-13 に示すように、次の追加機能が表示されます。
• [Choose a Datasource for Testing] ドロップダウン メニュー
|
|
||
|
|
||
|
|
ステップ 1 [Mapping] ページが表示されていない場合は、[Mappings] をクリックします。
ステップ 2 テストするマッピングの横にある [Edit] をクリックします。
ステップ 3 [Choose a Datasource for testing] ドロップダウン メニューから対象のデータソースを選択します。
ステップ 4 [Test Values] カラムにテスト値を入力します。簡易、複合、Java、および式の各マッピングを使用できます。
ステップ 6 [Test Values] カラムにテスト値が表示され、ページの下部に結果の概要が示されます。
(注) [Fetch] により値が返されるのは 1 つのデータソースのみで、照会先は検索されません。照会先の検索が統合されているとデバッグが難しいため、便宜上そのようになっています。
ステップ 7 [Fetch] ボタンの右にある [Clear] をクリックして、希望するマッピングが設定されるまで、新しい値をさらに試します。
Administration モジュールの [Directories] タブで [Events] 領域を使用して、次のイベントに対するディレクトリ統合の動作を設定します。
• Person Lookup for Order on Behalf
• Person Lookup for Service Form
• Person Lookup for Authorization Delegate
イベントを設定するには、図 1-14 を参照し、次の手順に従います。
ステップ 1 Administration モジュールの [Directory Integration] ページに移動します。
ステップ 2 ページ ナビゲータの [Events] をクリックし、[Events] ページを表示します。
ステップ 3 設定するイベントのタイプの横にある [Edit] をクリックします。
[Event Configuration] 領域が表示されます。
ステップ 4 [Event Status] ドロップダウン メニューから [Enabled] を選択し、イベントを有効にします。
ステップ 5 [Add step] をクリックして手順を追加し、選択したイベントが発生したときにシステムで開始されるようにします。
• SSO や EUA など、いくつかの操作は一部のイベント タイプに適用できませんが、このメニューではすべての操作を使用できます。
ステップ 7 [Options] をクリックして、選択した操作に関連付けるオプションを設定します。[Options] 領域が表示されます。[Options] 領域は、選択した操作によって異なります。使用できる操作、およびその操作のオプションについては、次の項で詳しく説明します。
ステップ 8 関連付けるオプションを設定します。使用できる操作、および操作を設定するためのオプションの説明については、ディレクトリ Events に関するこのマニュアルの項を参照してください。
ステップ 9 [Update] をクリックし、追加する各手順および操作に対して、これらの手順を繰り返します。
|
|
||
|
|
||
|
|
||
|
ディレクトリ統合フレームワークは、「Login」および「Person Lookup」イベントの柔軟性を利用し、カスタマイズできるよう設計されています。
Administration モジュールの [Directories] タブでは、すべてのイベントに対する標準操作を使用できます。そのような標準の操作としては、SSO、External User Authentication、Import Person、Import Manager、および Person Search などがあります。
これらの標準操作ではビジネス シナリオを満たせない場合、[Directories] タブには、カスタム Java コードを実行するためのインターフェイスも用意されています。このカスタム コードは、このドキュメントに記載されたインターフェイスに準拠している必要があり、Service Portal が公開している API を使用して、すべてのカスタマイズ ソリューションを開発する必要があります。
以下に、イベントの操作をカスタマイズできるシナリオの有効な使用例を示します。
|
|
ベンダーと SSO との統合をサポートするために、ユーザのクレデンシャルを取得するカスタム コード SSO 操作を提供する。 |
|
カスタム コード External Authentication、およびカスタム コード Import Person 操作を提供する。 |
ディレクトリ統合カスタム コード フレームワークでは、外部データソースのレコードから個人またはユーザ プロファイルの特定のフィールドに対する、複雑な取得ロジックを提供するよう実装可能なインターフェイスも定義されます。
ディレクトリ統合の Public API およびインターフェイスには次のものが含まれています。
• カスタム コード操作インターフェイス 。ディレクトリ統合の操作をカスタマイズするために使用します。
• カスタム Java クラス マッピング インターフェイス 。レコードから外部データソースの特定の属性を取得する場合に、カスタマイズされた取得を提供します。
• ディレクトリ サーバ API 。外部データソースで照会または認証を行い、レコードを取得するために使用します。
• 個人のインポート/更新 API 。Service Portal データベースの個人属性を更新するために使用します。
一般的なカスタム コード プロジェクトには、次のタイプのアクティビティが含まれています。
• Administration モジュールの [Directories] タブを設定して、カスタム コードで使用されるデータソースを含める。該当する場合は、カスタム コードで使用する可能性のあるマッピングを含める。
• カスタム コードを開発する。公開 API、およびディレクトリ統合タスク用にシスコから提供されたインターフェイスについて理解する必要があります。
• カスタム コードを使用するよう、Administration モジュールの [Directories] タブを設定する。
|
|
|
|
外部データソースから Service Portal データベースに、マネージャまたはマネージャのチェーンをインポートする |
標準操作とカスタム コード操作の混在と照合、または置換も、ディレクトリ統合フレームワークでサポートされています。次の表に示すように、Service Portal は、1 つのイベントでさまざまな操作の組み合わせをサポートしています。独自にカスタマイズしたコードと、これらのインターフェイスを実装しやすくするよう設計された、Service Portal の公開 API を使用できます。
カスタム コードの設計および開発エンジニアは、ディレクトリ統合フレームワーク、公開 API、およびカスタム コード インターフェイスについて理解することが重要です。これらについては、このガイドで詳しく説明します。
次の表は、カスタム コード操作のメソッド、イベント、および操作タイプ間の関係を表しています。次の表に記載されていない組み合わせはサポートされていません。
|
|
|
|
イベント内で設定されている操作のカスタム実装を提供する場合、カスタム コード操作インターフェイスを実装する必要があります。
カスタム コード操作インターフェイスは、特定の操作がトリガーされたときに呼び出されるコールバック メソッドを定義します。どのメソッドが呼び出されるかは、操作で選択された操作タイプによって決まります。詳細については、カスタム コード操作のメソッド、イベント、およびタイプの表を参照してください。カスタム コードの操作インターフェイスで定義されるすべてのメソッドは、同じパターンに従っています。
以下のリストで、「**」は次のいずれかの操作タイプで置き換える必要があります。
1. **OperationDTO:このオブジェクトには、Administration モジュールの [Directories] タブで操作をどのように設定したか、についての情報が含まれています。これには、マッピングおよびデータソースの情報が含まれます。
2. **OperationContext:Context オブジェクトを使用して、メソッドの呼び出しで情報を共有します。ディレクトリ統合フレームワークは、1 つのコンテキスト オブジェクトに情報を格納しますが、これは同じ HttpServletRequest の呼び出しのときに他のコンテキスト オブジェクトで使用することができます。
a. setLocalContextObject および getLocalContextObject を使用すると、結果の一部にはならないカスタム情報を設定できます。
b. get**Result を使用すると結果オブジェクトが取得されます。結果オブジェクトには、イベント要求全体で発生したことに関するすべての情報が含まれています。結果には、製品化されたインポートでサポートされている情報が含まれています。LocalContext オブジェクトを使用して、製品化された操作の実装で予期しなかったオブジェクトを格納します。
3. Request:HttpServletRequest です。
**Result。カスタム タスクを実行すると、API は、有効な戻りタイプに結果を挿入して返します。関連するプロパティを更新した後、OperationContext から取得される、同じ結果オブジェクトが返されます。結果オブジェクトの新しいインスタンスが返されると、予期しない動作が生じることがあります。
表 1-5 は、予想される入力または戻りと、各コールバック メソッドのパラメータにあるオブジェクトの関係を示しています。
実装クラスをコンパイルするには、すべてのメソッドを実装する必要があります。制限されている操作タイプのみをカスタマイズする場合、その操作タイプに関連しないメソッドの、空の実装を提供する必要があります。
たとえば、カスタマイズされた SSO のみを対象にする場合は、getCredentials メソッドの完全な実装を提供します。その他のすべてのメソッドについては、ヌルを返します。
システムはインターフェイスのインスタンスをプールできます。また、複数のスレッドから同時にアクセスすることができます。したがって、インスタンスはステートレスにしておくことを推奨します。
カスタム コードの操作インターフェイスには、次の 2 つのタイプがあります。
これは、ログイン イベント SSO、EUA、Import Person、Import Manager、およびカスタム コード操作をカスタマイズするために、カスタム コードが実装する必要のあるインターフェイスです。
SSO カスタム コード操作の主な目的は、Remote NTML/IWA のタイプが Sign-On の場合に、Sign-On、または CGI ヘッダー(CGI 変数 REMOTE_USER)からログイン名を取得し、返すことです。
表 1-4 に概要を示すように、ISignOn インターフェイスを実装する Java クラスを提供する必要があります。このインターフェイスでは、getCredentials メソッドの完全な実装を提供してください。詳細な仕様については、ISignOn インターフェイスのマニュアルを参照してください。
以下に、getCredentials メソッドを実装するためのガイドラインを示します。これらのすべてのガイドラインを実装する必要はありません。以下の概説では取り上げていませんが、カスタマイズによっては追加の要件が存在する場合があります。
• IEUISignOnOperationContext から IEUISignOnOperationResult を取得します。これは、このインターフェイスから必ず返されるオブジェクトです。
• パラメータ要求を使用して処理し、個人のログイン名が得られるようにします。
• in-product ディレクトリのルックアップ機能を使用した場合は、IEUISignOnOperationResult.setSsoLoginId(<login id>) をコールすると LoginId が返されます。
• IEUISignOnOperationResult.setSsoRedirectUrl("<any url or error page>") をコールします。これは、SSO の障害時にユーザをリダイレクトするために使用します。
IEUIEventSSOOperationDTO.getEventSsoDTO() で取得された SSO 操作のオプションはヌルになる可能性があります。カスタム コード操作に対しては、Administration モジュールが SSO オプションを受け入れないからです。
EUA カスタム コード操作の主な目的は、外部システムに対してユーザを認証することです。
表 1-4 に概要を示すように、ISignOn インターフェイスを実装する Java クラスを提供する必要があります。このインターフェイスでは、authenticate メソッドの完全な実装を提供してください。詳細な仕様については、ISignOn インターフェイスのマニュアルを参照してください。
以下に、EUA 操作を実装するためのガイドラインを示します。これらのすべてのガイドラインを実装する必要はありません。以下では取り上げていませんが、カスタマイズによっては追加の要件が存在する場合があります。
• IEUISignOnOperationContext から IEUISignOnOperationResult を取得します。これは、このインターフェイスから必ず返されるオブジェクトです。
• IEUIEventEUAOperationDTO オブジェクトの EUIDatasourceDTO オブジェクトには、この操作に対して Administration モジュールで設定された Datasource へのインターフェイスが含まれています。
• EUIUtil の LDAPConfigInfo オブジェクトに値を挿入し、EUIDatasourceDT に渡します。これは、LDAP Server に接続情報を使用して LDAP API をコールするために必要です。
• IEUISignOnOperationResult.getSsoLoginId() をコールして Login Name を取得します。
• BindDN を形成し、setBindDN() をコールして LDAPConfigInfo に設定します。
• IEUISignOnOperationResult.getEuaPassword() をコールして、[Login] ページでユーザが入力したパスワードを取得します。
• setBindPassword() をコールして、それを LDAPConfigInfo に設定します。
• LDAPConfigInfo オブジェクト ILDAPApi.authenticate() API を渡して、Directory Server に対してユーザを認証します。
• ユーザが認証されたら、IEUISignOnOperationResult.setEuaAuthenticated(true) をコールします。
• ユーザの認証が失敗したか、何らかの例外が発生した場合は、IEUISignOnOperationResult.setEuaAuthenticated(false) をコールします。
IEUIEventEUAOperationDTO.getEventEuaDTO() で取得した EUA 操作オプションは空になります。カスタム コードの操作に対しては、Administration モジュールが EUA オプションを受け入れないからです。
Import Person 操作の主な目的は、外部システム(ディレクトリ サーバや外部データベースなど)から Service Portal アプリケーションにユーザをインポートまたは更新することです。
表 1-4 に概要を示すように、ISignOn インターフェイスを実装する Java クラスを提供する必要があります。このインターフェイスでは、importPerson メソッドの完全な実装を提供してください。詳細な仕様については、ISignOn インターフェイスのマニュアルを参照してください。
以下に、Import Person 操作を実装するためのガイドラインを示します。これらのすべてのガイドラインを実装する必要はありません。以下では取り上げていませんが、カスタマイズによっては追加の要件が存在する場合があります。
• IEUISignOnOperationContext から IEUISignOnOperationResult を取得します。これは、このインターフェイスから必ず返されるオブジェクトです。
• IEUIEventImportPersonOperationDTO オブジェクトの EUIDatasourceDTO オブジェクトには、この操作に対して Administration モジュールで設定されたデータソースへのインターフェイスが含まれています。
• IEUIEventImportPersonOperationDTO オブジェクトの EUIDataMappingDTO オブジェクトには、この操作に対して Administration モジュールで設定されたマッピングへのインターフェイスが含まれています。
• IEUISignOnOperationResult.getSsoLoginId() メソッドから取得したログイン名を使用して、LDAP サーバまたは外部データベースから外部システム上のユーザに対して問い合わせを行い、個人のプロファイルに関するすべての情報(組織単位、グループ、ロールなど)を収集します。
• ISignOnImportPersonAPI.getPersonByLoginName(<Login Id>) をコールして、ユーザがすでに Service Portal データベースに存在しているかどうかチェックします。すでに存在している場合、このメソッドは IPersonDTO オブジェクトを返します。存在していない場合、メソッドは signOnImportPersonAPIException をスローします。
• 個人が見つからない場合は、個人のインポートを準備するために、PersonFactory.createPersonDTO() メソッドによって IPersonDTO オブジェクトを作成します。
• 外部システムからフェッチしたデータから、PersonFactory を使用してこれらの DTO を作成して値を挿入します。IPersonDTO、ILoginInfo、IContactDTO、IAddressDTO、および IPersonExtensionDTO についても同様にします。
• ISignOnImportPersonAPI.beginTransaction() をコールしてデータベース トランザクションを開始します。
• ISignOnImportPersonAPI.getOrgUnitByName(<OU Name>) をコールして、組織単位(OU)が存在するかどうかチェックします。存在する場合、このメソッドは IOrganizationalUnitDTO オブジェクトを返します。組織単位が存在しない場合、メソッドは signOnImportPersonAPIException をスローします。
• OU が存在しない場合は、ISignOnImportPersonAPI.createOrgUnit(<IOrganizationalUnitDTO>) をコールして作成することができます。
• ユーザがすでに存在する場合、ISignOnImportPersonAPI.updatePerson(<IPersonDTO>) をコールします。これにより、個人の基本プロファイル、ログイン情報、プリファレンス、ホーム OU、および内線番号が更新されます。
• ユーザがすでに存在する場合は、ISignOnImportPersonAPI.linkAddresses(<IAddressDTO collection>) および ISignOnImportPersonAPI.linkContact(<IContactDTO> をコールして、住所/ロケーションおよび連絡先をリンクまたは更新します。
• 個人が外部システムの 1 つ以上のグループに関連付けられている場合は、ISignOnImportPersonAPI.getGroupByName (<ou name>) をコールして、最初に、存在するすべてのグループを取得します。関連付けられていない場合は、ISignOnImportPersonAPI.createGroup(<IOrganizationalUnitDTO>) をコールして新しいグループをすべて作成します。
• 個人が新規の場合は、ISignOnImportPersonAPI.linkPersonToOrgUnit() および ISignOnImportPersonAPI.linkPersonToGroup() をコールして、OU およびグループのすべてのリストをユーザにリンクします。
• 個人がすでに存在する場合は、ISignOnImportPersonAPI.unlinkPersonToOrgUnit() および ISignOnImportPersonAPI.unlinkPersonToGroup() をコールして、ユーザからすべての OU およびグループをリンク解除することができます。
• OU の既存の関係(個人のホーム OU やグループなど)を見つけるには、ISignOnImportPersonAPI.getOrgUnitsForPerson() および ISignOnImportPersonAPI.getGroupsForPerson() methods をコールします。
• ロールへの既存の関係を見つけるには、ISignOnImportPersonAPI.getRolesForPerson() method をコールします。
• インポートされた個人をロールに関連付ける必要がある場合は、最初に ISignOnImportPersonAPI.getRBACRoleByLogicName(<roleLogicName>) を使用してロールを取得します。
• ISignOnImportPersonAPI.linkPersonToRole() または ISignOnImportPersonAPI.unlinkPersonToRole() をコールして、個人にロールをリンクまたはリンク解除します。
• 個人のインポートまたは更新が正常に終了したら、IEUISignOnOperationResult にフラグ ImportPersonDone = true を設定します。
• インポートまたは更新が正常に終了したら、PersonFactory.createExtUserDTO() で IExtUserDTO のオブジェクトを作成し、IPersonDTO および HomeOUDTO (IOrganizationalUnitDTO) を IExtUserDTO に設定し、IEUISignOnOperationResult.setImportedPersonExtDTO(<IExtUserDTO>) をコールして、インポートした個人の IExtUserDTO を返します。
• インポートまたは更新操作が失敗したら、IEUISignOnOperationResult にフラグ ImportPersonDone = false を設定します。
• ISignOnImportPersonAPI.commitTransaction() をコールしてデータベース トランザクションを終了またはコミットします。
• トランザクションが失敗した場合は、ISignOnImportPersonAPI.rollbackTransaction() をコールして exception ブロックでトランザクションをロールバックし、ISignOnImportPersonAPI.releaseTransaction() をコールして finally ブロックでトランザクションをリリースします。
IEUIEventImportPersonOperationDTO.getImportPersonDTO() メソッドによる Import Person 操作のオプションは空です。カスタム コードの操作に対しては、Administration モジュールが Import Person オプションを受け入れないからです
Import Manager 操作の主な目的は、ディレクトリ サーバなどの外部システムから、個人の上司チェーンを Service Portal にインポートまたは更新することです。
表 1-4 に概要を示すように、ISignOn インターフェイスを実装する Java クラスを提供する必要があります。このインターフェイスでは、importPerson メソッドの完全な実装を提供してください。詳細な仕様については、ISignOn インターフェイスのマニュアルを参照してください。
以下に、Import Manager 操作のガイドラインを示します。
• IEUISignOnOperationContext から IEUISignOnOperationResult を取得します。これは、このインターフェイスから必ず返されるオブジェクトです。
• IEUISignOnOperationResult から、インポートまたは更新されたユーザの ImportedPersonExtDTO を取得します。
• IEUISignOnOperationResult.getImportedPersonExtDTO() method メソッドでインポートされた個人を取得します。IExtUserDTO オブジェクトが返され、それから PersonDTO オブジェクトを取得します。
• 外部システムから、必要に応じてすべてのマネージャをインポートし、前述の Import Person の例で説明しているのと同じ方法で、各マネージャを作成または更新します。
• personDTO は、インポートされたマネージャの IPersonDTO への参照であり、managerDTO は、マネージャのインポート後に返された IPersonDTO への参照であることを前提に、マネージャを個人にリンクします。
• personDTO.setManagerId(managerDTO.getId() を使用して、personDTO に対するマネージャの関係を設定します。
• 「Import Person 操作」に説明のあるいずれかのメカニズムを使用して personDTO を保存し、関係を保存します。
マネージャ チェーンをインポートする場合は、個人よりも先に最上位のマネージャをインポートすることを推奨します。これにより、personDTO が個人のマネージャとのリンクを更新するための不要な更新が防止されます。
IEUIEventImportManagerOperationDTO で取得した Manager 操作オプションをインポートします。getImportManagerDTO() は空になります。カスタム コードの操作に対しては、Administration モジュールが Import Manager オプションを受け入れないからです。
カスタム コード操作の主な目的は、アプリケーションの他のどの場所にも示されていない、必要なカスタム操作を実行することです。
• IEUISignOnOperationContext から IEUISignOnOperationResult を取得します。これは、このインターフェイスから必ず返されるオブジェクトです。
• IEUIEventCustomOperationDTO から EUIDatasourceDTO を取得します。このオブジェクトには、この操作の Administration モジュールで設定されたデータソースが含まれています。
• IEUIEventCustomOperationDTO から EUIDataMappingDTO を取得します。このオブジェクトには、この操作の Administration モジュールで設定されたマッピングが含まれています。
これは、Person Search イベントの Person Search、Import Person、Import Manager、およびカスタム コード操作をカスタマイズするために、カスタム コードが実装する必要のあるインターフェイスです。
実装クラスは、Administration モジュール > [Directories] タブ > [Events] で設定されます。Service Portal アプリケーション内の次の場所で個人を検索するために設定することができます。
• Person Search for Order On Behalf
Person Search 操作の主な目的は、ディレクトリ サーバなどの外部システムからユーザを検索することです。
表 1-4 に概要を示すように、IPersonSearch インターフェイスを実装する Java クラスを提供する必要があります。このインターフェイスでは、search メソッドの完全な実装を提供してください。詳細な仕様については、ISignOn インターフェイスのマニュアルを参照してください。
以下に、Person Search 操作のガイドラインを示します。
• IEUISignOnOperationContext から IEUISignOnOperationResult を取得します。これは、このインターフェイスから必ず返されるオブジェクトです。
• カスタム Person Search 操作は、Person Search を使用して設定できるため、Search Event の以前の操作から、検索結果に対して追加したり、操作したりできます。このようにするには、IEUISignOnOperationResult.getSearchPersonList() をコールして、すでに検索結果内に存在する個人のリストを取得します。
• 外部システムのユーザを検索します。ディレクトリ サーバの場合は、インターフェイス ILDAPApi で API メソッドを使用し、外部データベースの場合は、SQL データソースに接続するために ISignOnImportPersonAPI で API を使用します。
• 外部システムで見つかった個人ごとに IExtUserDTO を作成します。
• IExtUserDTO に、IPersonDTO、IOrganizationalUnitDTO(ホーム OU の場合)、および ILoginInfoDTO を挿入します。
• 任意:個人のポップアップ グループ設定に基づいて、コレクション IContactDTO、IAddressDTO のコレクション、IPersonExtensionDTO にも挿入します。
• ISignOnImportPersonAPI getCustomParam("ShowAllUsersForOrderOnBehalf") を使用して、フラグ「All Users For Order On Behalf」を取得します。
• カスタム コードと標準プラットフォームの動作との整合性を保つため、フラグがオフで、個人に対していずれかの必須属性が指定されていない場合は、そのエントリを削除します。これにより、不完全な個人はポップアップに表示されなくなります。
• カスタム コードと標準プラットフォームの動作との整合性を保つため、フラグがオンで、いずれかの必須属性に対して個人が指定されていない場合は、IExtUserDTO.setResultHasError(true) をコールします。これにより、不完全な個人がポップアップに含まれるようになりますが、オプション ボタンの代わりに赤いアスタリスク「 * 」が表示されます。星印の付いたユーザは、エンド ユーザが選択することも、インポートすることもできません。
• IEUISignOnOperationResult. setSearchPersonList(<List of all IExtUserDTO>) をコールして、検索されたすべての個人のリストを返します。
IEUIEventPersonSearchOperationDTO.getPersonSearchOperationDTO() メソッドで取得した Person Search 操作のオプションは空です。これは、カスタム コードの操作に対しては、Administration モジュールが Person Search オプションを受け入れないからです。
表 1-4 に概要を示すように、IPersonSearch インターフェイスを実装する Java クラスを提供する必要があります。このインターフェイスでは、importPerson メソッドの完全な実装を提供してください。詳細な仕様については、IPersonSearch インターフェイスのマニュアルを参照してください。
カスタマイズする手順は、「Login イベントに対する Import Person 操作のカスタマイズ」と同様です。
表 1-4 に概要を示すように、IPersonSearch インターフェイスを実装する Java クラスを提供する必要があります。このインターフェイスでは、search メソッドの完全な実装を提供してください。詳細な仕様については、IPersonSearch インターフェイスのマニュアルを参照してください。
カスタマイズする手順は、「Login イベントに対する Import Manager 操作のカスタマイズ」と同様です。
表 1-4 に概要を示すように、IPersonSearch インターフェイスを実装する Java クラスを提供する必要があります。このインターフェイスでは、performCustom メソッドの完全な実装を提供してください。詳細な仕様については、IPersonSearch インターフェイスのマニュアルを参照してください。
カスタマイズする手順は、「Login イベントに対するカスタム操作のカスタマイズ」と同様です。
簡易、複合、または正規表現の各属性マッピングでは不十分な場合は、ディレクトリ統合属性マッピングでカスタム Java クラスを使用することができます。
これは、ディレクトリ属性マッピングをカスタマイズするために、カスタム コードが実装する必要のあるインターフェイスです。カスタム マッピング クラスの主な目的は、ディレクトリ サーバから取得した属性値をカスタマイズすることです。
実装クラスは、Administration モジュール > [Directories] タブ > [Mappings] で設定され、マッピングのすべての属性に対して設定できます。
図 1-15 属性マッピングに対するカスタム Java クラス
以下に、カスタム Java クラスのマッピング クラスを使用するためのガイドラインを示します。
• マッピング クラスは、ディレクトリから取得された値に適用される、簡単なロジックに対してのみ使用されます。
• パフォーマンス上の理由から、Directory Server API を使用してディレクトリ サーバに対するコールを実行したり、何らかのデータベース操作を実行するためにマッピング クラスを使用することはできません。これらの用途に対しては、Person Search または Login インターフェイスを使用する必要があります。
• マップされた属性に対して単一の値を返すには、IEUIAttributeMapping.getAttributeValue() を実装します。このメソッドは、OU List、Group List、または Role List mapping フィールドに対して実装しないでください。
• マップされた属性に対して複数の値を返すには、IEUIAttributeMapping.getAttributeValueArray() を実装します。このメソッドは、OU List、Group List、および Role List マッピング フィールドに対してのみ実装されます。
これは、製品に組み込まれているディレクトリ サーバ(LDAP)接続機能と統合するために、シスコが提供する API ラッパーです。
この API が提供する機能は、ディレクトリ サーバに対する認証、およびクエリーのみです。この API は、Service Portal でサポートされているすべてのディレクトリ サーバをサポートします。
通常、Directory Server API はディレクトリ統合のデータソースおよびマッピング設定から機能し、クエリー用の接続情報、フィルタ、および属性を手作業でコーディングする必要がありません。
一般的に、LDAP API を使用するには、LDAPConfigInfo オブジェクトも必要です。この目的のためには、すべてのデータソースおよびマッピングから EUIUtil.get LDAPConfigInfo() を使用します。
ILDAPApi のインスタンスを作成する必要はありません。両方のカスタム コード API インターフェイス(ISignOn と IPersonSearch)のすべてのメソッド引数で使用できます。
ディレクトリ統合ユーティリティクラス(EUIUtil)は、Administration モジュールで設定されたデータソースおよびマッピングを、Directory Server API が認証、検索、およびクエリー機能の入力として使用できる形式に変換します。
LDAPConfigInfo クラスのオブジェクトは、ディレクトリ サーバ API に渡す必要がある、次のすべての設定オプションをカプセル化します。
上級ユーザの場合は、何らかの設定を上書きする必要がある場合に、すべての設定に対する getter および setter が LDAPConfigInfo から提供されます。これらのメソッドの詳細については、このクラスに関する Javadoc を参照してください。
ILDAPApi は、ディレクトリ サーバ上で次の 2 つの基本操作を提供するメイン インターフェイスです。
ILDAPApi インターフェイスは、Service Portal 全体で LDAP と一貫性を保って対話を行うためのメソッドを提供します。
ILDAPApi.query(...) メソッドを使用してディレクトリ サーバに対してクエリーまたは検索を行うと、LDAPEntryBean のコレクションとして結果が返されます。
この API を使用すると、個人プロファイルのインポートまたは更新、OU またはグループの作成、OU、グループ、またはロールへの個人のリンクまたはリンク解除を行えます。この API は、個人をインポートするためのトランザクション管理、および SQL データソースへの接続もサポートしています。この API には、CnfParams テーブルから読み込むためのメソッドも含まれています。
個人のインポート/更新 API インターフェイスは、次のためのメソッドを提供します。
• PersonID または LoginName によって Person オブジェクトを取得する。Person とログイン情報、プリファレンス、ホーム OU、住所、連絡先、場所、および内線番号が返されます。
• ログイン情報、プリファレンス、ホーム OU、住所、連絡先、場所、および内線番号を使用して Person を作成する。
• ログイン、プリファレンス、ホーム OU、および内線番号を使用して Person を更新する。
• OrganizationalUnitID、Name により OU を取得する。OU のメンバは返されません。
• 特定の Person についてすべての OU を取得する。OU のメンバは返されません。
• GroupID、Name によって Group を取得する。Group のすべてのメンバは返されません。
• システム定義ロールに対する LogicName オブジェクトを取得する。
• LogicName オブジェクトによりシステム定義ロールを取得する。
• Import Person に対するトランザクションの開始、トランザクションのコミット、およびトランザクション リソースのリリースを行う。
• SQL データソース接続でトランザクションをロールバックする。
SQL データソースに接続するために Java クラスをカスタマイズするには、次の手順に従います。
ステップ 1 DatasourceName を渡すことで、ISignOnImportPersonAPI から SQL データソース データベースへの接続を取得します。DatasourceName には、newscale.properties ファイルの「DatasourceJNDIPrefix」プロパティで定義されているように、JNDI プレフィックスが付加されます。
ステップ 2 JDBC ステートメントを使用してクエリーを実行するには、上記の接続を使用します。
ステップ 3 try ブロックの最後で、接続オブジェクトを直接コミットします。
ステップ 4 障害または例外が発生したときに接続をロールバックするには、ISignOnImportPersonAPI をコールします。
ステップ 5 final ブロックで、ステートメントを直接閉じて ISignOnImportPersonAPI をコールし、接続を解放して接続プールに戻します。
カスタム コードをコンパイルおよび導入する手順を、次に示します。
ステップ 1 「build.xml ファイルの例」に示す build.xml ファイルをコピーして、任意のフォルダ(C:¥CustomCode など)に貼り付けします。
ステップ 2 build.xml ファイルを編集して、RequestCenter.ear を使用できるフル パスを指すようプロパティ「rcear.dir」を変更します。
ステップ 3 build.xml を編集して、servlet-api.jar を使用できるフル パスを指すようプロパティ「javax.servlet.dir」を変更します。これはアプリケーション サーバに特有の設定です。
ステップ 4 カスタム コード Java ファイル用に、(C:¥CustomCode¥src などの)サブフォルダを作成します。
ステップ 5 「com.newscale.SignOnCustomCode」などのパッケージ名を付けてカスタム コードを作成し、SignOnCustomCode.java ファイルを C:¥CustomCode¥src¥com¥newscale¥SignOnCustomCode.java ディレクトリに配置します。
ステップ 6 C:¥CusomCode フォルダのコマンドラインから「ant」を実行します。
ステップ 7 ant のビルド ファイルは、「src」サブフォルダの下のすべての java ファイルをコンパイルし、クラス ファイルを「out」サブフォルダに配置します。
ステップ 8 ant のビルド ファイルは、「RequestCenter.ear¥RequestCenter.war¥WEB-INF¥classes」フォルダにもクラス ファイルを導入します。
• パッケージ名は com.newscale.[yourcompanyname].* にすることを推奨します。
• すべての ContextLocalAttributes の格納には、キー名「com.yourcompanyname.*」を使用します。これにより、内部名前空間でのクラッシュが防止されます。
• メッセージをサーバ ログに記録するには、System.out.println ではなく Logger を使用します。
• デバッグ ログについては、必ずデバッグが有効になっているかどうかを最初に確認します。これはパフォーマンス上、必要です。
カスタム コードの開発、コンパイル、および導入が終了したら、そのコードを使用するように Administration モジュールを設定する必要があります。設定には、いつ(どのイベントで)、どの操作で、どの順序(ステップ)でカスタム コードを呼び出すかを指定します。
Administration モジュールの [Settings] タブでこの設定をオンにして、Directory Integration が有効になっていることを確認します。Directory Integration をオンにする方法は、「ディレクトリ統合の有効化」に説明があります。
カスタマイズされているかどうかに関係なく、大半の操作ではデータソースとマッピングが必要です。このため、最初に Directory Administration の 2 つの領域を設定する必要があります。
データソースは LDAP などの外部サーバであり、ユーザのデータが現在格納されています。Service Portal はデータソースにアクセスする必要があります。データソースが必要ないカスタム操作は SSO だけです。
データソースの設定の詳細については、「データソースの定義」および「データソース情報の設定」を参照してください。
外部データソースを設定したら、Service Portal で使用できる個人関連のデータを、LDAP ディレクトリ(または他の外部データソース)内のデータにマップする必要があります。これらのマッピングでは、イベントおよび操作のシーケンスで、どこを検索するか、および何を取得するかが Service Portal に指示されます。
マッピングを設定するには、「マッピングの定義」および「マッピングの設定」のガイドラインと説明に従ってください。
Login 以外のすべてのイベントに対するシングル サインオン(SSO)および認証の操作のカスタマイズは、不正なアクションとみなされます。これらの操作が必要になるタイミングは他にありません。外部の LDAP サーバから、アプリケーションにユーザがサインインして認証された後は、プロセスを複製する必要がありません。
外部データソースへの接続が必要なすべてのイベントは、ここで設定されます。このガイドに記載されているカスタム コード API を呼び出す場合には、カスタム操作が不正な順序で発生したり、失敗したりしないよう、各イベントに対する操作の順序を考えることが重要です。
ステップ 1 ナビゲーション ペインで [Events] を選択します。
ステップ 2 カスタマイズするイベントの [Edit] をクリックします。
ステップ 3 イベントが無効になっている場合は、ドロップダウン メニューを使用して [Enabled] を選択します。
ステップ 4 [Add step] をクリックして操作を追加します。ここでは、ステップを必要なだけ追加できます。また、各ステップの詳細を設定してから、その次のステップを追加および設定してください。
ステップ 5 ドロップダウン メニューから [Operation] を選択します。
• SSO のコードを呼び出すだけの場合は、たとえばメニューから SSO を選択できます。SSO のコードを カスタマイズ するには、[Custom Code] を選択し、次のステップでカスタマイズする操作を選択します。
• カスタマイズした操作を設定するには、[Custom Code] を選択します。
ステップ 6 ドロップダウン メニューから [mapping] および [datasource] を選択します。
ステップ 7 「Additional Options」という見出しの下にある [Options] ボタンをクリックします。
• カスタム コード操作タイプでは、ドロップダウン メニューを使用して、カスタマイズする操作を選択します。
• Java クラスでは、その操作用の全体のパッケージ名を入力してから、その後ろにクラス名を入力します。たとえば、com.newscale.bfw.eui.api.samples.operations. CustomCodeTester のようになります。
• この例では、Java クラス名を イタリック体 で示してあります。これらは両方がコード自体の中にあり、コピーすることができます。
ステップ 9 ステップの追加オプションを閉じるには、[Close] をクリックします。
ステップ 10 必要に応じて、ステップの追加と設定を続けます。
ステップ 11 イベント用のすべてのステップを保存するには、[Update] をクリックします。
前述のステップで、操作として [Custom Code] を選択し、操作タイプとして [Custom Code] を選択した場合は、未定義のカスタム コードをコールしているため、設計する必要があります。
シスコが提供しているカスタム コード テストの例では、Java クラス「performCustom」を使用して、独自のカスタム コードを定義できます。
すべてのカスタム コードは、Service Portal インストーラに対するカスタマイズとしてパッケージ化する必要があります。これにより、インストールの更新が必要な場合や、新しいサイトをインストールする場合に、カスタマイズを再適用できます。
カスタム コードをパッケージおよび導入するための方法は、Service Portal をホストしているアプリケーション サーバによって異なります。詳細は、『Cisco Service Portal Installation Guide』および『Cisco Service Portal Configuration Guide』を参照してください。
• コンテナで管理される SQL データソースから収集されたデータを使用して、個人を検索するイベント クラスを作成する。
• コンテナで管理される SQL データソースから収集されたデータを使用して、個人をインポートするイベント クラスを作成する。
• コンテナで管理される SQL データソースから収集されたデータを使用して、個人を修正するイベント クラスを作成する。
• UI から設定パラメータを受け取ることができるイベント クラスを作成する。この例ではマッピング インターフェイスを使用して、設定パラメータをクラスに渡します。
また、ホーム OU が Service Portal に存在しない場合に、個人のホーム OU を事業部門として作成します。
このソリューションでは、データソースをアプリケーション サーバ上に設定する必要があることに注意してください。以降では、EUIPersonSearchSQL クラスの設定および使用法について説明します。
個人プロファイルの必須フィールドのデータが含まれている(または、これらのフィールドの値を得ることができる)SQL テーブルは、データソースとして使用できます。次に、この例で使用されるテーブルの定義を示します。
次に、上記のテーブル定義で使用するサンプル データの一部を示します。
Directory Integration インターフェイスを使用するには、LDAP データソースを設定しておく必要があります。LDAP は、データソースでサポートされている唯一の UI です。データソースなしでマップを作成できますが、LDAP データソースなしではテストできません。
コンテナで管理されるデータソースの設定は、コンテナによって異なります。Websphere および Weblogic コンテナには、データソースを作成するための詳細な手順説明があります。この説明を利用すると、他のデータソースの作成方法を補足できます。JBoss では、RequestCenter.war/config ディレクトリに xml ファイルを作成するプロセスになります。最も簡単な方法は、Service Portal 用のものをコピーし(通常は mssql-ds.xml のような名前)、接続パラメータを変更することです。JBoss は、このディレクトリ内のファイルを定期的にポーリングし、すぐにデータソース オブジェクトを作成しようとします。データソースの設定の詳細については、『 Cisco Service Portal Installation Guide 』に説明があります。
EUIPersonSearchSQL クラスに対するマッピングを作成する必要があります。
このマッピングには、Custom 9 として JNDI への参照が含まれ、Custom 10 にはテーブル名の参照が含まれています。このようなマッピングを使用すると、「select * from tablename」のような簡単なクエリーを実行し、JDBC のメタデータ機能を使用して、マッピングに基づいてカラムを選択することができます。
「Person Lookup for Order on Behalf」イベントには 2 つのステップがあり、最初のステップでは「Person Search」操作を実行する必要があります。クラスの名前はマッピングとして与えられます。パッケージの仕様全体は、Java クラスとして与えられます。
「Person Lookup for Order on Behalf」イベントの 2 番めのステップは、選択した個人のインポート(「Import Person」)です。この設定では同じ Java クラスを使用しますが、カスタム コード操作タイプは異なります。ドロップダウンのカスタム コード操作タイプは、インターフェイス クラスでコールされるメソッドに対応したものとなります。
図 1-19 イベントのステップ 2:カスタム Import Person 操作
タイム ゾーンのマッピングにサポートされているタイム ゾーンは、次のとおりです。
|
|