对于早期版本的 .NET 应用程序模板(即 4.5.2),您可以创建新的 Web 应用程序,将身份验证更改为"工作和学校帐户",然后选择"本地"。在 .NET 5 Web 应用程序模板中,"工作和学校帐户"选项没有"本地"选项。
如何使用 ASP.NET 标识通过 .NET 5 中的本地活动目录 (LDAP) 进行身份验证。需要明确的是,我不是在寻找Windows身份验证,我希望用户输入其凭据并根据本地AD处理身份验证。 IOW,用户无需登录到Windows计算机,他们可以从移动设备等进行访问。
我已经搜索了几个小时无济于事,但如果答案在某个地方,我不会感到惊讶。 任何帮助不胜感激!
LDAP 和本地身份验证不是一回事,这就是为什么恕我直言,本地模式它作为"开箱即用"选项消失了 - 也因为Microsoft几乎没有推动每个人都迁移到 Azure 云:)
本地模式(如此处所示)是一种将 AD 用作联合提供程序(在 SF 上查看此内容)的方法,如 Twitter 或 Facebook,如果你愿意;你可以在本地(如果 AD 支持)或在云中使用 ADFS(使用 Azure)。
如果您正在寻找LDAP身份验证,最简单的方法是使用"个人用户帐户"模式(类似于老式的表单身份验证),并使用AD作为用户身份验证的真实来源,如下所示(查看此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 身份与 LDAP 一起使用,可以创建个人自定义存储提供程序,如此处完美解释。这并不困难,但实施起来可能很长。
没有本地选项,因为 .NET Core 在发布时不支持 WS-Fed。即使在旧版本的.NET on-permises中也不使用LDAP,它也使用WS-Fed与ADFS服务器通信。
非常旧的 ASP.NET 版本确实有一个AD成员资格提供程序,但它在安全性方面存在问题,并且没有进入 ASP.NET 4.0
您可以实现自己的成员资格提供程序,但是.NET Core没有LDAP/System.DirectoryService类,因此您必须从头开始完成所有操作,包括创建一个库以通过套接字进行LDAP。
TLDR:你不能。
我不知道任何模板或任何东西,但我按照本指南使用 oAuth2 和 Owin 设置了自己的身份提供程序。
http://bitoftech.net/2015/02/16/implement-oauth-json-web-tokens-authentication-in-asp-net-web-api-and-identity-2/
然后,为了针对活动目录进行身份验证,我创建了自己的用户存储和用户管理器,并使用 Directory.Masnagement 程序集中的 UserPrincipal 和 PrinipalContext 类手动执行此操作。