<div dir="ltr"><div>Hello,<br></div><div><br>I am using keystone 0.9.0 , RDO Openstack Icehouse on Centos 6.5 with <br><br>python-keystoneclient-0.9.0-1.el6.noarch<br>openstack-keystone-2014.1.2.1-1.el6.noarch<br>python-keystone-2014.1.2.1-1.el6.noarch<br></div><div><br></div><div>In short - I am trying to use external authentication with keystone identity - where LDAP is used as a backend database for users and groups, while kerberos is used for authentication with HTTPD remote_user.  Roles/Tenants are used from mysql backend.<br><br></div><div>In /etc/keystone/keystone.conf<br><br># Search base for users. (string value)<br>user_tree_dn=ou=People,dc=example,dc=com<br><br># LDAP search filter for users. (string value)<br>#user_filter=(&(objectClass=PosixAccount))<br><br># LDAP objectClass for users. (string value)<br>user_objectclass = posixAccount<br><br># LDAP attribute mapped to user id. (string value)<br>user_id_attribute = displayName<br><br># LDAP attribute mapped to user name. (string value)<br>user_name_attribute = displayName<br><br># LDAP attribute mapped to user email. (string value)<br>user_mail_attribute = mail<br><br></div><div>I see that, no matter what i change in user_id_attribute, the keystone/auth/plugins/external.py always uses "uid" as its search term.<br><br></div><div>This creates an issue, for remote_user since the remote_user under my environment includes the domain (for example: "<a href="mailto:lohit.valleru@example.com">lohit.valleru@example.com</a>")<br><br></div><div>And whenever i try to authenticate using my kerberos ticket - with external authentication as:<br><br>external=keystone.auth.plugins.external.DefaultDomain<br><br></div><div>I see the following in the log:<br></div><div><br>DEBUG keystone.common.ldap.core [-] LDAP search: dn=ou=People,dc=example,dc=come, scope=1, query=(&(uid=<a href="mailto:lohit.valleru@example.com">lohit.valleru@example.com</a>)(objectClass=posixAccount)), attrs=['mail', 'userPassword', 'enabled', 'uid'] search_s /usr/lib/python2.6/site-packages/keystone/common/ldap/core.py:807<br>2014-10-18 02:34:36.459 5592 DEBUG keystone.common.ldap.core [-] LDAP unbind unbind_s /usr/lib/python2.6/site-packages/keystone/common/ldap/core.py:777<br>2014-10-18 02:34:36.460 5592 WARNING keystone.common.wsgi [-] Authorization failed. Unable to lookup user <a href="mailto:lohit.valleru@example.com">lohit.valleru@example.com</a> from 172.31.41.104<br></div><div><br>As you can see above, i do not want it to search with "uid" , but instead with "displayName"<br></div><div><br></div><div>In our ldap structure, uid just contains the username and does not contain the domain.<br><br>As a workaround - <br>I have tried to use other deprecated classes such as "external=keystone.auth.plugins.external.LegacyDomain", but i see no difference.<br><br>Also when i do - Keystone user-list<br><br>I clearly see that the uid attribute does not take up my changes in the configuration file - keystone.conf<br><br></div><div>In addition to above issues, i observed that -  whenever i do : keystone user-role-add - It does take up my value in configuration - but it will not work, since it always gets uid instead of displayName, and displayName lookup will not result in a successful return.<br><br></div><div>May i please request some help regarding above.<br><br>I wish to modify the code, or write my wrapper around it, but it would be helpful if i could see any documentation regarding compilation/deployment of keystone code.<br><br></div><div>Please do let me know, if i need to provide any more information.<br></div><div><br></div><div>Thank you,<br><br>Lohit<br></div></div>