使用VB.NET进行Intranet Active Directory身份验证

时间:2010-06-23 15:40:22

标签: vb.net authentication credentials

我正在开发一个Intranet Web应用程序,我正在学习如何将VB挂钩到Active Directory中。我们将要做一些特定于位置的权限,我的老板希望(如果可能的话)我挂钩到Active Directory以获取用户位置。

我认为我需要做的就是获取用户名,但我不确定最好的方法是什么。我们是微软唯一的商店,因此IE和IIS是当天的订单。要访问Intranet,您必须使用我们的域登录到计算机,这是一个安全级别,但我需要进行身份验证并确保用户有权进行更改。我想我们要么在AD信息中有一个修饰符(如果还没有修饰符),要么在数据库中保留一个权限表,但前者可能是首选。

我知道IIS有一个允许/需要身份验证的功能,但我不确定它应该如何工作。

那么获得用户凭据的最佳/最简单/最(有点)安全方式是什么?我总是可以做一个登录页面,但是如果我能在后台获得他们的AD凭证那就更好了。

谢谢!

2 个答案:

答案 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中创建并添加了用户),那么让他们进行更改,否则为他们提供只读版本 - 或者其他任何内容。