5 テストおよびトラブルシューティング

コネクタをデプロイした後、テストを行いコネクタが正常に機能することを確認する必要があります。

この章では、コネクタのテストに関連する次のトピックについて説明します。

5.1 コネクタのテスト

OIM Lotus Notes/Dominoコネクタ・パッケージに付属するテスト・ユーティリティを使用して、構成可能なターゲット・リソースで基本的なプロビジョニング操作(作成、更新または削除)をテストできます。ICFを使用してテスト・ユーティリティを実装して、Dominoアイデンティティ・コネクタ上でコネクタ操作を呼び出します。これは、OIMにデプロイされるDominoコネクタとよく似たアプローチです。コネクタ・サーバーを使用するようにテスト・ユーティリティを構成できます。

ノート:

テスト・ユーティリティを実行する前に、Notes.jarファイルをJAVA_HOME/jre/lib/extに置いておくか、classpathに指定しておく必要があります。

テスト・ユーティリティを使用するには、次のステップを実行します。

  1. CLASSPATH変数を設定して、次のjarsファイルを含めます:
    • connector-framework.jar

    • connector-framework-internal.jar

    • groovy-all.jar

    ノート:

    これらのファイルはOIM EARアプリケーションの一部として提供され、oim.ear/APP-INF/libディレクトリにあります。

    テスト・ユーティリティを実行するには、これら3つのjarファイルをJAVA_HOME/jre/lib/extフォルダに追加する必要があります。

  2. OIM Dominoコネクタzipファイルを解凍します。
  3. test-utilityディレクトリを見つけます。
  4. example-config.groovyファイルを更新して、ローカル設定を反映させます。example-config.groovyファイルのコンテンツを次に示します。
    >>>> example-config.groovy >>>>>>>>
    import org.identityconnectors.common.security.GuardedString
     
    // ICF  Configuration
    icf {
        bundleName = 'org.identityconnectors.domino'
        bundleVersion = '2.0.1'
        connectorName = 'org.identityconnectors.domino.DominoConnector'
        //bundle = ''
        // Configure your connector server instance
        connectorServer {
            host = 'myhost'
            port = 8759
            key = 'mykey'
        }
    }
     
    // Connector Configuration - update with your environment information
    connector {
        adminIdFile = 'c:\\Notes85\\Data\\user.id'
        adminName = 'administrator/ACME'
        adminPassword = new GuardedString)
        administrationServer = 'myreg.server.example.com'
        certifierIdFile = 'c:\\data\\cert.id'
        certifierPassword = new GuardedString)
        createIdFile = true
        createMailDB = false
        registrationServer = 'mycert.server.example.com'
        userDatabaseName = 'names.nsf'
        mailFileAction = 2
    }
     
     
    // put your own data here
    first = 'tuFirst'
    last = 'tuLast'
    certorg = '/ACME'
     
    // Create Account Attribute, no need to change it
    create {
        FirstName = first
        LastName = last
        __NAME__="${first} ${last} ${certorg}".toString()
        ShortName = first[0].toLowerCase() + last
        __PASSWORD__ = new GuardedString("somepassword1".toCharArray())
        CertifierOrgHierarchy = certorg
    }
     
    // Update Account Attribute, no need to change it
    update {
        FirstName = "updated"
    }
     
    // Flag if the created account should be deleted, comment the whole section if you don't want the user to be deleted
    delete {
    }
     
    <<<<< end of example-config.groovy <<<<<<<
    

    ファイルは、次のセクションに分かれています。

    • ICFセクションには、次のプロパティが含まれます。

      プロパティ名 説明

      bundleName、bundleVersion、connectorName

      テスト・ユーティリティで使用するアイデンティティ・コネクタを示します。この情報はDominoアイデンティティ・コネクタ用に事前構成されているため、ここで変更する必要はありません。

      connectorServer

      環境に基づいてこのセクションを更新します。

      host

      コネクタ・サーバー・ホスト(ホスト名またはIPアドレス)

      port

      コネクタ・サーバー・ポート

      key

      コネクタ・サーバー・キー

    • コネクタ・セクションには、アイデンティティ・コネクタ専用の構成情報が含まれ、この構成はOIMのITリソース構成と似ています。このセクションの構成プロパティは、Lotus Notes ITリソースの構成プロパティと同じです。

      表5-1 ITリソースのパラメータ

      パラメータ 説明

      adminIdFile

      管理者IDファイルへの完全修飾パス。

      たとえば: C:\Lotus\Notes\Data\admin.id

      adminName

      管理者/ACMなどの管理者アカウント名。

      adminPassword

      管理者のパスワード。

      administrationServer

      管理サーバーが実行されているホストの名前。

      certifierIdFile

      認証者IDファイルへの完全修飾パス。

      たとえば: C:\Lotus\Domino\Data\cert.id

      certifierPassword

      指定した認証者IDファイルのパスワード。

      createIdFile

      IBM Lotus Notes and DominoのRegister New User機能を呼び出す際に、IDファイルを使用してメール・ファイルを作成する場合は、Trueを入力します。それ以外の場合はFalseを入力します。

      デフォルトはTrueです。

      createMailDB

      ユーザーの作成時にメールを設定するかどうかを指定します。選択されている場合は(True)、アカウントの作成時にメールが設定されます。選択解除されている場合は(False)、最初のログイン時にメールが設定されます。

      デフォルトはTrueです。

      MailFileAction

      このパラメータを使用して、ユーザーを削除するときにメール・ファイルを削除する方法を指定します。

      次に示すいずれかの値を指定できます。

      • Delete None (0): この値を指定するとユーザーのメール・ファイルは保持されます。

      • Delete Home (1): この値を指定するとユーザーのホーム・サーバーのメール・ファイルは削除されます。

      • Delete All (2): この値を指定するとユーザーのホーム・サーバーとすべてのレプリカのメール・ファイルは削除されます。

      デフォルトは2です。

      registrationServer

      IDの作成時およびその他の登録機能の実行時に使用するサーバーの正規名を入力します。

      サンプル値: CN=MyServer/OU=MyOrg

      userDatabaseName

      ユーザー・データベースのファイル名を指定します。

  5. 次のコマンドを実行します。
    java -classpath ./test-utility.jar oracle.iam.connectors.testutility.Main example-config.groovy
    

    次のような出力が表示されます。

    jThread Id: 1    Time: 2011-04-19 20:22:21.316   Class:
    oracle.iam.connectors.testutility.TestUtility    Method: doTest  Level: OK 
    Message: Using remote connection info [{host=myhost.oracle.com, port=8759}]
    Thread Id: 1    Time: 2011-04-19 20:22:32.065   Class:
    oracle.iam.connectors.testutility.TestUtility    Method: doTest  Level: OK
    Message: Using ConnectorKey [ConnectorKey(
    bundleName=org.identityconnectors.domino bundleVersion=2.0.1
    connectorName=org.identityconnectors.domino.DominoConnector )]
    Thread Id: 1    Time: 2011-04-19 20:22:32.065   Class:
    oracle.iam.connectors.testutility.TestUtility    Method: doTest  Level: OK
    Message: Using ConnectorInfo
    [org.identityconnectors.framework.impl.api.remote.RemoteConnectorInfoImpl@12d26d2]
    Thread Id: 1    Time: 2011-04-19 20:22:32.067   Class:
    oracle.iam.connectors.testutility.TestUtility
    Method: doTest  Level: INFO     Message: Connector configured
    Thread Id: 1    Time: 2011-04-19 20:22:32.081   Class:
    oracle.iam.connectors.testutility.TestUtility    
    Method: doTest  Level: INFO     Message: Got Connector Instance, ready to do the tests
    Thread Id: 1    Time: 2011-04-19 20:22:32.086   Class:
    oracle.iam.connectors.testutility.TestUtility    Method: doTest  Level: INFO 
    Message: Running 'test' operation on connector
    Thread Id: 1    Time: 2011-04-19 20:22:32.086   Class:
    org.identityconnectors.framework.api.operations.TestApiOp        Method: test
    Level: OK Message: Enter: test()
    Thread Id: 1    Time: 2011-04-19 20:22:39.333   Class:
    org.identityconnectors.framework.api.operations.TestApiOp        Method: test
    Level: OK Message: Return: null
    Thread Id: 1    Time: 2011-04-19 20:22:39.333   Class:
    oracle.iam.connectors.testutility.TestUtility    Method: doTest  Level: INFO
    Message: 'test' operation succeeded
    Thread Id: 1    Time: 2011-04-19 20:22:39.333   Class:
    oracle.iam.connectors.testutility.TestUtility    Method: doTest  Level: INFO
    Message: Running 'create' operation on connector
    ... etc
    

