Re: [pgAdmin4][Patch] - RM 2186 - Support external authentication sources [LDAP]

From: Khushboo Vashi <khushboo(dot)vashi(at)enterprisedb(dot)com>
To: Akshay Joshi <akshay(dot)joshi(at)enterprisedb(dot)com>
Cc: Dave Page <dave(dot)page(at)enterprisedb(dot)com>, pgadmin-hackers <pgadmin-hackers(at)postgresql(dot)org>
Subject: Re: [pgAdmin4][Patch] - RM 2186 - Support external authentication sources [LDAP]
Date: 2020-04-03 09:07:02
Message-ID: CAFOhELeVr6ZA6JShH=t+jn2egWkmkBPGrLixkmEv8PW-_RhGTA@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgadmin-hackers

Hi,

Please find the attached updated patch.

On Fri, Apr 3, 2020 at 1:50 PM Akshay Joshi <akshay(dot)joshi(at)enterprisedb(dot)com>
wrote:

> Hi Khushboo
>
> Some more review comments:
>
> - Fix one small PEP8 issue.
>
> Fixed.

>
> - If ipAddress or Port is not set in the configuration file then
> browser showing the following data, it should be shown proper error message
> on the login page
> - {"success":0,"errormsg":"Port could not be cast to integer value
> as '<port>'","info":"","result":null,"data":null}
>
> Fixed.

>
> - Disable the Username field in the User Management dialog if the
> authentication source is set to internal.
>
> Done.

>
> - API Test cases are failing if LDAP related settings are not
> provided in the test_config.json file. If the configuration is not provided
> then LDAP tests should be skipped.
>
> Fixed.

> @Dave, I have tested and done the code review. Can you please do it once
> as well, whenever Khushboo will fix and send the updated patch?
>
> Thanks,
Khushboo

>
> On Thu, Apr 2, 2020 at 7:00 PM Khushboo Vashi <
> khushboo(dot)vashi(at)enterprisedb(dot)com> wrote:
>
>> Hi Akshay,
>>
>> Please find the attached updated patch.
>>
>> On Thu, Apr 2, 2020 at 4:55 PM Akshay Joshi <
>> akshay(dot)joshi(at)enterprisedb(dot)com> wrote:
>>
>>> Hi Khushboo
>>>
>>> Following are the initial review comments (GUI):
>>>
>>> *Desktop Mode: *
>>>
>>> - KeyError: '_auth_source_manager_obj' in desktop mode. (*Note*
>>> error occurs when the patch has applied and server mode is False.)
>>>
>>> Fixed.
>>
>>> *Server Mode:*
>>>
>>> AUTHENTICATION_SOURCES = ['internal']
>>>
>>>
>>> - Try to add a new user with the same email address, it throws a
>>> unique key constraint error. Validation was there previously before saving
>>> it.
>>>
>>> Fixed.
>>
>>> AUTHENTICATION_SOURCES = ['internal', 'ldap']
>>>
>>> - Try to add a new user with the same email address, it throws
>>> unique key constraint error which should not it may possible that the user
>>> has the same email address for internal and ldap.
>>>
>>> If the source is internal, it will not allow but with ldap, we can add
>> the user with the same email id.
>>
>>> AUTHENTICATION_SOURCES = ['ldap']
>>>
>>> - If ipAddress or Port is not set in the configuration file then
>>> browser showing the following data, it should be shown proper error message
>>> on the login page
>>> - {"success":0,"errormsg":"Port could not be cast to integer
>>> value as '<port>'","info":"","result":null,"data":null}
>>>
>>> Done
>>
>>>
>>> - If IP address and port is provided but it is wrong, it shows the
>>> following error, can we make a generic error message? Also clicking on the
>>> Close button on that error message is not working.
>>> [image: Screenshot 2020-04-02 at 4.23.55 PM.png]
>>>
>>> I will look into the close button issue as it is an existing issue.
>>
>>>
>>> -
>>> - IP address and port of LDAP server are correct, give wrong user
>>> name and password, it shows error "Error binding to the LDAP Server: None".
>>> Please correct the appropriate error message.
>>>
>>> Fixed.
>>
>>>
>>> - All the configuration parameter is correct and tries to log in on
>>> LDAP server using username (*not email address*) and password got following
>>> error:
>>>
>>> current_user.email.split('@')[0] if config.SERVER_MODE is True
>>> AttributeError: 'NoneType' object has no attribute 'split'.
>>>
>>> Fixed.
>>
>>> Not able to test due to the above error. Please fix and resend the patch.
>>>
>>
>> Thanks,
>> Khushboo
>>
>> Thanks,
>> Khushboo
>>
>>>
>>> On Thu, Apr 2, 2020 at 2:06 PM Khushboo Vashi <
>>> khushboo(dot)vashi(at)enterprisedb(dot)com> wrote:
>>>
>>>> Hi,
>>>>
>>>> Resending the patch.
>>>> Missed the requirements.txt file in the previous patch.
>>>>
>>>> Thanks,
>>>> Khushboo
>>>>
>>>> On Wed, Apr 1, 2020 at 5:38 PM Khushboo Vashi <
>>>> khushboo(dot)vashi(at)enterprisedb(dot)com> wrote:
>>>>
>>>>> Hi,
>>>>>
>>>>> Please find the attached updated patch which includes the review
>>>>> comments given in the review meeting:
>>>>>
>>>>> 1. Do not store password for ldap user in sqlite database
>>>>> 2. Forgot Password : Give error to ldap users
>>>>> 3. User Management dialog changes
>>>>> 4. Authentication source display besides username / email after login
>>>>>
>>>>> Thanks,
>>>>> Khushboo
>>>>>
>>>>>
>>>>> On Tue, Mar 24, 2020 at 3:20 PM Khushboo Vashi <
>>>>> khushboo(dot)vashi(at)enterprisedb(dot)com> wrote:
>>>>>
>>>>>> Please disregard my previous patch, attached the updated patch. :)
>>>>>>
>>>>>>
>>>>>> On Tue, Mar 24, 2020 at 10:32 AM Khushboo Vashi <
>>>>>> khushboo(dot)vashi(at)enterprisedb(dot)com> wrote:
>>>>>>
>>>>>>> Please disregard my previous patch, attached the updated patch.
>>>>>>>
>>>>>>> On Tue, Mar 24, 2020 at 10:29 AM Khushboo Vashi <
>>>>>>> khushboo(dot)vashi(at)enterprisedb(dot)com> wrote:
>>>>>>>
>>>>>>>> Hi,
>>>>>>>>
>>>>>>>> Please find the attached updated patch.
>>>>>>>>
>>>>>>>>
>>>>>>>> On Tue, Mar 17, 2020 at 4:11 PM Dave Page <dpage(at)pgadmin(dot)org>
>>>>>>>> wrote:
>>>>>>>>
>>>>>>>>> Hi
>>>>>>>>>
>>>>>>>>> On Tue, Mar 17, 2020 at 10:24 AM Khushboo Vashi <
>>>>>>>>> khushboo(dot)vashi(at)enterprisedb(dot)com> wrote:
>>>>>>>>>
>>>>>>>>>> Hi Dave,
>>>>>>>>>>
>>>>>>>>>> Thanks for the review.
>>>>>>>>>>
>>>>>>>>>> On Tue, Mar 17, 2020 at 3:42 PM Dave Page <dpage(at)pgadmin(dot)org>
>>>>>>>>>> wrote:
>>>>>>>>>>
>>>>>>>>>>> Hi
>>>>>>>>>>>
>>>>>>>>>>> 30 second read of the first version of the patch...
>>>>>>>>>>>
>>>>>>>>>>> - Please move the configuration into config.py. Users should
>>>>>>>>>>> never have to modify a distributed file (it messes up packaging). I don't
>>>>>>>>>>> see any reason to use a different file just for auth config.
>>>>>>>>>>>
>>>>>>>>>>> There are many settings for the LDAP, and in the future we will
>>>>>>>>>> add other external sources also, so I thought it would be better if we have
>>>>>>>>>> different file for the authentication.
>>>>>>>>>>
>>>>>>>>>
>>>>>>>>> Sure, but our config file is small compared to many. Splitting
>>>>>>>>> things out is more confusing for users. If they want to do that themselves
>>>>>>>>> of course, they can add a config_local.py file which includes other files
>>>>>>>>> as needed.
>>>>>>>>>
>>>>>>>> Fixed.
>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>> - I think all config options should be prefixed with LDAP_ as we
>>>>>>>>>>> may have things like CERT_FILE for other purposes too.
>>>>>>>>>>>
>>>>>>>>>>> Sure.
>>>>>>>>>>
>>>>>>>>> Done.
>>>>>>>>
>>>>>>>>> - I don't see any test cases.
>>>>>>>>>>>
>>>>>>>>>>> I will think about this, as right now no idea how to write test
>>>>>>>>>> cases for this.
>>>>>>>>>>
>>>>>>>>>
>>>>>>>>> It should be fairly straightforward to write tests for some of the
>>>>>>>>> functions in the auth classes. For testing the actual LDAP stuff, we
>>>>>>>>> probably need to add LDAP config options to test_config.json, and only if
>>>>>>>>> present, run the tests. That would probably need to support a list of LDAP
>>>>>>>>> servers, so we can test with different configurations (LDAP, LDAPS,
>>>>>>>>> LDAP_STARTTLS, AD etc).
>>>>>>>>>
>>>>>>>>>
>>>>>>>> Done.
>>>>>>>>
>>>>>>>> Thanks,
>>>>>>>> Khushboo
>>>>>>>>
>>>>>>>>> Thanks.
>>>>>>>>>>>
>>>>>>>>>>> Thanks,
>>>>>>>>>> Khushboo
>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> On Tue, Mar 17, 2020 at 8:55 AM Khushboo Vashi <
>>>>>>>>>>> khushboo(dot)vashi(at)enterprisedb(dot)com> wrote:
>>>>>>>>>>>
>>>>>>>>>>>> Hi,
>>>>>>>>>>>>
>>>>>>>>>>>> Please find the attached patch to support LDAP Authentication
>>>>>>>>>>>> in Server mode.
>>>>>>>>>>>> To test the patch, config_auth.py needs to be configured for
>>>>>>>>>>>> LDAP configurations. The config settings are explained in this file in
>>>>>>>>>>>> detail. After configuring the parameters, start the pgadmin server in
>>>>>>>>>>>> Server mode and connect with LDAP server with the valid user via login page.
>>>>>>>>>>>>
>>>>>>>>>>>> I have tested this patch with ldap and ldap + ssl/tls. With the
>>>>>>>>>>>> TLS, I have used the default config of ldap3 without certificates.
>>>>>>>>>>>>
>>>>>>>>>>>> @Dave, can you please review this patch, as you have a better
>>>>>>>>>>>> understanding of LDAP and you can easily pointed out if I have missed
>>>>>>>>>>>> anything.
>>>>>>>>>>>>
>>>>>>>>>>>> Note: For the document update I will create the task and assign
>>>>>>>>>>>> to Nidhi for the same.
>>>>>>>>>>>>
>>>>>>>>>>>> Thanks,
>>>>>>>>>>>> Khushboo
>>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> --
>>>>>>>>>>> Dave Page
>>>>>>>>>>> Blog: http://pgsnake.blogspot.com
>>>>>>>>>>> Twitter: @pgsnake
>>>>>>>>>>>
>>>>>>>>>>> EnterpriseDB UK: http://www.enterprisedb.com
>>>>>>>>>>> The Enterprise PostgreSQL Company
>>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>
>>>>>>>>> --
>>>>>>>>> Dave Page
>>>>>>>>> Blog: http://pgsnake.blogspot.com
>>>>>>>>> Twitter: @pgsnake
>>>>>>>>>
>>>>>>>>> EnterpriseDB UK: http://www.enterprisedb.com
>>>>>>>>> The Enterprise PostgreSQL Company
>>>>>>>>>
>>>>>>>>
>>>
>>> --
>>> *Thanks & Regards*
>>> *Akshay Joshi*
>>>
>>> *Sr. Software Architect*
>>> *EnterpriseDB Software India Private Limited*
>>> *Mobile: +91 976-788-8246*
>>>
>>
>
> --
> *Thanks & Regards*
> *Akshay Joshi*
>
> *Sr. Software Architect*
> *EnterpriseDB Software India Private Limited*
> *Mobile: +91 976-788-8246*
>

Attachment Content-Type Size
RM_2186_v5.patch application/octet-stream 70.6 KB

In response to

Responses

Browse pgadmin-hackers by date

  From Date Subject
Next Message Aditya Toshniwal 2020-04-03 09:13:49 Re: [pgAdmin][RM2172] Search Objects Functionality
Previous Message Vishal Sawale 2020-04-03 09:06:45 [Accessibility] Parse & validate the web pages