2012-12-12 20 views
15

Sto sviluppando utilizzando il GSSAPI e ho un codice che funziona con un server Vanber MIT Kerberos 5 per eseguire alcuni lavori client/server. Ora sto verificando la sua funzionalità contro Active Directory e ho riscontrato un problema.Impossibile ottenere il ticket di servizio Kerberos: KrbException: server non trovato nel database Kerberos (7)

Ho il mio server autenticato e in ascolto. Posso far accedere il client. Per la cronaca, questo è il codice basato su http://thejavamonkey.blogspot.com/2008/04/clientserver-hello-world-in-kerberos.html. Tuttavia, non riesco a ottenere il client per ottenere il biglietto indietro da AD per ottenere la sessione tra esso e il server. Ricevo KrbException: server non trovato nel database Kerberos (7), e non riesco a capire dove sia il posto giusto per aggiungerlo. Ho provato a mettere il nome del server con ip nel file hosts, aggiornando dns, inserendo record del server, ecc. Senza fortuna.

Se qualcuno sa dove è il posto giusto per aggiornare AD per impostare un server nel database Kerberos, sarebbe fantastico!

risposta

11

Questa eccezione viene dal client, giusto? Si prega di eseguire una ricerca DNS diretta e inversa del nome host del server. Il tuo server ha voci DNS errate. Sono assolutamente cruciali per Kerberos. Il posto giusto è il tuo server DNS, nel tuo caso: controller di dominio. Scopri l'indirizzo IP del tuo server DNS e contatta l'amministratore. L'altra opzione è un SPN mancante, per favore controlla anche questo.

+0

Questo è sul lato client in una configurazione di sviluppo. Ho il server AD impostato nel mio file/etc/hosts. Sia il codice client e server che sto testando sono sulla stessa scatola. Ho impostato il file HOSTS del sistema AD in modo che punti al sistema di sviluppo in una moltitudine di modi (nome host, nomehost.REALM, ecc.). Non riesco a capire come aggiungere il sistema di sviluppo al DNS AD, se questo è stato specificamente il problema. – ohshazbot

+0

Non è necessario manomettere il file hosts se i DN funzionano correttamente. Di nuovo, blocca il tuo amministratore le voci DNS sono rotte. È suo compito risolvere questo problema. Usa wireshark per ispezionare le ricerche DNS. –

+0

Non esiste un amministratore di sistema, sto lavorando su un sistema di sviluppo con un sistema Windows AD in esecuzione su una VM. Il mio sistema di sviluppo ha gli host impostati correttamente. Ho provato a impostare il file HOSTS di Windows e la voce DNS AD, senza alcun risultato. – ohshazbot

1

Questo sembra un problema SPN mancante. Il sito web che hai indicato ha principal = "webserver/[email protected]". Questo è il principio per il quale si otterrebbe il ticket. Hai modificato questo valore in un valore relativo al tuo dominio AD?

è possibile utilizzare la riga di comando Kerberos strumenti per verificare se avete la SPN definito: SPN basate

[[email protected] bin]# kinit Administrator 
[email protected]'s Password: 
[[email protected] bin]# kgetcred host/[email protected] 
[[email protected] bin]# klist 
Credentials cache: FILE:/tmp/krb5cc_0 
     Principal: [email protected] 

    Issued    Expires    Principal <br> 
Dec 15 11:42:34 2012 Dec 15 21:42:34 2012 krbtgt/[email protected] 
Dec 15 11:42:48 2012 Dec 15 21:42:34 2012 host/[email protected] 

nome host sono pre-definiti. Se si desidera utilizzare uno SPN che non è pre-definito si dovrà definire esplicitamente in AD utilizzando lo strumento Setspn.exe e associarlo a un computer o un account utente, ad esempio:

c:\> setspn.exe -A "webserver/[email protected]" myuser 

È possibile verificare a quale account è associato un SPN utilizzando il comando seguente. Questo non mostrerà SPN predefiniti.

c:\> setspn.exe -L "webserver/[email protected]" 
7

Spero che questo aiuta .. Ho ottenuto questo stesso messaggio di errore (server non trovato nel database Kerberos (7)), ma questo si verifica dopo il successo nell'uso della keytab per effettuare il login.

Il messaggio di errore si verifica quando si tenta di utilizzare le credenziali per effettuare ricerche LDAP su AD.

Questo è iniziato solo da quando java 1.6.0_34 - ha funzionato con 1.6.0_31 che penso fosse la versione precedente. L'errore si verifica perché java non si fida che il KDC con cui sta comunicando per LDAP sia effettivamente parte del dominio Kerberos. Nel nostro caso, penso che sia perché la connessione LDAP è fatta con il nome del server trovato tramite la query risolta round-robin'd. Ovvero, java risolve realm.example.com, ma ottiene uno qualsiasi di kdc1.example.com o kdc2.example .com ..etc). Devono aver stretto il controllo tra queste versioni.

Nel nostro caso il problema è stato risolto impostando direttamente il nome del server ldap piuttosto che affidandosi al DNS.

Ma le indagini continuano.

+0

come hai impostato direttamente il nome del server ldap? –

+0

Hai avuto fortuna con questo? – cyberjoac

-2

considerare l'aggiunta di

[appdefaults] 
validate=false 

al vostro /etc/krb5.conf. Questo può aggirare il DNS errato.

+1

Non ha funzionato. Lo stesso errore. – deepujain

3

Nel mio caso, è causato dalla configurazione errata dell'indirizzo del server requestd.

L'indirizzo del server deve essere in FQDN (nome dominio completo).

Il nome FQDN è sempre richiesto da Kerberos.

+0

Questo è risultato essere il mio problema quando ho ricevuto questo errore. –

1

"Impossibile trovare il server nel database Kerberos" l'errore può accadere se si è registrato l'SPN su più utenti/computer.

È possibile verificare che con:

$ SetSPN -Q ServicePrincipalName 
(SetSPN -Q HTTP/[email protected]) 
Problemi correlati