I don't see anything in the documentation on how to:
答案 0 :(得分:1)
LDAP / Active Directory
LdapAuthenticationSource是外部身份验证的一种实现,可以让用户使用他们的LDAP(活动目录)用户名和密码登录。
如果我们想使用LDAP身份验证,我们首先将Abp.Zero.Ldap nuget包添加到我们的项目(通常是Core(域)项目)。然后我们应该为我们的应用程序扩展LdapAuthenticationSource,如下所示:
public class MyLdapAuthenticationSource : LdapAuthenticationSource<Tenant, User>
{
public MyLdapAuthenticationSource(ILdapSettings settings, IAbpZeroLdapModuleConfig ldapModuleConfig)
: base(settings, ldapModuleConfig)
{
}
}
最后,我们应该为AbpZeroLdapModule设置一个模块依赖项,并使用上面创建的auth源启用LDAP:
[DependsOn(typeof(AbpZeroLdapModule))]
public class MyApplicationCoreModule : AbpModule
{
public override void PreInitialize()
{
Configuration.Modules.ZeroLdap().Enable(typeof (MyLdapAuthenticationSource));
}
...
}
完成这些步骤后,将为您的应用程序启用LDAP模块。但默认情况下不启用LDAP身份验证。我们可以使用设置启用它。 设置
LdapSettingNames类定义设置名称的常量。您可以在更改设置(或获取设置)时使用这些常量名称。 LDAP设置是每个租户(适用于多租户应用程序)。因此,不同的租户有不同的设置(请参阅github上的设置定义)。
正如您在MyLdapAuthenticationSource构造函数中看到的,LdapAuthenticationSource期望ILdapSettings作为构造函数参数。此接口用于获取LDAP设置,如域,用户名和密码,以连接到Active Directory。默认实现(LdapSettings类)从设置管理器获取这些设置。
如果您使用设置管理器,那么没问题。您可以使用设置管理器API更改LDAP设置。如果需要,可以将初始/种子数据添加到数据库以默认启用LDAP身份验证。
注意:如果您没有定义域,用户名和密码,如果您的应用程序在具有适当权限的域中运行,则LDAP身份验证适用于当前域。 自定义设置
如果要定义另一个设置源,可以实现自定义ILdapSettings类,如下所示:
public class MyLdapSettings : 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 null;
}
public async Task<string> GetDomain(int? tenantId)
{
return null;
}
public async Task<string> GetUserName(int? tenantId)
{
return null;
}
public async Task<string> GetPassword(int? tenantId)
{
return null;
}
}
并在模块的PreInitialize中将其注册到IOC:
[DependsOn(typeof(AbpZeroLdapModule))]
public class MyApplicationCoreModule : AbpModule
{
public override void PreInitialize()
{
IocManager.Register<ILdapSettings, MyLdapSettings>(); //change default setting source
Configuration.Modules.ZeroLdap().Enable(typeof (MyLdapAuthenticationSource));
}
...
}
然后您可以从任何其他来源获取LDAP设置。
https://aspnetboilerplate.com/Pages/Documents/Zero/User-Management#ldapactive-directory