My setup:

* Ubuntu 16.04
* Oracle JRE with JCE (1.8)
* ApacheDS back-end (apacheds-2.0.0-M23)
* Apache Directory Studio Version: 2.0.0.v20161101-M12

Using kinit (localhost)
Kerberos working with kinit on localhost (using FQDN).  
* kinit <uid>@<realm>  

With logging enabled I can see authentication against 
* krb5PrincipalName=<uid>@<realm>                => OK
* krb5PrincipalName=krbtgt/<realm>@<realm>   => OK
Ticket Granted

Using Directory Studio (Windows):
!! Not working !!

>From debug log:
Authenticate against 

* krb5PrincipalName=<uid>@<realm>                => OK 
* krb5PrincipalName=ldap/<realm>@<realm>   => OK 

* krb5PrincipalName=ldap/<host>@<realm> => OK 


All good up to this point....
  [17:36:24] DEBUG [org.apache.directory.server.KERBEROS_LOG] - 
/173.174.45.64:52800 SENT: 
  
>-------------------------------------------------------------------------------
 
  KdcRep : TGS-REP 
  pvno : 5 
  msg-type : TGS_REP 
  crealm : MAGRATHEA.COM 
  cname : { name-type: KRB_NT_PRINCIPAL, name-string : <'lhansford'> } 
  Ticket : 
  tkt-vno : 5 
  realm : MAGRATHEA.COM 
  sname : { name-type: KRB_NT_UNKNOWN, name-string : <'ldap', 'minime'> }....etc

Here is where it gets strange:
  [17:36:24] DEBUG 
[org.apache.directory.server.ldap.handlers.request.BindRequestHandler] - 
Received: MessageType : BIND_REQUEST 
  Message ID : 1 
  BindRequest 
  Version : '3' 
  Name : '' 
  Sasl credentials 
  Mechanism :'GSSAPI' 
  Credentials : (omitted-for-safety) 
  [17:36:24] DEBUG [org.apache.directory.server.OPERATION_LOG] - >> 
SearchOperation : SearchContext for Dn 'ou=users,ou=system', filter 
:'(krb5PrincipalName=ldap/[email protected])' 
  [17:36:24] DEBUG 
[org.apache.directory.server.core.authn.AuthenticationInterceptor] - Operation 
Context: SearchContext for Dn 'ou=users,ou=system', filter 
:'(krb5PrincipalName=ldap/[email protected])'

Which obviously fails since krb5PrincipalName=ldap/[email protected] 
is a placeholder value.  Stack trace:
java.lang.NullPointerException 
  at 
org.apache.directory.server.protocol.shared.kerberos.GetPrincipal.getEntry(GetPrincipal.java:93)
 
  at 
org.apache.directory.server.protocol.shared.kerberos.GetPrincipal.execute(GetPrincipal.java:77)
 
  at 
org.apache.directory.server.ldap.handlers.sasl.gssapi.GssapiMechanismHandler.findPrincipal(GssapiMechanismHandler.java:171)
 
  at 
org.apache.directory.server.ldap.handlers.sasl.gssapi.GssapiMechanismHandler.getSubject(GssapiMechanismHandler.java:135)
 
  at 
org.apache.directory.server.ldap.handlers.sasl.gssapi.GssapiMechanismHandler.handleMechanism(GssapiMechanismHandler.java:65)
 
  at 
org.apache.directory.server.ldap.handlers.request.BindRequestHandler.handleSaslAuth(BindRequestHandler.java:587)
 
  at 
org.apache.directory.server.ldap.handlers.request.BindRequestHandler.handle(BindRequestHandler.java:640)
 
  at 
org.apache.directory.server.ldap.handlers.request.BindRequestHandler.handle(BindRequestHandler.java:66)
 
  at 
org.apache.directory.server.ldap.handlers.LdapRequestHandler.handleMessage(LdapRequestHandler.java:193)
 
  at 
org.apache.directory.server.ldap.handlers.LdapRequestHandler.handleMessage(LdapRequestHandler.java:56)


I'm not new to networking or auth schemes but this is my first time with 
Kerberos.  Is this a bug?  Why is ther a reference to SASL? (confogured SASL 
just to see if the EXAMPLE.COM was present and it still is).

Thanks!
-Lamar

Reply via email to