5.2 トラブルシューティング

次の表に、IBM Lotus Notes and Dominoコネクタに関して発生する一部の一般的な問題に対する解決策を示します。

問題の詳細 解決方法

nlsxbe.dllが見つからない。

  • Notesインストール・ディレクトリがPATHに含まれていることを確認します。

  • LD_LIBRARY_PATHにNotesインストール・ディレクトリを設定します。

ノート: Domino ServerとLotus Notesを同じサーバーに置くことはお薦めしません。テストのためにそのようにする場合は、LD_LIBRARY_PATHがDominoディレクトリではなくNotesディレクトリを指していることを確認してください。また、Dominoのインストール場所がPATH変数に含まれないようにします。これは、コネクタの正常な動作と競合する可能性があります。

Oracle Identity ManagerがIBM Lotus Notes and Dominoサーバーとの接続を確立できない。

  • IBM Lotus Notes and Dominoサーバーが稼働中であることを確認します。

  • Oracle Identity Managerが稼働していることを確認します。

  • すべてのアダプタがコンパイルされていることを確認します。

  • 「ITリソース」フォームを使用して、Oracle Identity Managerレコードを調べます。

Oracle Identity Manager管理およびユーザー・コンソールで、操作に失敗したという内容のメッセージが表示される。

  • 属性値にデリミタ文字(空白)が含まれていないことを確認します。

  • 属性値が指定された長さを超えていないことを確認します。

