[英].net core 5 Windows Authentication and Active Directory resources
嘿伙计们只是一个没有代码的直接问题。 我正在努力寻找简单问题的基本答案。
我到底应该如何使用 windows 身份验证(未集成 windows 身份验证)和 Active Directory 进行身份验证和授权? 您会认为会有一百万个示例项目,但我对 .net 内核的搜索结果中,有 80% 都是旧的 asp.net 文章,这些文章已过时且不适用于较新的版本。
我在这里有一堆工作示例,但它们都使用 System.Web 类/库,这些类/库现在都已弃用,对我不再有用。
我从旧的 asp.net 项目中获得的代码和方法看起来都很简单,否则我很困惑为什么我找不到与 .net 内核类似的东西? 在我阅读的大多数文章中,一切都是一些利基第三方 package,而我只是想用普通的 Microsoft 方式来做,我发现很难相信没有一个简单的解决方案可以用于登录屏幕和针对 AD 的身份验证。 Microsoft 文档感觉他们的目标是获得小提示并确切知道该做什么的专家。
我是一名刚工作了 4 个月的新研究生,并且是 .net 核心的新手。
我已经下降了 LDAP、索赔、委托人、cookies 和更多的兔子洞,但只是对 .net 及其类/库等的所有不同版本感到更加困惑。
有一个 nuget 可以处理这个问题; System.DirectoryServices.AccountManagement
它只是 Windows,我认为是跨平台的新型 ldap 版本。
要进行身份验证:
using (var ctx = new PrincipalContext(ContextType.Domain))
{
if (!ctx.ValidateCredentials(user_name, password))
throw new Exception("unknown username or password");
using (var userPrinciple = new UserPrincipal(ctx)) {
userPrinciple.SamAccountName = user_name;
using (var search = new PrincipalSearcher(userPrinciple))
{
UserPrincipal user = (UserPrincipal) search.FindOne();
if (user == null) {
throw new Exception("user authenticated but not found in directory");
}
return user; // auth'ed user
}
}
}
授权(按组成员身份):
using (var ctx = new PrincipalContext(ContextType.Domain))
{
using (var groupPrinciple = new GroupPrincipal(ctx))
{
groupPrinciple.SamAccountName = groupName;
using (var search = new PrincipalSearcher(groupPrinciple))
{
member_list = GetMembersOfPrincipalGroup((GroupPrincipal)search.FindOne());
}
// member_list contains all the users of a group.
// I cache these in a Dictionary for faster group membership checks
}
}
请注意,ContextType 枚举处理本地计算机用户以及域。 在 nuget package 上搜索更多示例。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.