Crypto with the Kerberos Login Handler

MOTTE Frederic frederic.motte at thalesgroup.com
Tue Dec 20 12:25:55 GMT 2011


Hi,
Thank you for your help. I'm ok with you, DES in not the better choice.

So, I try with RC4-HMAC
I have a "checksum" problem into Kerberos


The log of shibboleth
13:17:42.220 - DEBUG [ch.SWITCH.aai.idp.kerberos.HttpNegotiator:72] - HTTP: Returning response code '401'. Authorization header not found.
13:17:42.234 - INFO [ch.SWITCH.aai.idp.kerberos.KrbLoginServlet:125] - kerberos idp servlet started
13:17:42.241 - DEBUG [ch.SWITCH.aai.idp.kerberos.KrbContextAcceptor:87] - Validating GSS token. Realm: CERSSO.COM
13:17:42.273 - DEBUG [ch.SWITCH.aai.idp.kerberos.KrbContextAcceptor:145] - GSS context created.
13:17:42.284 - ERROR [ch.SWITCH.aai.idp.kerberos.KrbContextAcceptor:98] - Error validating security context
org.ietf.jgss.GSSException: Failure unspecified at GSS-API level (Mechanism level: Checksum failed)
                at sun.security.jgss.krb5.Krb5Context.acceptSecContext(Krb5Context.java:741) ~[na:1.6.0_29]
                at sun.security.jgss.GSSContextImpl.acceptSecContext(GSSContextImpl.java:323) ~[na:1.6.0_29]
                at sun.security.jgss.GSSContextImpl.acceptSecContext(GSSContextImpl.java:267) ~[na:1.6.0_29]
                at sun.security.jgss.spnego.SpNegoContext.GSS_acceptSecContext(SpNegoContext.java:874) ~[na:1.6.0_29]
                at sun.security.jgss.spnego.SpNegoContext.acceptSecContext(SpNegoContext.java:541) ~[na:1.6.0_29]
                at sun.security.jgss.GSSContextImpl.acceptSecContext(GSSContextImpl.java:323) ~[na:1.6.0_29]
                at sun.security.jgss.GSSContextImpl.acceptSecContext(GSSContextImpl.java:267) ~[na:1.6.0_29]
                at ch.SWITCH.aai.idp.kerberos.KrbContextAcceptor.acceptRealmSecContext(KrbContextAcceptor.java:151) ~[kerberos-login-handler-1.0.jar:na]
                at ch.SWITCH.aai.idp.kerberos.KrbContextAcceptor.acceptSecContext(KrbContextAcceptor.java:89) ~[kerberos-login-handler-1.0.jar:na]
                at ch.SWITCH.aai.idp.kerberos.HttpNegotiator.authenticate(HttpNegotiator.java:86) [kerberos-login-handler-1.0.jar:na]
                at ch.SWITCH.aai.idp.kerberos.KrbLoginServlet.service(KrbLoginServlet.java:144) [kerberos-login-handler-1.0.jar:na]
                at ch.SWITCH.aai.idp.kerberos.KrbLoginServlet.service(KrbLoginServlet.java:115) [kerberos-login-handler-1.0.jar:na]
                at javax.servlet.http.HttpServlet.service(HttpServlet.java:717) [servlet-api.jar:na]
                at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290) [catalina.jar:6.0.33]
                at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) [catalina.jar:6.0.33]
                at edu.internet2.middleware.shibboleth.idp.util.NoCacheFilter.doFilter(NoCacheFilter.java:50) [shibboleth-identityprovider-2.3.5.jar:na]
                at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) [catalina.jar:6.0.33]
                at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) [catalina.jar:6.0.33]
                at edu.internet2.middleware.shibboleth.idp.session.IdPSessionFilter.doFilter(IdPSessionFilter.java:81) [shibboleth-identityprovider-2.3.5.jar:na]
                at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) [catalina.jar:6.0.33]
                at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) [catalina.jar:6.0.33]
                at edu.internet2.middleware.shibboleth.common.log.SLF4JMDCCleanupFilter.doFilter(SLF4JMDCCleanupFilter.java:52) [shibboleth-common-1.3.4.jar:na]
                at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) [catalina.jar:6.0.33]
                at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) [catalina.jar:6.0.33]
                at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:219) [catalina.jar:6.0.33]
                at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191) [catalina.jar:6.0.33]
                at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127) [catalina.jar:6.0.33]
                at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) [catalina.jar:6.0.33]
                at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) [catalina.jar:6.0.33]
                at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:291) [catalina.jar:6.0.33]
                at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:859) [tomcat-coyote.jar:6.0.33]
                at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:602) [tomcat-coyote.jar:6.0.33]
                at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489) [tomcat-coyote.jar:6.0.33]
                at java.lang.Thread.run(Thread.java:662) [na:1.6.0_29]
