【问题标题】:How can I authenticate a Windows Domain user from a .NET Core application running on Linux如何从在 Linux 上运行的 .NET Core 应用程序对 Windows 域用户进行身份验证
【发布时间】:2019-09-22 09:59:15
【问题描述】:

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

【问题讨论】:

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


【解决方案1】:

感谢@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 域控制器进行测试时,它在 win-x64 和 linux-arm 上运行良好。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-24
    • 2018-07-13
    • 1970-01-01
    • 2012-07-25
    • 1970-01-01
    相关资源
    最近更新 更多