【问题标题】:Use standard Active Directory in ASP.NET Core app?在 ASP.NET Core 应用程序中使用标准 Active Directory?
【发布时间】:2016-03-31 23:06:41
【问题描述】:

我正在创建一个新的 ASP.NET Core 1.0 应用程序。其中一项要求是使用 Active Directory 进行用户身份验证。不幸的是,我们的组织只使用“旧”的 Active Directory。我们根本不使用 Azure Active Directory。

当我在 Visual Studio 2015 中创建新项目时,“更改身份验证”下没有此选项:

最好的方法是什么?

【问题讨论】:

  • 您是在寻找 NTLM 身份验证(在该屏幕截图中将是 Windows 身份验证)还是想要将 AD 与 ASP.NET Identity 3 一起使用?对于 NTLM,您可以在此处找到似乎适用于 beta8 和 RC1 的较旧答案。对于 ASP.NET 身份,由于安全问题(允许暴力破解密码并且在 n 次尝试失败后无法阻止用户),没有任何开箱即用的东西,据我所知也不会有。如果您仍想尝试,则需要实现自定义IUserStore/IUserPasswordStore,但请注意这种方法;)
  • “对于 NTLM,您可以在此处找到较旧的答案” - 您是要包含链接吗?如果我能找到一种使用 NLTM 身份验证配置用户和管理员角色的方法,那将是可行的。

标签: asp.net active-directory visual-studio-2015 asp.net-core asp.net-core-mvc


【解决方案1】:

目前不可能。

ASP.NET Core 仅支持 OpenID Connect OIDC。当前的 ADFS 版本,这是您在本地单个组织需要做的,仅支持 WSFed,它尚未在 Core 中实现,并且不太可能通过 RTM 在 Core 中实现。 ADFS 也支持 OAuth,但为该部分编写代码的 AAD 团队一直专注于 OIDC。

【讨论】:

  • 不,它没有。 AAD 支持 OIDC。
【解决方案2】:

ASP.NET Core 1.0 RC2 可以利用 Windows 身份验证。以下代码将使您能够访问 Configure() 函数中的 AD 用户身份对象。我还没有找到一种优雅的方式将此身份映射到 ApplicationDbContext 中的 Microsoft.AspNetCore.Identity 授权。

    app.Use(async (context, next) =>
    {
            var identity = (ClaimsIdentity) context.User.Identity;
            await next.Invoke();
    });

我已经发布了一个类似的问题,您可能想要关注: Best practice for storing ASP.NET Core Authorization claims when authenticating users against Active Directory?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-01-01
    • 2021-10-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-07
    相关资源
    最近更新 更多