如何在ASP.NET页面上检测Active Directory用户

时间:2014-03-13 21:43:21

标签: c# asp.net active-directory

我有一个主要是内容系统的Web应用程序 - 也就是说,它显示另一个系统的帮助。谁看待它并不重要。但是,有一个我想要显示的用户列表,还提供了一种编辑列表的方法。在该页面上,我想检测用户的Active Directory信息,如果用户位于有权更改数据的用户列表中,则显示编辑图标按钮以提供编辑某个元素的方法。我不需要也不希望Windows身份验证确定用户是否可以访问该页面,只是为了取消用户的登录信用。

简而言之,我想要这个:

// Get the user's creds
// Is user a page editor?
if (IsPageEditor(UserCreds))
{
    // put icon buttons for editing 
}
else
{
    // don't put icon button there
}

首先当然是获取用户凭据。我应该补充一点,这将全部在私人公司内部网上,每个用户都将登录到网络中。

2 个答案:

答案 0 :(得分:1)

要获取当前登录用户,您需要致电WindowsIdentity.GetCurrent();

从那里你可以做很多事情,具体取决于你的要求,获取用户组,获取OU信息等。对于完整的AD包装,我在这里有一篇完整的文章

http://macaalay.com/2010/06/28/active-directory-c/

答案 1 :(得分:1)

  

我不需要也不希望Windows身份验证确定用户是否可以访问该页面,只是为了取消用户的登录信用。

为什么不呢? Windows身份验证是发现已连接用户的Windows身份的明显,安全的方法。

任何其他机制都是不安全的,即未被授权编辑的用户可能欺骗授权用户的身份。使用Windows身份验证并不妨碍您允许任何用户访问该应用程序。

  

我对设置Windows.Authentication ON的理解是,在允许查看页面之前,它会挑战用户提供用户名和密码

不,这不正确。如果服务器与客户端位于同一域中,并且服务器配置为允许所有域用户连接,则不需要向最终用户发出提示。

  

我们的故障单系统"知道"当我们访问页面时我们是谁 - 它必须从当前登录用户的Active Directory获取此信息。

可能是使用Windows身份验证。尝试使用Fiddler等工具检查浏览器和故障单系统之间的HTTP流:您可能会看到身份验证质询/响应。