パスワードのプロンプトがユーザーに中断されました

CertPwd ITリソース・パラメータの値として指定した認証者アカウント・パスワードが正確ではありません。正確なパスワードを指定して、再試行します。

宛先パスは存在しません

IDFilePath ITリソース・パラメータの値として指定したディレクトリ・パスが正確ではありません。正確なパスを指定して、再試行します。

制限付き操作はサーバーで許可されません

ユーザーIDがAdmin ITリソース・パラメータに指定されている管理者は、「Full Access Administrator」リストに含まれている必要があります。管理者がこのリストに含まれていることを確認して、再試行します。

IDファイルをオープンできませんでした

CertPath ITリソース・パラメータの値として指定した認証者のIDファイルのパスが正確ではありません。正確なパスを指定して、再試行します。

ファイルがありません(<username>)

MailTemplateName ITリソース・パラメータの値として指定したメール・テンプレート・ファイルの名前が正確ではありません。ターゲットDominoサーバーにメール・テンプレート・ファイルが存在することを確認します。通常このファイルは、Dominoサーバーのデータ・ディレクトリにあります。正確なメール・テンプレート・ファイル名を指定して、再試行します。

たとえば、IBM Lotus Notes and Domino Serverバージョン6.xのメール・テンプレート・ファイルの名前はmail6.ntfです。

ユーザーを更新するときに次のエラーが発生します。

java.lang.IllegalArgumentException: Invalid Uid

certorgデータを手動で参照定義にプッシュするときは、certorgデータの英大文字と小文字の区別が維持されていることを確認してください。

ターゲット・ユーザー・リコンシリエーションの実行後にアカウントを変更すると、次のエラーが発生します:

