アダプタをトラブルシューティングするには、アダプタのログファイルをレビューします。ほとんどのアダプタはそのリソース設定をログファイルに書き込んでいるため、この情報を基に、そのアダプタが起動していること、すべての設定の変更内容が保存されていることを確認できます。
トレースを有効に設定し、ログが実行される前にトレースが必要なメソッドを特定しておく必要があります。また、カスタムアダプタには、この新しいメソッドのログエントリを作成する呼び出しを含めておく必要があります。
トレースを有効にする手順については、必要に応じて「Identity Manager サーバーのトレース」を参照してください。
ほとんどのアダプタログファイルは、$WSHOME/config ディレクトリにあり、WSTrace1.log という名前が付けられています。
ActiveSyncUtil インスタンスへのログ呼び出しを作成し Active Sync が有効に設定されているアダプタは、Log File Path リソース属性で指定されたディレクトリにログファイルまたはログファイルセットを作成します。このほかにも Active Sync 関連のログエントリがないか、このログファイルを必ずチェックしてください。
この節の情報は、次のように構成されています。
カスタムアダプタをデバッグするには、この一般的な手順に従ってください。
アダプタにテストプログラムを作成し、この Java ファイルが次の基本機能を実行することを確認します。
リソースの新規作成
ユーザーの作成
ユーザーの取得
ユーザーの更新
ユーザーの削除
複数ユーザーに、作成、取得、更新、および削除の操作を実行します。
サンプルテストファイル (SkeletonResourceTests.java) が、インストール CD の/REF ディレクトリに用意されています。
デバッグに適切なログレベルを設定します。
たとえば、最初のデバッグパスには、ログレベル (最大デバッグ出力) を 4 まで上げ、ログファイルのパスを設定し、最大ファイルサイズを指定します。
アダプタを起動すると、すべてのリソース設定がこのログファイルに書き込まれます。この情報を基に、アダプタが起動したこと、全ての設定の変更内容が保存されたことを確認できます。
アダプタをコンパイルしてテストします。
テストプログラムをコンパイルするには、コマンドウィンドウを開いて javac -dtest/filename.java コマンドを入力します。このコマンドは、適切な com/waveset/adapter/test ディレクトリにクラスファイルを作成します。
このクラスファイルを使用して新アダプタをテストするには、コンパイルしたアダプタが com/waveset/adapter ディレクトリにあることを確認して、次のコマンドでこのアダプタを実行してください。
java– D waveset.home=path com.waveset.adapter.test. MyResourceAdapter |
リソースの HTML ヘルプファイルを作成します。
サンプルのヘルプファイルが、com/waveset/msgcat/help/resources ディレクトリの idm.jar ファイルに用意されています。
アプリケーションのオンラインヘルプを記載する方法については、『Sun Identity Manager Deployment Reference』を参照してください。
(Active Sync が有効なアダプタの場合のみ) 最後のリソースで同期をリセットするには、XmlData SYNC_resourceName オブジェクトを削除します。
エラーログを読み、アダプタを修正します。
ログレベルをリセットします。
たとえばレベル 2 のデバッグを指定すると、アダプタ設定とエラーに関する情報が表示されますが、ログの詳細量が管理できるレベルまでに制限されます。
Identity Manager を起動する前に、resource.adapters エントリの下にあるアダプタ名を設定して $WSHOME/config/Waveset.properties ファイルにある新アダプタを特定しておく必要があります。そうしないと、Identity Manager がそのアダプタを認識できません。
アダプタとその関連ヘルプファイルを Identity Manager にインストールします。
Identity Manager がディスプレイ内の新アダプタのインスタンスを認識できるようにする前に、そのタイプの新リソースを「リソースのリスト」ページから作成しておく必要があります。
このページから「新規」>「新アダプタ」の順に選択し、「リソースウィザード」から新アダプタを作成します。
Identity Manager で、そのリソースにリソースとユーザーを作成します。
Active Sync 有効アダプタをトラブルシューティングする際、XmlData SYNC_resourceName オブジェクトを編集して Active Sync 同期プロセスの MapEntry を「デバッグ」ページから削除していれば、アダプタが最初に検出された変更点からやり直します。
IAPI イベントを使用した場合に、最後に処理した変更値などのリソースの同期状態を格納するには、Property() メソッドを設定する必要があります。このメソッドを設定すると、アダプタのトラブルシューティングに非常に役立ちます。過去の変更内容を実行して無視するようにアダプタを設定することができます。それ以降は、アダプタを修正して、変更結果をアダプタのログファイルに表示できるようになります。
使用中のリソースが Active Sync リソースの場合は、そのリソースの編集ページでログを有効にしていれば、さらに情報が表示されることもあります。ログレベル (0-4) を設定し、ログファイルの書き込み先となるファイルパスを設定します ( resource_name.log など)。
(Active Sync 有効アダプタの場合のみ) 最後のリソースの同期を再起動します。
LoginConfig 関連の変更点をデバッグするには、次を行う必要があります。
選択したファイルのトレースを有効にし、メソッド/クラスレベル 1 トレースで次のクラスをトレースします。
com.waveset.security.authn.WSResourceLoginModule
com.waveset.session.LocalSession
com.waveset.session.SessionFactory
com.waveset.ui.LoginHelper
com.waveset.ui.web.common.ContinueLoginForm
com.waveset.ui.web.common.LoginForm
Telnet で、次のようにシングルサインオン (SSO) のパススルー認証ログインをテストします。
SSO ログインモジュールを正しく設定したら、HTTP ポートに直接 telnet し、HTTP 要求を login.jsp に送信します。
次の要求を telnet セッションに貼り付けます。これには、sm_user HTTP ヘッダーを検索する SSO ログインモジュールが記載されています。
HEAD /idm/login.jsp HTTP/1.0 Accept: text/plain,text/html,*/* Accept-Language: en-us Accept-Encoding: gzip, deflate User-Agent: Mozilla/4.0 Host: LOCALHOST sm_user: Configurator |
トレースに、ユーザーが正常にログインしたと表示されます。例を示します。
2003.07.08 14:14:16.837 Thread-7 WSResourceLoginModule#checkForAuthenticatedResourceInfo() Found authenticated resource accountId, ’Configurator@Netegrity SiteMinder’on Identity Manager user ’Configurator’. null null 2003.07.08 14:14:16.837 Thread-7 WSResourceLoginModule#checkForAuthenticatedResourceInfo() Exit null null 2003.07.08 14:14:16.837 Thread-7 WSResourceLoginModule#login() Exit, return code = true null null 2003.07.08 14:14:16.847 Thread-7 LocalSession#login() Login succeeded via Netegrity SiteMinder null null 2003.07.08 14:14:16.847 Thread-7 LocalSession#login() Overall authentication succeeded null null 2003.07.08 14:14:16.897 Thread-7 LocalSession#checkIfUserDisabled() Entry null null 2003.07.08 14:14:16.897 Thread-7 LocalSession#checkIfUserDisabled() Exit null null 2003.07.08 14:14:16.927 Thread-7 LocalSession#login() Exit null null |
ここでは、よくあるアダプタ接続問題のデバッグ方法について説明します。
このセクションのトピックは、次のように構成されています。
通常、アダプタクラスの com.waveset.adapter.adapter_classname をトレースすれば、アダプタの接続問題を特定できます。例を示します。
com.waveset.adapter.ADSIResourceAdapter
トレースを有効にする手順については、「Identity Manager サーバーのトレース」を必要に応じて参照してください。
よくある認証問題には、次のようなものがあります。
認証プロパティーが欠落している。
指定した DataSource タイプのプロパティー名をトレースの名前セット出力に含める必要があります。
Identity Manager ユーザーに、一致するリソースアカウントがない。
リソースアダプタの認証に成功したが、リソースアカウント ID と一致する Identity Manager ユーザーが見つからなかったという例外が発生した場合は、そのユーザーに関連付けられているリソースの accountId が、リソースアダプタの認証メソッドで返された accountId と同じであることを確認してください。
Identity Manager ユーザーのリソース accountId を検証するには、Identity Manager の「トレース設定の編集」ページ (debug/Show_Trace.jsp ) をレビューします。不一致が合った場合は、authenticate メソッドから返される名称を変更するか、使用リソースの ID テンプレートを変更してください。テンプレートは、authenticate メソッドで返される accountId と一致するリソース accountId を生成する必要があります。
カスタム Active Sync アダプタで最もよくある問題は、フォーム関連のものです。この種のエラーは通常、必須フィールドにパスワードや電子メール情報など必要な情報を入力しなかったために起こります。
Identity Manager は、ビューの最終 XML の後に、フォーム検証エラーをアダプタログに出力します。例を示します。
20030414 17:23:57.469: result from submit (blank means no errors): 20030414 17:23:57.509: Validation error: missing required field password |
Identity Manager は、アダプタログにすべてのメッセージも出力します。このメッセージには、アカウント作成時と更新時、アダプタエラー、スキーママップデータなどが記載されます。
Active Sync リソースアダプタは、最後に処理した変更内容についての情報を SYNC.resourceName XMLData オブジェクトに格納します。
次に、よくある Domino ゲートウェイとアダプタの設定エラーと、この問題の解決手順を説明します。
エラーメッセージに「"新しい Domino ゲートウェイ" にアクセスできません、接続が拒否されました」というエラーメッセージが表示された場合は、Identity Manager のゲートウェイを終了して再起動してみてください。
「ID ファイル名が指定されていません、userID ファイルへのパスが正しく設定されていません」というエラーメッセージが表示された場合は、userID の目標位置を指定し、リソースアダプタを編集してこの属性を正しいパスに設定します。通常、userID ファイルの目標位置は、ゲートウェイのインストール先ディレクトリにあります。
「このサーバーを使用する権限がありません。」というエラーメッセージが表示された場合は、ID ファイルに正しいアクセス権限が設定されていません。このファイルに正しい権限を指定してから、やり直してください。
RACF、ACF2、または TopSecret のホストアダプタが接続を再利用できなかったりキャッシュできないと、ユーザーが頻繁にログインしなくてはならなくなります。これにより、パフォーマンスに悪影響を与えます。この問題は、キャッシュのタイムアウト設定に原因があることがよくあります。
キャッシュのタイムアウト設定を確認するには、Identity Manager のアダプタ接続プールを次のようにトレースします。
Identity Manager の「Edit Configuration Object」ページから、com.waveset.adapter.HostConnPool#reapConnections メソッドをレベル 4 でトレースします。
トレースを有効にする手順については、「Identity Manager サーバーのトレース」を必要に応じて参照してください。
アダプタが操作を実行中に、十分な長さの期間のトレースを取り込みます (最低 30-60 分)。
アプリケーションサーバーの stdout のトレース出力またはトレースファイルをレビューして、Info reaping connection エントリを見つけます。
もしもこのエントリが 30 分おきに 1 回以上発生している場合は、接続が不必要にタイムアウトになっているということです。
この問題を解決するには、Idle Timeout リソース属性値を上げて、接続が頻繁にリープされすぎないようにします。Idle Timeout 属性値は、接続がログアウトされるまでのアイドル期間を制御します。デフォルト値は 90 秒ですが、これですと新たなログインが頻繁に発生します。
理想的には、配備環境に合わせて、平均的なアイドル時間より長い値を指定してください。たとえば、Idle Timeout 属性値を 30 分 (1800000 ミリ秒) 以上に調節します。
ここでは、次のような PeopleSoft のアダプタ問題をトラブルシューティングする方法について説明します。
PeopleSoft リソースアダプタから「テスト接続」を実行すると、多様な例外状態が発生する原因となります。
Waveset.properties ファイルを開き、 exception.trace=true を設定します。
テスト接続を再試行し、次のような結果が表示される場合があります。
FormState: expansion complete java.lang.NullPointerException: PSProperties not loaded from file WavesetException: WavesetException: ==> com.waveset.util.WavesetException: FormState: derivation Log in to the PeopleSoft web interface to verify that you are using the correct UID and password. |
この PeopleSoft アプリケーションサーバーのログには、ログインしようとしている試行がありません。
この問題は、接続先の PeopleSoft インストールに付属している psjoa.jar ファイルを使用しなかったためによく起こります。(PeopleSoft リソースアダプタの詳細は、『Sun Identity Manager 8.1 リソースリファレンス』 を参照してください。)
SAP or SAP HR Active Sync アダプタから SAP システムへの接続をテストしようとしてエラーが発生した場合は、コマンドウィンドウを開き、インストール先ディレクトリ WEB-INF/lib からこのコマンドを実行します。
java -jar sapjco.jar
sapjco.jar コマンドは、インストールされている SAP Java Connector (JCO) のバージョンと、このアダプタが正しくインストールされているかを表示します。このコマンドは、JavaTM Native Interface (JNITM) の参照先プラットフォーム、および SAP システムと通信している RFC ライブラリも返します。
この参照先プラットフォームのライブラリが見つからない場合は、SAP マニュアルを参照して、SAP Java Connector の正しいインストール方法を調べてください。
ここでは、UNIX アダプタによくある問題をデバッグする方法について説明します。
UNIX リソースアダプタへのプロビジョニング中にタイムアウトエラーが表示された場合は、最大ログ出力が得られるメソッド/クラスレベル 4 で com.waveset.adapter.ScriptedConnection をトレースすれば、プロビジョニングプロセスが失敗している場所を見つけることができます。
管理上のコマンドを実行する root になるときに、リソースアダプタが su root コマンドを su - root コマンドの代わりに実行すると、カスタムプロンプトなど、root に定義されているカスタム環境変数が環境に何も継承されなくなります (PS1 の環境変数)。
UNIX アダプタを設定する際、次のようにすれば Root Shell Prompt フィールドに入力すべきプロンプトを判断できます。
「ログインユーザー」フィールドに指定したユーザーでシステムに Telnet または ssh します。
パスワードを入力してログインしたら、ダッシュなしで su root を入力して改行キーを押します。
root パスワードを入力します。
次に表示されたプロンプトが、Root Shell Prompt フィールドに入力すべきプロンプトです。