linux - 如何从 Linux 上运行的 .NET Core 应用程序验证 Windows 域用户

标签 linux .net-core active-directory kerberos ntlm-authentication

假设我有一个接受用户名和密码的 .NET Core 控制台应用程序,该应用程序在 Linux 上运行。如何验证用户名和密码在 Windows 域 Controller (与 Linux 计算机在同一网络上运行)上是否有效?

最佳答案

感谢@gabriel-luci 的建议,我拼凑了这个使用 Novell.Directory.Ldap.NETStandard 的原始示例从我发现的其他人那里。

using Novell.Directory.Ldap;
using System;

namespace ConsoleApp
{
    class Program
    {
        static void Main()
        {
            Console.Write("Host: ");
            var dc = Console.ReadLine();
            Console.Write("Domain\\User: ");
            var parts = Console.ReadLine().Split("\\");
            var domain = parts[0];
            var user = parts[1];
            Console.Write("Password: ");
            var pass = Console.ReadLine();
            try
            {
                using (var ldap = new LdapConnection { SecureSocketLayer = false })
                {
                    ldap.Connect(dc, LdapConnection.DefaultPort);
                    ldap.Bind($"{user}@{domain}", pass);
                    if (!ldap.Bound)
                    {
                        Console.Write("Not ");
                    }
                    Console.WriteLine("Valid");
                }
            }
            catch (LdapException e)
            {
                Console.WriteLine(e.Message);
            }
        }
    }
}

当我针对在 VM 中运行的 Windows 2012 域 Controller 对其进行测试时,它在 win-x64 和 linux-arm 上运行良好。

enter image description here

关于linux - 如何从 Linux 上运行的 .NET Core 应用程序验证 Windows 域用户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58048078/

相关文章:

linux - 将 ZFS 快照应用于非 ZFS FS

python - 如何按数字对 linux 中的文件进行排序?

linux - 使用 snmp 监控部署在 Tomcat 中的 J2EE 应用程序

.net - Azure 管道 : task PublishBuildArtifacts avoid zip

java - Tomcat AD 身份验证 - 允许所有 AD 用户

linux - 在 linux 中等待条件变量时,当 condition_timed_wiat 时间过去时会发生什么

c# - 如何为通过 HttpClientFactory 直接创建的 HttpClient 配置 Web 代理?

.net - 在 dotnet run 解决方案中设置默认项目

java - 如何通过java编程检索Active Directory中的属性 "unicodePwd"

azure - Microsoft 图形浏览器 - 创建用户并更新登录用户名/电子邮件