<div dir="ltr">Hi everybody,<div><br></div><div>I am observing the following issue:</div><div><br></div><div>LDAP backend is enabled for identity and assignment, domain specific configs disabled.</div><div>LDAP section configured - users, groups, projects and roles are mapped.</div><div>I am able to use identity v3 api to list users, groups, to verify that a user is in a group, and also to view role assignments - everythings looks correct so far.</div><div>I am able to create a role for user in LDAP and if I put a user directly into a role, everything works.</div><div>But when I put a group (which contains that user) into a role - the user get's 401.</div><div><br></div><div>I have found a spot in the code which causes the issue:</div><div><br></div><div><a href="https://github.com/openstack/keystone/blob/stable/liberty/keystone/assignment/backends/ldap.py#L67">https://github.com/openstack/keystone/blob/stable/liberty/keystone/assignment/backends/ldap.py#L67</a></div><div><br></div><div>This check returns False, here is why:</div><div>===============================================<br></div><div>group_dns = ['cn=GroupX,ou=Groups,ou=YYY,dc=...']</div><div>role_assignment.user_dn = 'cn=UserX,ou=Users,ou=YYY,dc=...'</div><div>===============================================<br></div><div><br></div><div>Therefore the check:</div><div>====================================<br></div><div>if role_assignment.user_dn.upper() in group_dns</div><div>====================================<br></div><div>Will return false. I do not understand how this should work - why should user_dn match group_dn?</div><div><div><br></div>-- <br><div class="gmail_signature"><div dir="ltr"><div><div dir="ltr"><div dir="ltr"><div dir="ltr">Yours sincerely,</div><div dir="ltr">Dmitry Sutyagin</div><div dir="ltr">OpenStack Escalations Engineer</div><div dir="ltr">Mirantis, Inc.</div></div></div></div></div></div>
</div></div>