如何使用身份服务器对活动目录用户进行身份验证?

Posted

技术标签:

【中文标题】如何使用身份服务器对活动目录用户进行身份验证?【英文标题】:How to use identity server for authenticating active directory users? 【发布时间】:2020-03-20 15:57:07 【问题描述】:

我想使用 身份服务器 对我的用户进行身份验证和授权。 我只希望用户资源使用 活动目录用户 以及我想从 asp.net 身份使用的角色等。

我也不想使用windows身份验证来进行身份验证。

我正在使用 identity server 4asp.net core 3.2

services.AddIdentityServer().AddDeveloperSigningCredential()
    //.AddTestUsers(Config.GetUsers())
    .AddInMemoryIdentityResources(Config.GetIdentityResources())
    .AddInMemoryClients(Config.GetClients());

【问题讨论】:

【参考方案1】:

首先,您需要安装以下软件包才能使用 ActiveDirectory 功能。

Install-Package Microsoft.Windows.Compatibility 

其次,您需要实现 IResourceOwnerPasswordValidator 并在其中使用 ActiveDirectory 检查用户密码。

public class ActiveDirectoryResourceOwnerPasswordValidator : IResourceOwnerPasswordValidator

    public Task ValidateAsync(ResourceOwnerPasswordValidationContext context)
    
        const string LDAP_DOMAIN = "exldap.example.com:5555";

        using (var pcontext = new PrincipalContext(ContextType.Domain, LDAP_DOMAIN, "service_acct_user", "service_acct_pswd"))
        
            if (pcontext.ValidateCredentials(context.UserName, context.Password))
            
                // user authenticated and set context.Result
            
        

        // User not authenticated and set context.Result
        return Task.CompletedTask;
    

然后在 Startup.cs 上注册

services.AddSingleton<IResourceOwnerPasswordValidator, ActiveDirectoryResourceOwnerPasswordValidator>();

【讨论】:

以上是关于如何使用身份服务器对活动目录用户进行身份验证?的主要内容,如果未能解决你的问题,请参考以下文章

使用 python + ldap 对活动目录进行身份验证

身份服务器和活动目录

Azure 移动服务 - 多个 azure 活动目录

使用LDAP登录模块进行Teiid VDB数据虚拟化的身份验证失败

使用活动目录的 Spring 安全认证失败

Java Active Directory LDAP - 使用密码哈希对用户进行身份验证