Java는 Linux 클라이언트 캐시에서 TGT를 얻을 수 없습니다.

Java는 Linux 클라이언트 캐시에서 TGT를 얻을 수 없습니다.

RHEL5.5에서 Kerberos 서버와 OpenLDAP를 설정했습니다. 또한 클라이언트로 RHEL6 시스템이 있습니다. jaasLinux 클라이언트에서 OpenLDAP 서버를 쿼리하기 위해 Java 프로그램을 실행했습니다 .

클라이언트의 키탭을 클라이언트 시스템에 복사하고 다음 구성 옵션을 사용하면 OpenLDAP 서버에 쿼리할 수 있습니다.

principal=wpingli
useKeyTab=true
keyTab="/home/wpingli/ker/java/wpingli_new.keytab";

사용자/비밀번호를 묻는 메시지가 나타나면 OpenLDAP 서버에 쿼리할 수도 있습니다. 이것은 내 환경이 좋다고 믿게 만듭니다.

그러나 다음 이후에 Java 프로그램을 실행하면 kinit:

klist
[wpingli@pli java]$ klist
Ticket cache: FILE:/tmp/krb5cc_500
Default principal: [email protected]
Valid starting Expires Service principal
10/20/11 16:18:06 10/21/11 16:18:02 krbtgt/[email protected]

jaas configuration
GssExampleSUN{
com.sun.security.auth.module.Krb5LoginModule required
client=true
debug=true
doNotPrompt=true
useTicketCache=true
ticketCache="/tmp/krb5cc_500";
};

Exception:
Debug is true storeKey false useTicketCache true useKeyTab false doNotPrompt true ticketCache is /tmp/krb5cc_500 isInitiator true KeyTab is null refreshKrb5Config is false principal is null tryFirstPass is false useFirstPass is false storePass is false clearPass is false
Acquire TGT from Cache
Principal is null
**null credentials from Ticket Cache
[Krb5LoginModule] authentication failed
Unable to obtain Princpal Name for authentication
Authentication attempt failedjavax.security.auth.login.LoginException: Unable to obtain Princpal Name for authentication**

이 문제를 어떻게 해결할 수 있나요?

답변1

Java는 지원되는 모든 암호화 유형을 반드시 지원하지는 않습니다(아마도 MIT kinit) libkrb5.

파일 libkrb5에 사용되는 암호화 유형은 krb5.conf일반적으로 에서 구성할 수 있습니다 /etc. 예를 들어(반드시 가장 안전하지는 않음):

# default_tgs_enctypes = aes256-cts arcfour-hmac-md5 des3-hmac-sha1 des-cbc-crc des-cbc-md5
default_tgs_enctypes = des3-hmac-sha1 des-cbc-crc des-cbc-md5

# default_tkt_enctypes = aes256-cts arcfour-hmac-md5 des3-hmac-sha1 des-cbc-crc des-cbc-md5
default_tkt_enctypes = des3-hmac-sha1 des-cbc-crc des-cbc-md5

# permitted_enctypes = aes256-cts arcfour-hmac-md5 des3-hmac-sha1 des-cbc-crc des-cbc-md5
permitted_enctypes = des3-hmac-sha1 des-cbc-crc des-cbc-md5

지원되는 암호화 유형은 JRE 공급업체/버전 및 해당 보안 공급자에 따라 다릅니다.

다음은 Java 6(Oracle JRE) 설명서에 대한 링크입니다.

관련 정보