Java Authentification sur un annuaire Active Directory, l'authentification d'incompatibilité?
Donc j'ai un code qui je suis en essais pour vérifier qu'il fonctionne bien pour l'authentification. Il fonctionne très bien contre la droite kerberos, alors je me suis dit il doit seulement y avoir quelques ajustements mineurs avec AD. Malheureusement, je ne peux pas passer à côté d'un KrbException: KDC n'a pas de support pour le chiffrement de type (14).
Je sais que l'erreur est un type de chiffrement incompatibilité. Mais je peux kinit très bien, c'est que dans le code que j'ai frappé un problème. Je ne suis pas de réglage de rien, donc je pense qu'il devrait être hérite des mêmes défauts que kinit, mais qui n'est évidemment pas le cas.
Le code-
System.setProperty("sun.security.krb5.debug", "true");
System.setProperty("java.security.krb5.realm", "TEST.SQRRL.COM");
System.setProperty("java.security.krb5.kdc", "172.16.101.128");
System.setProperty("java.security.auth.login.config", "./conf/jaas.conf");
System.setProperty("javax.security.auth.useSubjectCredsOnly", "true");
//"Client" references the JAAS configuration in the jaas.conf file.
LoginContext loginCtx = null;
loginCtx = new LoginContext("Server", new LoginCallbackHandler("test".toCharArray()));
loginCtx.login();
subject = loginCtx.getSubject();
et la jaas.conf
Server {
com.sun.security.auth.module.Krb5LoginModule required
useKeyTab=false
storeKey=true
useTicketCache=true
principal="[email protected]";
};
Et, la trace de la pile-
>>>KRBError:
sTime is Tue Nov 27 18:16:36 EST 2012 1354058196000
suSec is 257213
error code is 14
error Message is KDC has no support for encryption type
realm is test.SQRRL.COM
sname is krbtgt/test.SQRRL.COM
msgType is 30
javax.security.auth.login.LoginException: KDC has no support for encryption type (14)
at com.sun.security.auth.module.Krb5LoginModule.attemptAuthentication(Krb5LoginModule.java:696)
at com.sun.security.auth.module.Krb5LoginModule.login(Krb5LoginModule.java:542)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at javax.security.auth.login.LoginContext.invoke(LoginContext.java:769)
at javax.security.auth.login.LoginContext.access$000(LoginContext.java:186)
at javax.security.auth.login.LoginContext$4.run(LoginContext.java:683)
at java.security.AccessController.doPrivileged(Native Method)
at javax.security.auth.login.LoginContext.invokePriv(LoginContext.java:680)
at javax.security.auth.login.LoginContext.login(LoginContext.java:579)
at authenticators.KerberosAuthenticator.<init>(KerberosAuthenticator.java:37)
at main.ServerImpl.<init>(ServerImpl.java:91)
at main.PlugServer.run(PlugServer.java:22)
at main.PlugServer.main(PlugServer.java:42)
Caused by: KrbException: KDC has no support for encryption type (14)
at sun.security.krb5.KrbAsRep.<init>(KrbAsRep.java:66)
at sun.security.krb5.KrbAsReq.getReply(KrbAsReq.java:446)
at sun.security.krb5.Credentials.sendASRequest(Credentials.java:401)
at sun.security.krb5.Credentials.acquireTGT(Credentials.java:373)
at com.sun.security.auth.module.Krb5LoginModule.attemptAuthentication(Krb5LoginModule.java:662)
... 15 more
Caused by: KrbException: Identifier doesn't match expected value (906)
at sun.security.krb5.internal.KDCRep.init(KDCRep.java:133)
at sun.security.krb5.internal.ASRep.init(ASRep.java:58)
at sun.security.krb5.internal.ASRep.<init>(ASRep.java:53)
at sun.security.krb5.KrbAsRep.<init>(KrbAsRep.java:50)
... 19 more
Exception in thread "main" java.lang.RuntimeException: javax.security.auth.login.LoginException: KDC has no support for encryption type (14)
at main.PlugServer.run(PlugServer.java:36)
at main.PlugServer.main(PlugServer.java:42)
Caused by: javax.security.auth.login.LoginException: KDC has no support for encryption type (14)
at com.sun.security.auth.module.Krb5LoginModule.attemptAuthentication(Krb5LoginModule.java:696)
at com.sun.security.auth.module.Krb5LoginModule.login(Krb5LoginModule.java:542)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at javax.security.auth.login.LoginContext.invoke(LoginContext.java:769)
at javax.security.auth.login.LoginContext.access$000(LoginContext.java:186)
at javax.security.auth.login.LoginContext$4.run(LoginContext.java:683)
at java.security.AccessController.doPrivileged(Native Method)
at javax.security.auth.login.LoginContext.invokePriv(LoginContext.java:680)
at javax.security.auth.login.LoginContext.login(LoginContext.java:579)
at authenticators.KerberosAuthenticator.<init>(KerberosAuthenticator.java:37)
at main.ServerImpl.<init>(ServerImpl.java:91)
at main.PlugServer.run(PlugServer.java:22)
... 1 more
Caused by: KrbException: KDC has no support for encryption type (14)
at sun.security.krb5.KrbAsRep.<init>(KrbAsRep.java:66)
at sun.security.krb5.KrbAsReq.getReply(KrbAsReq.java:446)
at sun.security.krb5.Credentials.sendASRequest(Credentials.java:401)
at sun.security.krb5.Credentials.acquireTGT(Credentials.java:373)
at com.sun.security.auth.module.Krb5LoginModule.attemptAuthentication(Krb5LoginModule.java:662)
... 15 more
Caused by: KrbException: Identifier doesn't match expected value (906)
at sun.security.krb5.internal.KDCRep.init(KDCRep.java:133)
at sun.security.krb5.internal.ASRep.init(ASRep.java:58)
at sun.security.krb5.internal.ASRep.<init>(ASRep.java:53)
at sun.security.krb5.KrbAsRep.<init>(KrbAsRep.java:50)
... 19 more
OriginalL'auteur ohshazbot | 2012-11-28
Vous devez vous connecter pour publier un commentaire.
Donc, je l'ai passé ce stade. Je ne peux que deviner que le DES soutien dans active directory pour Windows Server 2012 est cassé, que j'ai fini peaufiner mon krb5.fichier conf et le réglage de la par défaut, deux types de billets et autorisé types de juste aes256-cts-hmac-sha1-96 et il a travaillé pour l'utilisateur. Après l'activation de la aes256 pour d'autres utilisateurs dans l'AD, il a continué à travailler.
OriginalL'auteur ohshazbot
Vous avez besoin pour accéder au compte de l'utilisateur et cochez la case " utiliser DES types de chiffrement kerberos case.
Vous aurez besoin pour vous connecter à votre DS comme un admin pour ce faire, bien sûr.
OriginalL'auteur Ian Jones
en Regardantinit()
dans KDCRep.java, la seule partie qui ressemble il pourrait être jeter votre erreur est:Il est un peu étrange que l'erreur est imprimé en tant queKrbException
, mais il pourrait travailler depuisKrbApErrException
est une sous-classe deKrbException
.init()
ne peut pas les jeter tout les autres sous-classes deKrbException
, cependant.Scratch. Une meilleure possibilité est que c'est l'un des
Asn1Exception
s là, depuis le constructeur en KrbAsRep.java captures et renvoie ces erreurs commeKrbException
s (avec uninitCause
qui correspond assez bien avec la trace de la pile)."Identifier doesn't match expected value (906)"
m'amène à croire que c'est jeter unAsn1Exception(Krb5.ASN1_BAD_ID)
, depuisKrb5.ASN1_BAD_ID
qui a de la valeur 906. Ce n'est pas trop utile, puisque cela semble être le défaut d'erreur dansinit()
.Voir si vous pouvez générer le
DerValue
correspondant à votre configuration et de l'inspecter manuellement, voir où l'init()
- ci le rejette, puis l'étape en arrière à partir de là, regardant à quelle partie de votre configuration créé les bits erronés.Après une inspection plus poussée, le message
"KDC has no support for encryption type"
m'amène à croireKrb5.KDC_ERR_ETYPE_NOSUPP
doit avoir été utilisé. Mais, comme c'est utilisé uniquement pour l'instance par défaut deEtype
, qui ne pourrait pas dire grand-chose.OriginalL'auteur rampion