Caused by: sun.security.krb5.KrbCryptoException: Checksum failed
                at sun.security.krb5.internal.crypto.ArcFourHmacEType.decrypt(ArcFourHmacEType.java:85) ~[na:1.6.0_29]
                at sun.security.krb5.internal.crypto.ArcFourHmacEType.decrypt(ArcFourHmacEType.java:77) ~[na:1.6.0_29]
                at sun.security.krb5.EncryptedData.decrypt(EncryptedData.java:168) ~[na:1.6.0_29]
                at sun.security.krb5.KrbApReq.authenticate(KrbApReq.java:268) ~[na:1.6.0_29]
                at sun.security.krb5.KrbApReq.<init>(KrbApReq.java:134) ~[na:1.6.0_29]
                at sun.security.jgss.krb5.InitSecContextToken.<init>(InitSecContextToken.java:79) ~[na:1.6.0_29]
                at sun.security.jgss.krb5.Krb5Context.acceptSecContext(Krb5Context.java:724) ~[na:1.6.0_29]
                ... 33 common frames omitted
Caused by: java.security.GeneralSecurityException: Checksum failed
                at sun.security.krb5.internal.crypto.dk.ArcFourCrypto.decrypt(ArcFourCrypto.java:388) ~[na:1.6.0_29]
                at sun.security.krb5.internal.crypto.ArcFourHmac.decrypt(ArcFourHmac.java:74) ~[na:1.6.0_29]
                at sun.security.krb5.internal.crypto.ArcFourHmacEType.decrypt(ArcFourHmacEType.java:83) ~[na:1.6.0_29]
                ... 39 common frames omitted
13:17:42.285 - ERROR [ch.SWITCH.aai.idp.kerberos.KrbLoginServlet:158] - Authentication process error.
javax.servlet.ServletException: It was not possible to established context. There is no gssapi data to continue the process.
                at ch.SWITCH.aai.idp.kerberos.HttpNegotiator.authenticate(HttpNegotiator.java:142) ~[kerberos-login-handler-1.0.jar:na]
                at ch.SWITCH.aai.idp.kerberos.KrbLoginServlet.service(KrbLoginServlet.java:144) [kerberos-login-handler-1.0.jar:na]
                at ch.SWITCH.aai.idp.kerberos.KrbLoginServlet.service(KrbLoginServlet.java:115) [kerberos-login-handler-1.0.jar:na]
                at javax.servlet.http.HttpServlet.service(HttpServlet.java:717) [servlet-api.jar:na]
                at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290) [catalina.jar:6.0.33]
                at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) [catalina.jar:6.0.33]
                at edu.internet2.middleware.shibboleth.idp.util.NoCacheFilter.doFilter(NoCacheFilter.java:50) [shibboleth-identityprovider-2.3.5.jar:na]
                at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) [catalina.jar:6.0.33]
                at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) [catalina.jar:6.0.33]
                at edu.internet2.middleware.shibboleth.idp.session.IdPSessionFilter.doFilter(IdPSessionFilter.java:81) [shibboleth-identityprovider-2.3.5.jar:na]
                at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) [catalina.jar:6.0.33]
                at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) [catalina.jar:6.0.33]
                at edu.internet2.middleware.shibboleth.common.log.SLF4JMDCCleanupFilter.doFilter(SLF4JMDCCleanupFilter.java:52) [shibboleth-common-1.3.4.jar:na]
                at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) [catalina.jar:6.0.33]
                at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) [catalina.jar:6.0.33]
                at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:219) [catalina.jar:6.0.33]
                at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191) [catalina.jar:6.0.33]
                at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127) [catalina.jar:6.0.33]
                at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) [catalina.jar:6.0.33]
                at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) [catalina.jar:6.0.33]
                at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:291) [catalina.jar:6.0.33]
                at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:859) [tomcat-coyote.jar:6.0.33]
                at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:602) [tomcat-coyote.jar:6.0.33]
                at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489) [tomcat-coyote.jar:6.0.33]
                at java.lang.Thread.run(Thread.java:662) [na:1.6.0_29]
