对于早期版本的.NET应用程序模板,例如4.5.2,您可以创建一个新的Web应用程序,将身份验证更改为“工作和学校帐户”,然后选择“内部部署”。在.NET 5 Web应用程序模板中,“工作和学校帐户”选项没有“内部部署”选项。
如何使用ASP.NET标识通过.NET 5中的本地Active Directory(LDAP)进行身份验证。为了清楚起见,我不是在寻找Windows身份验证,我希望让用户输入他们的凭据并对内部部署AD处理身份验证。 IOW,用户不需要登录到Windows机器,他们可以从他们的移动设备等访问。
我已经搜索了几个小时无济于事但如果答案在某处,我不会感到惊讶。任何帮助表示赞赏!
答案 0 :(得分:10)
LDAP和内部部署身份验证不是一回事,这就是为什么,恕我直言,内部部署模式它已经成为“开箱即用”选项 - 而且因为微软几乎没有推动所有人迁移到Azure云:)
内部部署模式(如您所见here)是一种使用AD作为联盟提供商的方法(在SF上查看),如Twitter或Facebook,如果您愿意;您可以在本地使用ADFS(如果您的AD支持它)或在云中使用ADFS(使用Azure)。
如果您正在寻找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身份与LDAP一起使用,您可以创建个人自定义存储提供程序,完美解释here。 这并不困难,但实施起来可能还很长。
答案 1 :(得分:1)
没有本地选项,因为.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:你不能。
答案 2 :(得分:0)
我不知道任何模板或任何内容,但我按照本指南设置了自己的oAuth2和Owin身份提供商。
然后,为了对活动目录进行身份验证,我创建了自己的用户名和usermanager,并使用Directory.Masnagement程序集中的UserPrincipal和PrinipalContext类手动完成。