zoukankan      html  css  js  c++  java
  • ABP实战--集成Ladp/AD认证

      参照Hunter的ABP-Zero模块中用户管理部分。

      由于我们公司的各系统基本都是AD帐号登录的,所以我们需扩展ABP的AuthenticationSource。

    • 添加MyLdapAuthenticationSource.cs及MyLdapSettings.cs

      Core层的Authorization目录下新建Ldap目录,并新建两个MyLdapAuthenticationSource.csMyLdapSettings.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的方法来自定义实现。

      

  • 相关阅读:
    SET NOCOUNT ON 作用
    C# WinForm控件之Dock先后顺序调整
    Sql查询按某字段值排序
    sql server 中DateName()函数及DatePart()函数
    js的字符串代码库及讲解
    js实现字符串格式的日期加一天
    1、用datetimepicker插件实现限定时间范围的选择 2、时间插件实现默认当天的时间和只能选择小于今天的日期
    js判断开始时间不能小于结束时间
    vue监听路由的变化,跳转到同一个页面时,Url改变但视图未重新加载问题
    js对json格式对象进行增加,修改,删除
  • 原文地址:https://www.cnblogs.com/ceci/p/9263700.html
Copyright © 2011-2022 走看看