ABP实战--集成Ladp/AD认证
2024-10-12 06:11:14
参照Hunter的ABP-Zero模块中用户管理部分。
由于我们公司的各系统基本都是AD帐号登录的,所以我们需扩展ABP的AuthenticationSource。
添加MyLdapAuthenticationSource.cs及MyLdapSettings.cs
Core层的Authorization目录下新建Ldap目录,并新建两个MyLdapAuthenticationSource.cs及MyLdapSettings.cs,代码如下:
MyLdapAuthenticationSource.cs
public class MyLdapAuthenticationSource : LdapAuthenticationSource<Tenant, User>
{
public MyLdapAuthenticationSource(ILdapSettings settings, IAbpZeroLdapModuleConfig ldapModuleConfig)
: base(settings, ldapModuleConfig)
{
}
}
LdapAuthenticationSource的构造函数需要两个参数:ILdapSettings及IAbpZeroLdapModuleConfig,我们构造自己的MyLdapSettings:
MyLdapSettings.cs
public class MyLdapSettings : ILdapSettings
{
private const string DomainName = "XXXX.com";
private const string Container = "OU=XXX,DC=XXXX,DC=com";
private const string UserName = "XXXX";
private const string Password = "XXXX";
private const string ADPath = "LDAP://XXXXX"; 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 Container;
} public async Task<string> GetDomain(int? tenantId)
{
return DomainName;
} public async Task<string> GetUserName(int? tenantId)
{
return UserName;
} public async Task<string> GetPassword(int? tenantId)
{
return Password;
}
}
在CoreModule中启用
这里ILdapSettings我们使用MyLdapSettings来注册,但是IAbpZeroLdapModuleConfig使用默认的即可。
[DependsOn(typeof(AbpZeroCoreModule))]
public class CeciCoreModule : AbpModule
{
public override void PreInitialize()
{
Configuration.Auditing.IsEnabledForAnonymousUsers = true; IocManager.Register<IAbpZeroLdapModuleConfig, AbpZeroLdapModuleConfig>();
IocManager.Register<ILdapSettings, MyLdapSettings>(); //change default setting source
Configuration.Modules.ZeroLdap().Enable(typeof(MyLdapAuthenticationSource));
重载认证逻辑
目前我们只使用了Ldap最简逻辑,如需要复杂逻辑(如从AD中获得用户部门职位等),需重载LdapAuthenticationSource的方法来自定义实现。
最新文章
- UVa 112 - Tree Summing(树的各路径求和,递归)
- [排错] Status error 2850
- 淘宝PHPSDK2.0 剔除 lotusphp框架---兄弟连教程
- 零基础Android学习笔记-02 安卓程序生命周期
- sourceTree添加git密钥步骤
- MongoDB的数据类型
- 51cto运维培训课程
- CSS3 三角形运用
- [Swift]LeetCode796. 旋转字符串 | Rotate String
- TT-付款方式
- 【转载】 强化学习(八)价值函数的近似表示与Deep Q-Learning
- MySQL记录-Lost Connect MySQL Server during query解决方案
- (转) 干货 | 图解LSTM神经网络架构及其11种变体(附论文)
- 2018 Multi-University Training Contest 6 Solution
- Java中23种经典设计模式详解
- 设计模式--访问者模式C++实现
- 解决问题:zipimport.ZipImportError: can't decompress data; zlib not available
- Vee-validate学习
- TCP粘包处理通用框架--C代码
- 【原创】最有效解决IE8 position兼容性问题