- PR -

Windows2000およびWindowsXPにおけるKerberos認証について

1
投稿者投稿内容
ゆいたん
ベテラン
会議室デビュー日: 2004/08/26
投稿数: 91
投稿日時: 2004-09-14 09:48
件名に関して質問させていただきます。

kerberos認証を使用するJavaアプリケーションを作成しています。
KDCはWindows2000です。
JDKは1.4.2_05です。
Windows2000では問題なく動作していますが、WindowsXPでuseTicketCacheが効かないのか
IDおよびパスワードの入力を促されます。Windows2000と同じ動作にしたいのですが、
何か情報がありましたらご教授ください。
なお、促されるままに入力を行えば、コンテキストの取得はできます。

やっていること

1.jreのlib/securityにjaas.confおよびkrb5.confを配置

--jaas.conf
SampleClient {
com.sun.security.auth.module.Krb5LoginModule required useTicketCache=true;
};

--krb5.conf
[libdefaults]
default_realm = TEST.LOCAL
default_tkt_enctypes = des-cbc-md5 ; or des-cbc-crc
default_tgs_enctypes = des-cbc-md5 ; or des-cbc-crc
[realms]
TEST.LOCAL = {
kdc = kdcserver.test.local:88
}

2.クラスを作成

--KerberosClient.java
import javax.security.auth.Subject;
import javax.security.auth.login.LoginContext;
import javax.security.auth.login.LoginException;
import com.sun.security.auth.callback.TextCallbackHandler;
public class KerberosClient {
public static void main(String[] args) {
LoginContext lc = null;
try {
lc = new LoginContext("SampleClient", new TextCallbackHandler());
lc.login();
}
catch (LoginException le) {
le.printStackTrace();
System.out.println("e: " + le) ;
}
Subject mySubject = lc.getSubject();
System.out.println(mySubject.getPrincipals().toString());
}
}

3.実行
以下のVM引数つきで2.のクラスを実行
-Djava.security.auth.login.config=C:/j2sdk1.4.2_05/jre/lib/security/jaas.conf

4.結果

--Windows2000
System.out.println(mySubject.getPrincipals().toString());が実行され
testuser@TEST.LOCALが表示される。

--WindowsXP
ID、パスワードの入力を促される。促されたとおりに入力すれば、Windows2000と
同様の状態になる。誤ったID、パスワードを入力すると、Exception。

以上

> 追加情報です。
Etherealでパケットをとってみました。
Windows2000の場合、TGS-REQが起こります。XPの場合、起こりません。
# やはり、useTicketCacheが効いていないのでしょうか。。。
XP+JavaでTGTの提出ができている方がいらっしゃいましたら、
ご助言ください。

以上

[ メッセージ編集済み 編集者: ゆいたん 編集日時 2004-09-22 15:22 ]
ゆいたん
ベテラン
会議室デビュー日: 2004/08/26
投稿数: 91
投稿日時: 2004-09-24 18:21
継続調査でわかったこととそれに対して行ったことを記述します。

Windowsのリソースキットのkerbtray.exeでKerberosチケットの
違いを調べました。違いはKey Encryption Typeで、プログラムが
動くほう(Windows2000)は[eType 0]、動かないほう(windowsXP)が
[RSADSI RC4-HMAC]でした。Internetをいろいろ調べたところ、
暗号強度の違いということがわかりました。

それではということでkrb5.confを変更しました。
default_tkt_enctypes = rc4-hmac ; or rc4-hmac-exp
default_tgs_enctypes = rc4-hmac ; or rc4-hmac-exp

しかし結果は変わりませんでした。

設定がまずいのでしょうか。それともそもそも128bit暗号化だと
この手法自体がNGなのでしょうか。
# XPの暗号強度を下げるやりかたがわかれば試すんですが。。。

何か情報がありましたら、よろしくお願いいたします。
1

スキルアップ/キャリアアップ(JOB@IT)