issue [#654]: LDAP integration is not built as designed

Project:iMo
Component:Server code
Category:bug report
Priority:normal
Assigned:gkozma
Status:active
Description

I remember the design goes like this:

When a user wants to log in, then AuthenticationManager tries to search logincode (using beIdentity) in table AuthenticationIdentity.
When AuthenticationIdentity is available and marked as internal, then AuthenticationManager knows that AuthenticationProvider = "Imo.Authentication.Server.AuthenticationProvider" and then calls AuthenticationProvider:VerifyUser() (which results that daIdentity compares the password with the password that is stored in table AuthenticationIdentity).

When AuthenticationIdentity is available and marked as EXTERNAL, then AuthenticationManager knows that AuthenticationProvider = "Imo.Ldap.Server.LDAPProvider" and then calls AuthenticationProvider:VerifyUser() (which results that password is validated in LDAP or ActiveDirectory).

When AuthenticationIdentity is not available (because the user never tried login before) then AuthenticationManager would try if it is available in LDAP, and when it exists in LDAP then it would copy the data into AuthenticationIdentity and mark it as external.

However this is not how the source-code works.
The current version of the source-code just loads one AuthenticationProvider based on the plugin-manager, so it ONLY uses internal users or it uses ONLY ldap. I think the AuthenticationManager needs to be able to load two different AuthenticationProviders: one for internal users and one for external users and use them both.

Comments

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.

#1

Assigned to:Anonymous» gkozma