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