<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
<meta name="Generator" content="Microsoft Word 15 (filtered medium)">
<style><!--
/* Font Definitions */
@font-face
{font-family:"Cambria Math";
panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
{font-family:Calibri;
panose-1:2 15 5 2 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
{margin:0in;
margin-bottom:.0001pt;
font-size:11.0pt;
font-family:"Calibri",sans-serif;}
a:link, span.MsoHyperlink
{mso-style-priority:99;
color:#0563C1;
text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
{mso-style-priority:99;
color:#954F72;
text-decoration:underline;}
span.EmailStyle17
{mso-style-type:personal-compose;
font-family:"Calibri",sans-serif;
color:windowtext;}
.MsoChpDefault
{mso-style-type:export-only;
font-family:"Calibri",sans-serif;}
@page WordSection1
{size:8.5in 11.0in;
margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
{page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
</head>
<body lang="EN-US" link="#0563C1" vlink="#954F72">
<div class="WordSection1">
<p class="MsoNormal">Hello everyone,<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">I am working on converting our Shibboleth IdP 2.x configuration to 3.2.1. Most of the conversion has been straightforward but LDAP authentication for resolving attributes is not working. The LDAP server is running OpenLDAP compiled from
source and keytab authentication works for other services besides IdP 2.x. I have looked through the wiki, the mailing list, and the ldaptive site but have not seen anything that helps debug the problem. I have already raise the idp.loglevel.ldap and idp.loglevel.idp
levels to DEBUG.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">I get the following error in the log file:<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">2016-02-03 12:15:09,453 - ERROR [net.shibboleth.idp.attribute.resolver.dc.ldap.impl.ConnectionFactoryValidator:95] - Connection factory validation failed<o:p></o:p></p>
<p class="MsoNormal">org.ldaptive.LdapException: javax.naming.AuthenticationException: GSSAPI [Root exception is javax.security.sasl.SaslException: GSS initiate failed [Caused by GSSException: No valid crede<o:p></o:p></p>
<p class="MsoNormal">ntials provided (Mechanism level: Failed to find any Kerberos tgt)]]<o:p></o:p></p>
<p class="MsoNormal"> at org.ldaptive.provider.ProviderUtils.throwOperationException(ProviderUtils.java:77)<o:p></o:p></p>
<p class="MsoNormal">Caused by: javax.naming.AuthenticationException: GSSAPI<o:p></o:p></p>
<p class="MsoNormal"> at com.sun.jndi.ldap.sasl.LdapSasl.saslBind(LdapSasl.java:169)<o:p></o:p></p>
<p class="MsoNormal">Caused by: javax.security.sasl.SaslException: GSS initiate failed<o:p></o:p></p>
<p class="MsoNormal"> at com.sun.security.sasl.gsskerb.GssKrb5Client.evaluateChallenge(GssKrb5Client.java:211)<o:p></o:p></p>
<p class="MsoNormal">Caused by: org.ietf.jgss.GSSException: No valid credentials provided (Mechanism level: Failed to find any Kerberos tgt)<o:p></o:p></p>
<p class="MsoNormal"> at sun.security.jgss.krb5.Krb5InitCredential.getInstance(Krb5InitCredential.java:147)<o:p></o:p></p>
<p class="MsoNormal">2016-02-03 12:15:09,459 - ERROR [net.shibboleth.idp.attribute.resolver.dc.ldap.impl.LDAPDataConnector:143] - Data Connector 'myLDAP': Invalid connector configuration<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">My current 3.2.1 test configuration is has the following in attribute-resolver:<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"> <resolver:DataConnector id="myLDAP" xsi:type="dc:LDAPDirectory"<o:p></o:p></p>
<p class="MsoNormal"> ldapURL="%{idp.attribute.resolver.LDAP.ldapURL}"<o:p></o:p></p>
<p class="MsoNormal"> baseDN="%{idp.attribute.resolver.LDAP.baseDN}"<o:p></o:p></p>
<p class="MsoNormal"> authenticationType="GSSAPI" ><o:p></o:p></p>
<p class="MsoNormal"> <dc:FilterTemplate><o:p></o:p></p>
<p class="MsoNormal"> <![CDATA[<o:p></o:p></p>
<p class="MsoNormal"> %{idp.attribute.resolver.LDAP.searchFilter}<o:p></o:p></p>
<p class="MsoNormal"> ]]><o:p></o:p></p>
<p class="MsoNormal"> </dc:FilterTemplate><o:p></o:p></p>
<p class="MsoNormal"> <dc:StartTLSTrustCredential id="LDAPtoIdPCredential" xsi:type="sec:X509ResourceBacked"><o:p></o:p></p>
<p class="MsoNormal"> <sec:Certificate>%{idp.attribute.resolver.LDAP.trustCertificates}</sec:Certificate><o:p></o:p></p>
<p class="MsoNormal"> </dc:StartTLSTrustCredential><o:p></o:p></p>
<p class="MsoNormal"> </resolver:DataConnector><o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">And I have modified the Jetty start.ini to include:<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">-Djava.security.auth.login.config=/usr/local/shibboleth-idp/conf/login.config<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">That login.config contains:<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">com.sun.security.jgss.initiate {<o:p></o:p></p>
<p class="MsoNormal"> com.sun.security.auth.module.Krb5LoginModule required<o:p></o:p></p>
<p class="MsoNormal"> useTicketCache="true"<o:p></o:p></p>
<p class="MsoNormal"> ticketCache="/tmp/krb5cc_idp_ldap"<o:p></o:p></p>
<p class="MsoNormal"> renewTGT="true"<o:p></o:p></p>
<p class="MsoNormal"> useKeyTab="true"<o:p></o:p></p>
<p class="MsoNormal"> keyTab="/opt/shibboleth-idp/credentials/shib-user-instance.keytab "<o:p></o:p></p>
<p class="MsoNormal"> principal="shib-user/instance@bu.edu"<o:p></o:p></p>
<p class="MsoNormal"> foobar="true"<o:p></o:p></p>
<p class="MsoNormal"> doNotPrompt="true";<o:p></o:p></p>
<p class="MsoNormal">};<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">ldaptive {<o:p></o:p></p>
<p class="MsoNormal"> com.sun.security.auth.module.Krb5LoginModule required<o:p></o:p></p>
<p class="MsoNormal"> useTicketCache="true"<o:p></o:p></p>
<p class="MsoNormal"> ticketCache="/tmp/krb5cc_idp_ldap"<o:p></o:p></p>
<p class="MsoNormal"> renewTGT="true"<o:p></o:p></p>
<p class="MsoNormal"> useKeyTab="true"<o:p></o:p></p>
<p class="MsoNormal"> keyTab="/opt/shibboleth-idp/credentials/shib-user-instance.keytab"<o:p></o:p></p>
<p class="MsoNormal"> principal="shib-user/instance@bu.edu"<o:p></o:p></p>
<p class="MsoNormal"> foobar="true"<o:p></o:p></p>
<p class="MsoNormal"> doNotPrompt="true";<o:p></o:p></p>
<p class="MsoNormal">};<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Our working 2.x configuration has the following in the attribute-resolver.xml:<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"> <resolver:DataConnector id="myLDAP" xsi:type="LDAPDirectory" xmlns="urn:mace:shibboleth:2.0:resolver:dc"<o:p></o:p></p>
<p class="MsoNormal"> ldapURL="ldap://ldap-test.bu.edu" baseDN="dc=bu,dc=edu" authenticationType="GSSAPI"><o:p></o:p></p>
<p class="MsoNormal"> <FilterTemplate><o:p></o:p></p>
<p class="MsoNormal"> <![CDATA[<o:p></o:p></p>
<p class="MsoNormal"> (uid=$requestContext.principalName)<o:p></o:p></p>
<p class="MsoNormal"> ]]><o:p></o:p></p>
<p class="MsoNormal"> </FilterTemplate><o:p></o:p></p>
<p class="MsoNormal"> </resolver:DataConnector><o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">And the following in the JAAS login.config:<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">com.sun.security.jgss.initiate {<o:p></o:p></p>
<p class="MsoNormal"> com.sun.security.auth.module.Krb5LoginModule required<o:p></o:p></p>
<p class="MsoNormal"> useTicketCache="true"<o:p></o:p></p>
<p class="MsoNormal"> ticketCache="/tmp/krb5cc_idp_ldap"<o:p></o:p></p>
<p class="MsoNormal"> renewTGT="true"<o:p></o:p></p>
<p class="MsoNormal"> useKeyTab="true"<o:p></o:p></p>
<p class="MsoNormal"> keyTab="/opt/shibboleth-idp/credentials/shib-user-instance.keytab"<o:p></o:p></p>
<p class="MsoNormal"> principal="shib-user/instance@bu.edu"<o:p></o:p></p>
<p class="MsoNormal"> doNotPrompt="true";<o:p></o:p></p>
<p class="MsoNormal">};<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Has anyone used GSSAPI with a Kerberos keytab to authenticate the LDAP resolver with 3.x? If so, how did you configure it? Is there any resource that I missed on how to configure/debug this?<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Thanks in advance for the help,<o:p></o:p></p>
<p class="MsoNormal">David<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
</body>
</html>