error occurred in oracle.iam.provisioning.handlers.ModifyAppInstanceAccountActionHandler while modifying account with key 563 associated to user with key 9004 and the cause of the error is An error occurred in oracle.iam.provisioning.spi.DOBProvisioningMechanism/modify while modifying account with account id 563 for user ERROR and the cause of error is Thor.API.Exceptions.tcAPIException: Error occurred while setting form data for process instance with key 1271.. oracle.iam.ui.platform.exception.OIMRuntimeException: IAM-40600019 : An error occurred in oracle.iam.provisioning.handlers.ModifyAppInstanceAccountActionHandler while modifying account with key 563 associated to user with key 9004 and the cause of the error is An error occurred in oracle.iam.provisioning.spi.DOBProvisioningMechanism/modify while modifying account with account id 563 for user ERROR and the cause of error is Thor.API.Exceptions.tcAPIException: Error occurred while setting form data for process instance with key 1271.. at oracle.iam.ui.platform.exception.OIMErrorHandler.reportServiceException(OIMErrorHandler.java:178) at oracle.iam.ui.platform.exception.OIMErrorHandler.reportException(OIMErrorHandler.java:66) at oracle.adf.model.binding.DCDataControl.reportException(DCDataControl.java:429) at oracle.adf.model.binding.DCBindingContainer.reportException(DCBindingContainer.java:448) at oracle.adf.model.binding.DCBindingContainer.reportException(DCBindingContainer.java:503) at oracle.adf.model.binding.DCControlBinding.reportException(DCControlBinding.java:208) at oracle.jbo.uicli.binding.JUCtrlActionBinding.reportException(JUCtrlActionBinding.java:2292) at oracle.jbo.uicli.binding.JUCtrlActionBinding.doIt(JUCtrlActionBinding.java:1848) at oracle.adf.model.binding.DCDataControl.invokeOperation(DCDataControl.java:2350) at oracle.jbo.uicli.binding.JUCtrlActionBinding.invoke(JUCtrlActionBinding.java:835) at oracle.adf.controller.v2.lifecycle.PageLifecycleImpl.executeEvent(PageLifecycleImpl.java:414) at oracle.adfinternal.view.faces.model.binding.FacesCtrlActionBinding._execute(FacesCtrlActionBinding.java:257) at oracle.adfinternal.view.faces.model.binding.FacesCtrlActionBinding.execute(FacesCtrlActionBinding.java:215) at oracle.iam.ui.platform.utils.FacesUtils.executeOperationBinding(FacesUtils.java:188) at oracle.iam.ui.platform.utils.FacesUtils.executeOperationBindingFromActionListener(FacesUtils.java:130) at oracle.iam.ui.catalog.view.backing.CartReqBean.submit(CartReqBean.java:1250) at oracle.iam.ui.catalog.view.backing.CartReqBean.submitActionListener(CartReqBean.java:1152) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at com.sun.el.util.ReflectionUtil.invokeMethod(ReflectionUtil.java:181) at com.sun.el.parser.AstValue.invoke(AstValue.java:289) at com.sun.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:304) at org.apache.myfaces.trinidadinternal.taglib.util.MethodExpressionMethodBinding.invoke(MethodExpressionMethodBinding.java:62) at org.apache.myfaces.trinidad.component.UIXComponentBase.broadcastToMethodBinding(UIXComponentBase.java:2028) at org.apache.myfaces.trinidad.component.UIXCommand.broadcast(UIXCommand.java:183) at org.apache.myfaces.trinidad.component.UIXComponent.broadcastInContext(UIXComponent.java:373) at oracle.adf.view.rich.event.ProxyEvent.broadcastWrappedEvent(ProxyEvent.java:72) at oracle.adf.view.rich.component.fragment.UIXRegion._handleProxyEvent(UIXRegion.java:939)

回避策として、次のステップを実行します:
  1. Design Consoleで、フォーム・デザイナから「UD_LOTUS」フォームを選択します
  2. フォームの新しいバージョンを作成し、「プロパティ」をクリックして、必要なプロパティを「パスワード」フィールドから削除します。
  3. フォームを保存し、新しいバージョンをアクティブにします。