Java não pôde obter o TGT do cache no cliente Linux

4

Eu configurei um servidor Kerberos e o OpenLDAP no RHEL5.5. Eu também tenho uma máquina RHEL6 como cliente. Eu executei meu programa Java usando jaas para consultar o servidor OpenLDAP a partir do cliente Linux.

Eu posso consultar o servidor OpenLDAP se eu copiar o keytab do cliente na máquina cliente e usar as seguintes opções de configuração:

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

Eu também posso consultar o servidor OpenLDAP se eu for solicitado a inserir o usuário / senha. Isso me leva a acreditar que meu ambiente é bom.

No entanto, não consigo consultar o servidor se eu executar meu programa Java após 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**

Como posso corrigir isso?

    
por ricky_ru 21.10.2011 / 03:04

1 resposta

5

O Java não suporta necessariamente todos os tipos de criptografia suportados pelo (presumivelmente MIT) kinit ( libkrb5 ).

É possível configurar os tipos de criptografia usados por libkrb5 no arquivo krb5.conf (geralmente em /etc ). Por exemplo (não necessariamente os mais seguros):

# 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

Quais tipos de criptografia são suportados dependerão do fornecedor / versão do JRE e de seus provedores de segurança.

Aqui está um link para a documentação do Java 6 (Oracle JRE):

por 24.10.2011 / 05:00