1. ホーム

クラスタへのJava apiアクセス(Kerberos認証が通らない)

2022-02-14 16:30:23
<未定義 <パス

ローカル環境からクラスタへのアクセスOK
本番環境ではエラーが報告される

ログメッセージを調べてみると、Kerberos認証時のドメイン解決に問題があるのか!?
そこで、試しにローカルのJavaアクセスクラスタのコードをIPに変更してみたところ、エラーが報告されました

Caused by: org.ietf.jgss.GSSException: No valid credentials provided (Mechanism level: Server not found in Kerberos database (7) - LOOKING_UP_ SERVER)
	at sun.security.jgss.krb5.Krb5Context.initSecContext(Krb5Context.java:770)
	at sun.security.jgss.GSSContextImpl.initSecContext(GSSContextImpl.java:248)
	at sun.security.jgss.GSSContextImpl.initSecContext(GSSContextImpl.java:179)
	at com.sun.security.sasl.gsskerb.GssKrb5Client.evaluateChallenge(GssKrb5Client.java:192)
	... 90 common frames omitted
Caused by: sun.security.krb5.KrbException: Server not found in Kerberos database (7) - LOOKING_UP_SERVER
	at sun.security.krb5.KrbTgsRep.<init>(KrbTgsRep.java:73)
	at sun.security.krb5.KrbTgsReq.getReply(KrbTgsReq.java:251)
	at sun.security.krb5.KrbTgsReq.sendAndGetCreds(KrbTgsReq.java:262)
	at sun.security.krb5.internal.CredentialsUtil.serveCreds(CredentialsUtil.java:308)
	at sun.security.krb5.internal.CredentialsUtil.acquireServiceCreds(CredentialsUtil.java:126)
	at sun.security.krb5.Credentials.acquireServiceCreds(Credentials.java:458)
	at sun.security.jgss.krb5.Krb5Context.initSecContext(Krb5Context.java:693)
	... 93 common frames omitted
Caused by: sun.security.krb5.Asn1Exception: Identifier doesn't match expected value (906)
	at sun.security.krb5.internal.KDCRep.init(KDCRep.java:140)
	at sun.security.krb5.internal.TGSRep.init(TGSRep.java:65)
	at sun.security.krb5.internal.TGSRep.<init>(TGSRep.java:60)
	at sun.security.krb5.KrbTgsRep.<init>(KrbTgsRep.java:55)
	... 99 common frames omitted


ローカルでIPに直接アクセスするとKerberos認証は機能しないが、ドメイン名に変更すると機能する
(ホストマッピングはローカルで設定します)
2日間のトラブルシューティングの後、ようやく問題が見つかりました。

本番環境のkrb5.confファイルに、dnsアクセスをオフにする設定があります。つまり、クラスタはホストを通して直接通信し、DNSサーバーを使用しないのですか!

pingも通るし、IPやドメイン名の解決エラーもないはずなので、クラスタの構成に問題があるのかなと思いました。

解決方法
本番環境用のIPとドメインのマッピングを設定するだけです。

授業後の課題です。

#Local domain name resolution
/etc/host.conf
#DNS servers
/etc/resolv.conf
#Local or DNS priority
/etc/nsswitch.conf