繁体   English   中英

.net 核心 5 Windows 身份验证和 Active Directory 资源

[英].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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM