0

我正在制作一个供内部使用的 Intranet mvc 应用程序。店里只有其他人是服务器技术人员。我被告知我们有一个域控制器并且我们使用 AD,每个用户都在组中。我很确定我们使用 Windows 身份验证(基于我们必须登录到我们的工作站。

我不确定是否应该使用目录服务中的 UserPrincipal 或 HTTPContext 中的 Current.User 东西或其他东西来验证用户。只有某些广告组中的人才能打开该应用程序。

显然我对应用程序安全一无所知。一旦我弄清楚我应该使用哪种“技术”,我就计划着书。我还需要根据特定组检查用户。我几乎想通了,但当我知道它应该是真的时,我就变得假了。

        if (HttpContext.Current.User.IsInRole("MyADGroup"))
        {
            IsAdmin = true;   //keeps returning false.
        }

那么我应该调查什么?

4

2 回答 2

1

您可以使用此示例来帮助您开始使用 Active Directory 角色。

由于该应用程序是内部应用程序,因此您不希望远离 Windows 身份验证,但我建议您查看 LDAP。

连接到 LDAP 服务器

祝你好运!

于 2015-01-14T00:37:01.157 回答
0

您可以使用ActiveDirectoryMembershipProvider连接内部应用程序以使用 AD 中的用户和组。然后只需对提供者实例 ( Membership.ValidateUser) 进行身份验证。这允许您将 AD 用作后备存储,但将您的应用程序与对它的显式依赖隔离开来。这也将填充 HttpContext 上的 UserPrincipal。

我建议将其与标准登录表单一起使用,尽管 IIS 将允许您为整个站点配置 Windows 身份验证。使用标准登录表单和 AD 支持的身份验证允许您保持分离,并通过允许匿名访问将站点的某些部分公开为公共页面。这对于诸如应用程序帮助和常见问题解答之类的内容可能很有用,这些内容可能对尝试登录但被许可禁止或使用不正确凭据的人有用。也提供了更好的用户体验。

于 2015-01-13T23:37:02.287 回答