c# - ASP.NET 5/MVC 6 本地事件目录

标签 c# active-directory ldap asp.net-identity asp.net-core-mvc

对于早期版本的 .NET 应用程序模板,即 4.5.2,您可以创建一个新的 Web 应用程序,将身份验证更改为“工作和学校帐户”,然后选择“内部部署”。在 .NET 5 Web 应用程序模板中,“工作和学校帐户”选项没有“本地”选项。

如何使用 ASP.NET Identity 在 .NET 5 中通过本地 Active Directory (LDAP) 进行身份验证。明确地说,我不是在寻找 Windows 身份验证,我想让用户输入他们的凭据并处理针对本地 AD 的身份验证。 IOW,用户不需要登录到 Windows 机器,他们可以从他们的移动设备等访问。

我搜索了几个小时都没有结果,但如果答案就在某处,我也不会感到惊讶。感谢您的帮助!

最佳答案

LDAP 和本地身份验证不是一回事,这就是为什么恕我直言,本地模式已作为“开箱即用”选项消失的原因 - 也因为微软几乎没有插入每个人转向蔚蓝云:)

On-Premises 模式(如您所见 here )是一种将 AD 用作联合提供者的方法(在 SF 上查看),如 Twitter 或 Facebook,如果您愿意的话;您可以在本地(如果您的 AD 支持)或在云端(使用 Azure)使用 ADFS。

如果您正在寻找 LDAP 身份验证,最简单的工作方法是使用“个人用户帐户”模式(类似于旧学校形式的身份验证)并使用 AD 作为用户身份验证的真实来源,例如(查看 this SO 文章):

    using System.Security;
    using System.DirectoryServices.AccountManagement;
    public struct Credentials
    {
        public string Username;
        public string Password;
    }

    public class Domain_Authentication
    {
        public Credentials Credentials;
        public string Domain;
        public Domain_Authentication(string Username, string Password, string SDomain)
        {
            Credentials.Username = Username;
            Credentials.Password = Password;
            Domain = SDomain;
        }
        public bool IsValid()
        {
            using (PrincipalContext pc = new PrincipalContext(ContextType.Domain, Domain))
            {
                // validate the credentials
                return pc.ValidateCredentials(Credentials.Username, Credentials.Password);
            }
        }
    }

无论如何,如果您正在使用异构系统,或者如果您更喜欢使用更“安全”的东西,我建议您使用 OAuth2,它在 MVC 6 中作为开箱即用的支持。

更新

如果您想将 ASP.NET Identity 与 LDAP 一起使用,您可以创建您的个人自定义存储提供程序,如完美解释 here . 这并不困难,但实现起来可能会很长。

关于c# - ASP.NET 5/MVC 6 本地事件目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34834504/

相关文章:

c# - 将 C# 字符串作为 SELECT WHERE IN 的 SQL 参数传递

c# - MSBuild 程序集锁

asp.net - 允许 ApiController 上的匿名应用程序

active-directory - 我需要从 ldap 中找出禁用的用户

active-directory - AD 与 Liferay 同步

active-directory - LDAP 嵌套组成员身份

c# - C#中如何去除字符串中的斜线

c# - C# 中 &= 和 |= 运算符的用途是什么

powershell - 如何为Powershell脚本修复歧义参数

c++ - 如何使用 C++ 以编程方式更新组策略?