ASP.NET Boilerplate通过LDAP over SSL(LDAPS)进行身份验证

3
我不确定 ASP.NET Boilerplate 是否支持使用 Active Directory 的 LDAP over SSL 协议进行身份验证。该文档说明支持LDAP协议,但没有提到使用LDAPS或类似过程的远程认证机制。
我认为 ASP.NET Boilerplate 使用 System.DirectoryServices 命名空间及其组件来处理 LDAP 认证,如果是这样,是否应尝试修改 Boilerplate 的代码以支持 LDAPS,类似于这样,还是应将 LDAPS 实现分离到自定义类中并避免使用 Boilerplate 的 LDAP?
1个回答

3
具体来说,Abp Zero Ldap 使用 System.DirectoryServices.AccountManagement 命名空间中的 PrincipalContext
默认情况下,它使用 ContextOptions.Negotiate 调用 principalContext.ValidateCredentials() 与 AD 服务器通信。
请参见 https://github.com/aspnetboilerplate/aspnetboilerplate/blob/14e41c9ce2d902b2661fca63f4074943e9036c5b/src/Abp.Zero.Ldap/Ldap/Authentication/LdapAuthenticationSource.cs#L98 您可以尝试重写 ValidateCredentials() 并将 ContextOptiona.Negotiate | Context options.SecureSocketLayer 传递给 principalContext.ValidateCredentials()

查看更多 https://learn.microsoft.com/en-us/dotnet/api/system.directoryservices.accountmanagement.contextoptions

由于Abp Zero Ldap模块与Abp Zero用户登录流程完全集成,因此我们仍然建议您使用它。

如果您仍想使用LdapConnection验证AD服务器,您可以通过扩展LdapAuthenticationSource<TTenant, TUser>来创建自己的ldap身份验证源。


谢谢您的回答。我会尝试这种方法,希望修改所提到的枚举将是切换到LDAPS所需的唯一修改,但我们能有多么确定这是唯一需要修改的地方呢? - astralmaster
根据文档,使用上下文选项应足以进行SSL连接。但是,我发现使用带有自签名证书的PrincipalContext可能存在潜在的缺陷。请参见https://dev59.com/HKXja4cB1Zd3GeqPY_I1#46901693。 - ryan.c

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接