認証は様々な理由で失敗することがあります。この項では、認証失敗のトラブルシューティング方法を説明します。Enterprise Managerが外部認証を使用して構成されている場合、LDAPまたはSSO WebLogic認証プロバイダがユーザーを認証します。認証が成功すると、Enterprise Managerの認証レイヤーにより、ユーザーがEnterprise Managerリポジトリに存在するかどうかが確認されます。認証に失敗した場合、Enterprise Manager管理者は../gc_inst/user_projects/domains/GCDomain
ディレクトリにあるldap_trace.logATNを確認する必要があります。このファイルには、LDAPオーセンティケータからの認証エントリが含まれます。そのファイルが存在しない場合には、WebLogicデバッグ・フラグ(DebugSecurityAtn)を有効にする必要があります。
WebLogic Serverコンソールから、ロギングを有効化するため、WebLogicデバッグ・ログ・レベルを設定し、デバッグ・フラグを有効にします。
ここでは、ユーザーjohndoeが不正な資格証明を使用してログインしようとしている場合を考えてみます。次のような出力がldap_trace.logATNに表示されるはずです。resultCodeが49でゼロ以外のため、不正なパスワードであることを示しています。
12:39:36.529 ldc=3 Connected to ldaps://<ldaphost>:3060 12:39:36.529 ldc=3 op=215 BindRequest {version=3, name=cn=orcladmin, authentication=********} 12:39:36.566 ldc=3 op=215 BindResponse {resultCode=0} 12:39:36.568 ldc=3 op=216 BindRequest {version=3, name=cn=johndoe,cn=Users,dc=us,dc=company,dc=com, authentication=********} 12:39:36.608 ldc=3 op=216 BindResponse {resultCode=49}
ユーザーjohndoeがLDAPプロバイダにより正常に認証されてもEnterprise Managerリポジトリに存在しない場合には、ldap_trace.logATN (resultCodeは0となっている)にはエラーはありませんが、Enterprise Managerのログファイルemoms.log (../gc_inst/em/sysman/logの配下)は次のようになっているはずです。
2013-05-28 12:47:43,295 [[ACTIVE] ExecuteThread: '3' for queue: 'weblogic.kernel.Default (self-tuning)'] WARN auth.EMRepLoginFilter doFilter.457 - InvalidEMUserException caught in EMRepLoginFilter: Failed to login using external authentication for user: johndoe oracle.sysman.emSDK.sec.auth.InvalidEMUserException: Failed to login using external authentication for user: johndoe at oracle.sysman.emSDK.sec.auth.EMLoginService._performLogin(EMLoginService.java:1269) at oracle.sysman.emSDK.sec.auth.EMLoginService._doSSOLogin(EMLoginService.java:754) at oracle.sysman.emSDK.sec.auth.EMLoginService.doSSOLogin(EMLoginService.java:727) at oracle.sysman.emSDK.sec.auth.EMLoginService.doLogin(EMLoginService.java:228) at oracle.sysman.emSDK.sec.auth.EMLoginService.doLogin(EMLoginService.java:256)
emoms.trc
の詳細なデバッグ・データを得るため、次のコマンドによりEnterprise Managerの認証ログ出力を有効にできます。
emctl set property -name "log4j.category.oracle.sysman.core.security.auth" -value "DEBUG, emtrcAppender
emctl list propertiesを実行すると、次のような出力が表示されます。
log4j.category.oracle.sysman.core.security.auth=DEBUG, emtrcAppender
注意:
パフォーマンス上の理由で、このデバッグ出力を有効なままにしないでください。認証の問題が診断されたら、emctl delete property -name ".category.oracle.sysman.core.security.auth"を使用してこのログ出力をオフにしてください。
他に、ldap_trace.logATNにおいてresultCodeがゼロ以外になることがありますが、それはLDAP認証レイヤーでの他のタイプの失敗を示しています。LDAPサーバーから結果のフェッチを試行しているときにプロバイダがタイム・アウトになった場合、次のような結果がファイルに出力されます。
09:36:44.168 ldc=2 op=214 AbandonRequest {msgid=213}
この問題を修正するには、LDAPプロバイダの「結果タイム・リミット」構成パラメータの値を増やします。
場合によっては、ldap_trace.logATNでは詳細がわからないこともあります。その場合、構成された外部認証プロバイダの診断ログEMGC_OMS1-diagnostic.logでエラーまたは警告を確認します。
LDAPサーバーとOMSホストとの間に断続的なネットワーク問題があったり、入力として与えられた検索ベースが広すぎる場合などがあります。OMSホストのOSに用意されたldapsearchコマンドを使用して、接続または結果の取得タイミング問題を検証できます。このコマンドは、すべてのオペレーティング・システムで使用できるわけではありません。他のLDAPツールを使用することもできます。次に例を示します。
ldapsearch -h hostname -p 3060 -D cn=orcladmin -x -w xxxxxxx -b "cn=users,dc=us,dc=oracle,dc=com" -s one -l 5 -z 15
説明:
lh - ldapサーバーのホスト名
p - ldapサーバーのポート
D - バインドdn
x - SASLではなく単純な認証を使用
w - 前述のバンドdnのパスワード
l - 検索が完了するタイム・リミット(秒)
b - 検索ベース
s - 範囲検索の指定
z - 返される検索結果エントリの制限の指定
-bオプションにユーザーおよびグループ・ベースdn(emctlコマンドで指定する)を指定して、適切な結果が返され、期待した時間枠内であることを確認できます。
遅延やタイムアウトが見え始めた場合には、Enterprise Managerがインストールされているのと同じマシンからこのコマンドを実行し、LDAPサーバーまたはネットワーク関連でないことを確認します。