<div dir="ltr"><div>I got a lot further on this today. I have the test ldap setup with several test users and groups. I have django-auth-ldap configured mostly authenticating username/password against ldap instead of the internal database first. Once that is fully working the users will auto-populate into django and the groups should follow easily.</div><div><br></div><div>Once that's done I'll be unblocked to finish the RBAC PoC. The rest of the parts are straightforward given the testing I've already done. More updates to come.<br></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Mon, Jun 15, 2020 at 5:03 PM Brian Bouterse <<a href="mailto:bmbouter@redhat.com">bmbouter@redhat.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div>I got the ldap reference implementation performing auth really nicely against a test ldap with this guide:  <a href="https://www.nginx.com/blog/nginx-plus-authenticate-users/" target="_blank">https://www.nginx.com/blog/nginx-plus-authenticate-users/</a> Now there are some new challenges though:<br></div><div><br></div><div>* Great that we can auth users, but we need nginx to extract-and-forward the group information to Pulp itself. That way a middleware can create the user AND group info in the backend.</div><div>* we have to figure this out all again in Apache...</div><div><br></div><div>Maybe we should be integrating Pulp directly against django-auth-ldap [0]. I am going to try that next. The work I've done isn't 100% reusable there, but most of it is because the test server and configs I used can all be reused directly with django-auth-ldap. The concern with this approach is that we would be supporting LDAP (and transitively Active Directory) but are there other directory services Pulp needs to support?<br></div><div><br></div><div>I also emailed Bin Li asking for info on how their user and group management works.<br></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Tue, Jun 9, 2020 at 11:48 AM Adrian Likins <<a href="mailto:alikins@redhat.com" target="_blank">alikins@redhat.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div dir="ltr"><br></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Fri, Jun 5, 2020 at 8:23 PM Brian Bouterse <<a href="mailto:bmbouter@redhat.com" target="_blank">bmbouter@redhat.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div><br></div><div>1) django admin (the built in django UI) will be the mechanism administrators use to assign permissions to users and groups. This means the use of django admin with pulp is very likely (to me).<br></div><div><br></div></div></blockquote><div>Hopefully <a href="https://github.com/pulp/pulpcore/pull/705" target="_blank">https://github.com/pulp/pulpcore/pull/705</a> will be useful here.</div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div></div><div>2) externally defined users and groups will need to be "replicated" to django's db at login time, probably using headers from the webserver This is consistent w/ the approach recommended here:  <a href="https://www.adelton.com/django/external-authentication-for-django-projects" target="_blank">https://www.adelton.com/django/external-authentication-for-django-projects</a></div></div></blockquote><div><br></div><div>This is more or less what galaxy_ng ends up doing, at least for the scenarios where it runs hosted with external SSO. </div><div><a href="https://github.com/ansible/galaxy_ng/blob/master/galaxy_ng/app/auth/auth.py#L51" target="_blank">https://github.com/ansible/galaxy_ng/blob/master/galaxy_ng/app/auth/auth.py#L51</a> for example. </div><div> </div></div></div>
</blockquote></div>
</blockquote></div>