13:17:42.285 - DEBUG [ch.SWITCH.aai.idp.kerberos.KrbLoginServlet:185] - Authentication failed.
13:17:42.286 - DEBUG [ch.SWITCH.aai.idp.kerberos.KrbLoginHandler:262] - Redirecting to login page
13:17:42.287 - INFO [ch.SWITCH.aai.idp.kerberos.KrbLoginHandler:249] - 'auto login' cookie sent.


The log of kerberos


Dec 20, 2011 1:17:42 PM org.apache.catalina.core.StandardWrapperValve invoke
INFO: Debug is  true storeKey true useTicketCache false useKeyTab true doNotPrompt false ticketCache is null isInitiator true KeyTab is /home/stcia/Desktop/idp.http.keytab refreshKrb5Config is true principal is HTTP/idp.cersso.theresis.org at CERSSO.COM tryFirstPass is false useFirstPass is false storePass is false clearPass is false
Refreshing Kerberos configuration
>>> KdcAccessibility: reset
>>> KdcAccessibility: reset
>>> KeyTabInputStream, readName(): CERSSO.COM
>>> KeyTabInputStream, readName(): HTTP
>>> KeyTabInputStream, readName(): idp.cersso.theresis.org
>>> KeyTab: load() entry length: 74; type: 23
Added key: 23version: 0
Ordering keys wrt default_tkt_enctypes list
default etypes for default_tkt_enctypes: 23 23 1 3.
0: EncryptionKey: keyType=23 kvno=0 keyValue (hex dump)=
0000: 5F EC 01 14 95 1A 6C 0D   7E CE 52 29 0E F2 7B 8B  _.....l...R)....


principal's key obtained from the keytab
Acquire TGT using AS Exchange
default etypes for default_tkt_enctypes: 23 23 1 3.
>>> KrbAsReq calling createMessage
>>> KrbAsReq in createMessage
>>> KrbKdcReq send: kdc=AD.CERSSO.COM UDP:88, timeout=30000, number of retries =3, #bytes=159
>>> KDCCommunication: kdc=AD.CERSSO.COM UDP:88, timeout=30000,Attempt =1, #bytes=159
>>> KrbKdcReq send: #bytes read=177
>>> KrbKdcReq send: #bytes read=177
>>> KdcAccessibility: remove AD.CERSSO.COM
>>> KDCRep: init() encoding tag is 126 req type is 11
>>>KRBError:
                sTime is Tue Dec 20 13:17:39 CET 2011 1324383459000
                suSec is 822750
                error code is 25
                error Message is Additional pre-authentication required
                realm is CERSSO.COM
                sname is krbtgt/CERSSO.COM
                eData provided.
                msgType is 30
>>>Pre-Authentication Data:
                PA-DATA type = 11
                PA-ETYPE-INFO etype = 23
                PA-ETYPE-INFO salt =
>>>Pre-Authentication Data:
                PA-DATA type = 19
                PA-ETYPE-INFO2 etype = 23
                PA-ETYPE-INFO2 salt = null
>>>Pre-Authentication Data:
                PA-DATA type = 2
                PA-ENC-TIMESTAMP
>>>Pre-Authentication Data:
                PA-DATA type = 16
>>>Pre-Authentication Data:
                PA-DATA type = 15
