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的方法来自定义实现。

      

  • 相关阅读:
    django 使用form组件提交数据之form表单提交
    django from验证组件
    django中间件
    gin中http重复解析body数据失败
    go 常用工具链
    git 提交规范
    go简单实现heap
    Go优雅实现选传参数
    [已解决]protoc-gen-go: unable to determine Go import path for "xxx.proto"
    Go编译工具命令
  • 原文地址:https://www.cnblogs.com/ceci/p/9263700.html
Copyright © 2011-2022 走看看