| Project: | iMo |
| Component: | Server code |
| Category: | bug report |
| Priority: | normal |
| Assigned: | gkozma |
| Status: | active |
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
#1