AcquireTGT: PREAUTH FAILED/REQUIRED, re-send AS-REQ
>>>KrbAsReq salt is CERSSO.COMHTTPidp.cersso.theresis.org
default etypes for default_tkt_enctypes: 23 23 1 3.
Pre-Authenticaton: find key for etype = 23
AS-REQ: Add PA_ENC_TIMESTAMP now
>>> EType: sun.security.krb5.internal.crypto.ArcFourHmacEType
>>> KrbAsReq calling createMessage
>>> KrbAsReq in createMessage
>>> KrbKdcReq send: kdc=AD.CERSSO.COM UDP:88, timeout=30000, number of retries =3, #bytes=242
>>> KDCCommunication: kdc=AD.CERSSO.COM UDP:88, timeout=30000,Attempt =1, #bytes=242
>>> KrbKdcReq send: #bytes read=1394
>>> KrbKdcReq send: #bytes read=1394
>>> KdcAccessibility: remove AD.CERSSO.COM
>>> EType: sun.security.krb5.internal.crypto.ArcFourHmacEType
>>> KrbAsRep cons in KrbAsReq.getReply HTTP/idp.cersso.theresis.org
principal is HTTP/idp.cersso.theresis.org at CERSSO.COM
EncryptionKey: keyType=23 keyBytes (hex dump)=0000: 5F EC 01 14 95 1A 6C 0D   7E CE 52 29 0E F2 7B 8B  _.....l...R)....

Added server's keyKerberos Principal HTTP/idp.cersso.theresis.org at CERSSO.COMKey Version 0key EncryptionKey: keyType=23 keyBytes (hex dump)=
0000: 5F EC 01 14 95 1A 6C 0D   7E CE 52 29 0E F2 7B 8B  _.....l...R)....


                               [Krb5LoginModule] added Krb5Principal  HTTP/idp.cersso.theresis.org at CERSSO.COM to Subject
Commit Succeeded

Search Subject for SPNEGO ACCEPT cred (<<DEF>>, sun.security.jgss.spnego.SpNegoCredElement)
Search Subject for Kerberos V5 ACCEPT cred (<<DEF>>, sun.security.jgss.krb5.Krb5AcceptCredential)
Found key for HTTP/idp.cersso.theresis.org at CERSSO.COM(23)
Entered Krb5Context.acceptSecContext with state=STATE_NEW
>>> EType: sun.security.krb5.internal.crypto.ArcFourHmacEType
Checksum failed !
                               [Krb5LoginModule]: Entering logout
                               [Krb5LoginModule]: logged out Subject


If you have any idea

Frederic

De : users-bounces at shibboleth.net [mailto:users-bounces at shibboleth.net] De la part de Rod Widdowson
Envoyé : mardi 20 décembre 2011 08:46
À : 'Shib Users'
Objet : RE: Crypto with the Kerberos Login Handler

Frederic,

I eventually gave up on using krb against AD and I now use LDAP which works quite well - and as an added benefit relieves you from having to map principals.

In a recent situation when I had to work against a (non AD) Krb I had to do the enable_weak_crypto thing as well as setting the

default_tkt_enctypes = des-cbc-crc
default_tgs_enctypes = des-cbc-crc

in [libdefaults]

However, I should note that I am far from a being a Kerberos expert, and that you should think very seriously before enabling weakened security on any system.

Rod

From: users-bounces at shibboleth.net [mailto:users-bounces at shibboleth.net] On Behalf Of MOTTE Frederic
Sent: 20 December 2011 07:09
To: users at shibboleth.net
Subject: Crypto with the Kerberos Login Handler

Hi,

I have a AD on a windows 2008R2 and the idp is on a debian (jdk 1.6.0_29-b11)

I have some problem using the kerberos login handler.
My first test was to create a keytab using the RC4-HMAC crypto.
C:\Users\Administrateur>ktpass -princ HTTP/idp.cersso.com at CERSSO.COM<mailto:HTTP/idp.cersso.com at CERSSO.COM> -pass Master2008 -mapuser idp -out c:\temp\idp.http.keytab  -ptype KRB5_NT_PRINCIPAL -crypto RC4-HMAC-NT  kvno 0

When I use it on the debian platform to realise the kinit, it's OK but when I use is into the loginHandler configuration, I have a checksum exception. In the wiki, the possible solutions are to activate the DES into the user profil or update the JKD version (if under 1.5.xxx)

consequently, I try to realise a keytab with the DES-CBC-MD5 crypto option, and  when I realise the kinit in order to validate the keytab, I have the following error :

kinit (v5), KDC has no support for encrytpion type while getting initial credentials.

Can you help me in order to solve the crypto problem?

Thanks for any help.

Frederic

[@@THALES GROUP RESTRICTED@@]

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://shibboleth.net/pipermail/users/attachments/20111220/f60e9ace/attachment-0001.html 


More information about the users mailing list