Hello, i often need to use another table for users, mostly is a VIEW from another system like Active Directory. Is is possible to have custom View table for users and using role, permission and another good functionality of ABP ?
My poople view look like:
PeopleView: Login, Department, Email with thousands of row.
User will be automaticly logged to system by his login - Windows Auth.
Do anybody have the same problem ?
Thanks !
9 Answer(s)
-
0
You may try to define EntityFramework mapping onmodelcreating. I did not try to map entities to views in EF. I'm not sure if it works. I assume that you're using module-zero. If so, it has an Actice Directory (LDAP) login support (<a class="postlink" href="http://www.aspnetboilerplate.com/Pages/Documents/Zero/User-Management#ldapactive-directory">http://www.aspnetboilerplate.com/Pages/ ... -directory</a>). Isn't that sufficient? Also you can override methods of LdapAuthenticationSource to get additional info from AD (see <a class="postlink" href="https://github.com/aspnetboilerplate/module-zero/blob/master/src/Abp.Zero.Ldap/Ldap/Authentication/LdapAuthenticationSource.cs">https://github.com/aspnetboilerplate/mo ... nSource.cs</a> to understand it).
-
0
Thanks for reply! Let´s assume that I need to use different table than AbpUser for login check, how would you preoceed ? For login to apllication is windows username needed, if username is in DB , then user is logged. Thats all..
By the way Views is possible to map...
Thanks !
-
0
Hi,
I designed External Authentication for that. See docs: <a class="postlink" href="http://www.aspnetboilerplate.com/Pages/Documents/Zero/User-Management#external-authentication">http://www.aspnetboilerplate.com/Pages/ ... entication</a>
public class MyExternalAuthSource : DefaultExternalAuthenticationSource<Tenant, User> { public override string Name { get { return "MyCustomSource"; } } public override Task<bool> TryAuthenticateAsync(string userNameOrEmailAddress, string plainPassword, Tenant tenant) { //TODO: authenticate user from any other table, database or even from an external service... } }
This may help.
-
0
Ok I used your basic sample, with simply retun true. I registered this MyExternalAuthSource, in Web project.
public override void Initialize() { IocManager.RegisterAssemblyByConvention(Assembly.GetExecutingAssembly()); AreaRegistration.RegisterAllAreas(); RouteConfig.RegisterRoutes(RouteTable.Routes); BundleConfig.RegisterBundles(BundleTable.Bundles); } } public class MyExternalAuthSource : DefaultExternalAuthenticationSource<Tenant, User> { public override string Name { get { return "MyCustomSource"; } } public override async Task<bool> TryAuthenticateAsync(string userNameOrEmailAddress, string plainPassword, Tenant tenant) { //TODO: authenticate user and return true or false return true; } }
But i dont know what i must tu do next for login person by using this external source. In documentation this is missing and I´m confused . What i must change in Login method in auth controller ?
I algo got this error:
No component for supporting the service TT.MyExternalAuthSource was found Popis: Při provádění aktuálního webového požadavku došlo k neošetřené výjimce. Další informace o chybě a o jejím původu v kódu naleznete v trasování zásobníku. Podrobnosti o výjimce: Castle.MicroKernel.ComponentNotFoundException: No component for supporting the service TT.MyExternalAuthSource was found
Ok I solved this by add this code to intialization of Core Module:
public override void Initialize() { IocManager.RegisterAssemblyByConvention(Assembly.GetExecutingAssembly()); IocManager.Register<MyExternalAuthSource>(DependencyLifeStyle.Transient); }
Mayby another question. I notice that when use Custom auth login, AbpUser table automaticly create new record for logged person name and also generate password. Is this appropoach good for my situation ( I have onother table with users) so roles and other stuff are still depended on AbpUser ?
Thnaks for any tip!
-
0
ABP creates user if he does not exists or can update. You can override some virtual methods to override create/update logic. This is better since there are many foreign key relations to AbpUsers table and User record should be there.
By the way, you could register MyExternalAuthSource as shown below:
public class MyExternalAuthSource : DefaultExternalAuthenticationSource<Tenant, User>, ITransientDependency { ... }
-
0
Ok tahnks works. I´m aldo traing LDAP auth:
In my core module in PreInitialize method I call this:
IocManager.Register<ILdapSettings, MNDLdapSettings>(); //change default setting source Configuration.Modules.ZeroLdap().Enable(typeof(MyLdapAuthenticationSource));
I have also class:
public class MyLdapAuthenticationSource : LdapAuthenticationSource<Tenant, User> { public MyLdapAuthenticationSource(ILdapSettings settings, IAbpZeroLdapModuleConfig ldapModuleConfig) : base(settings, ldapModuleConfig) { } }
Then i Created this settings class:
public class MNDLdapSettings : ILdapSettings { public async Task<bool> GetIsEnabled(int? tenantId) { return true; } public async Task<ContextType> GetContextType(int? tenantId) { return ContextType.Domain; } public async Task<string> GetContainer(int? tenantId) { return ""; } public async Task<string> GetDomain(int? tenantId) { return "domain"; } public async Task<string> GetUserName(int? tenantId) { return "name"; } public async Task<string> GetPassword(int? tenantId) { return "pass"; } }
I also tried use your default setting like you noted:
Note: If you don't define domain, username and password, LDAP authentication works for current domain if your application runs in a domain with appropriate privileges.
And try enable LDAP like in this post / last unanswered question: #205@a9e9ccf7-5841-4126-9423-c0d5b678eb9b
But no work , the same problem with : Abp.AbpException: There is no setting defined with name: Abp.Zero.Ldap.IsEnabled
When is LDAP enablet and in cotroller is [AbdAuthorized] attribute. User will be logged automaticly ?
Please help ... Thnaks!
But auth no work for me, how can I detect error in credectials etc or debug auth using LDAP ? Thnaks
-
0
OK SOLVED :)
I created my custom config and enable correctly, LDAP support . Works perfect !! Thank you!
-
0
<cite>klainer: </cite> OK SOLVED :)
I created my custom config and enable correctly, LDAP support . Works perfect !! Thank you!
Hi @klainer, Do you create external authentication source? Can you tell me how to do? This document <a class="postlink" href="https://aspnetboilerplate.com/Pages/Documents/Zero/User-Management#external-authentication">https://aspnetboilerplate.com/Pages/Doc ... entication</a> is poor :( , I do not know how to implement it.
Thanks!
-
0
Hi @VuCA,
Probably @klainer is just configured the Ldap settings, didn't create an external auth source. When you debug your code, can you get a breakpoint in your custom auth source ?
If not, please send your project to us and we will check it.
Thanks.