从C#网页获取当前登录的Active Directory用户(IIS incl)

时间:2011-07-21 18:43:52

标签: c# iis authentication active-directory

我们正在为客户端构建Intranet,客户端不希望用户登录,因为他们已经登录到域(Active Directory)

但他们确实想知道每个用户的AD用户名,这样如果他们在博客上发布,就可以记录他们的身份。

到目前为止,我们的想法是,我们的web.config文件应该说:

<identity impersonate="false" />

以便每个用户自己浏览Intranet站点,而不是IIS中配置的App Pool用户。

这是正确的方法吗?

如果是这样,我们应该使用哪种IIS身份验证?注意:我们没有对用户进行身份验证,因此我们不希望登录提示,所有用户都已登录到域,我们只想查看他们的用户名。

这甚至可能吗?我们是否走在正确的轨道上?

在C#中,我们可以检索如下的用户名:

System.Web.HttpContext.Current.Request.LogonUserIdentity.Name.ToString()

但是我们找不到一个不会提示域/网络登录的IIS身份验证设置。

2 个答案:

答案 0 :(得分:1)

您需要启用Windows身份验证。执行此操作后,身份令牌将按照我的记忆传递给服务器,您可以使用它来管理身份验证。 另请注意,只有Chrome和IE完全支持此功能,Firefox会在验证用户之前至少询问是否按下确定按钮。 需要注意的其他事项是在浏览器中正确设置信任级别,否则它不会进行自动身份验证。

答案 1 :(得分:0)

您已经知道如何获取LogonUserIdentity并正确设置IIS。缺少的是让浏览器自动使用用户的AD帐户进行身份验证。要启用它,您必须配置浏览器以执行此操作,我认为默认情况下仅为Intranet区域站点启用。