我正在开发一个Intranet Web应用程序,我正在学习如何将VB挂钩到Active Directory中。我们将要做一些特定于位置的权限,我的老板希望(如果可能的话)我挂钩到Active Directory以获取用户位置。
我认为我需要做的就是获取用户名,但我不确定最好的方法是什么。我们是微软唯一的商店,因此IE和IIS是当天的订单。要访问Intranet,您必须使用我们的域登录到计算机,这是一个安全级别,但我需要进行身份验证并确保用户有权进行更改。我想我们要么在AD信息中有一个修饰符(如果还没有修饰符),要么在数据库中保留一个权限表,但前者可能是首选。
我知道IIS有一个允许/需要身份验证的功能,但我不确定它应该如何工作。
那么获得用户凭据的最佳/最简单/最(有点)安全方式是什么?我总是可以做一个登录页面,但是如果我能在后台获得他们的AD凭证那就更好了。
谢谢!
答案 0 :(得分:2)
您需要为IIS站点禁用匿名身份验证,并启用windows-auth。
现在转到您的web.config并更改以下内容
<authentication mode="Windows">
...
</authentication>
请参阅http://msdn.microsoft.com/en-au/library/532aee0e(v=VS.80).aspx
&安培;
如果需要
<identity impersonate="true" />
请参阅http://msdn.microsoft.com/en-us/library/aa292118(VS.71).aspx
现在您应该可以使用
获取当前用户HttpContext.Current.User.Identity.Name
检查用户是否在您可以使用的特定群组中
HttpContext.Current.User.IsInRole("YourActiveDirectoryGroup")
答案 1 :(得分:1)
可以将IIS配置为使用集成身份验证,这将允许您访问用户的samaccountname(Windows 2000之前的登录)。有了它,您可以对AD执行LDAP查询并检查组成员身份。如果用户是CanModifyStuffGroup的成员(您在AD中创建并添加了用户),那么让他们进行更改,否则为他们提供只读版本 - 或者其他任何内容。