我正在制作一个内部网mvc应用程序供内部使用。店里只有其他人才是服务器技术人员。我被告知我们有一个域控制器,我们使用AD,每个用户都在组中。我很确定我们使用Windows身份验证(基于我们必须登录我们的工作站。
我不确定我是否应该在目录服务中使用UserPrincipal,或者使用HTTPContext中的Current.User内容或其他东西来验证用户身份。只有某些AD群组中的人才能打开该应用。
显然我对应用程序安全性一无所知。我一打算找出哪些"技术"我应该用。我还需要针对特定组检查用户。我几乎想到了这一点,但当我知道它应该是真的时,我会变得虚假。
if (HttpContext.Current.User.IsInRole("MyADGroup"))
{
IsAdmin = true; //keeps returning false.
}
那么我该怎么做呢?
答案 0 :(得分:1)
您可以使用this example来帮助您开始使用Active Directory角色。
由于该应用程序是内部的,您不想远离Windows身份验证,但我建议您查看LDAP。
祝你好运!答案 1 :(得分:0)
您可以使用ActiveDirectoryMembershipProvider连接内部应用程序以使用AD中的用户和组。然后只需对提供程序实例(Membership.ValidateUser
)进行身份验证。这允许您使用AD作为后备存储,但将应用程序与显式依赖它隔离开来。这也将填充HttpContext上的UserPrincipal。
我建议使用标准登录表单,但IIS允许您为整个站点配置Windows身份验证。使用标准登录表单和AD支持的身份验证,您可以通过允许匿名访问来维护解耦并将站点的某些部分公开为公共页面。这对于诸如应用程序帮助和常见问题解答之类的内容非常有用,这些内容可能对尝试登录但未经许可或使用不正确的凭据的人员有用。提供更好的用户体验。