如何将网站的使用限制在特定公司的活动目录中?

时间:2015-08-10 19:36:30

标签: asp.net-mvc authentication iis active-directory iis-7.5

我已经在asp.net/MVC/RAZOR/C#中开发了一个Web应用程序。客户希望用户访问此站点,如果他们来自某个域,则无需输入登录名/密码。该域外的用户可以使用标准登录屏幕输入他们的登录名和密码。我以前从未使用过Active Directory,而且我的IIS工作有限。有人可以解释如何设置吗?

通过此链接http://www.iis.net/configreference/system.webserver/security/authentication/windowsauthentication,我确定我需要在IIS中使用Windows身份验证选项。但是,所有这些都会在用户访问网站时提示用户输入用户名和密码。现在,身份验证已设置,因此Windows身份验证启用了响应" HTTP 401 Challenge"启用的提供商是" Negoiate:Kerberos"。如何避免此登录屏幕并将用户的Active Directory用户名,组和域传递到网站?

如果我越过登录界面,我会尝试使用WindowsIdentity.GetCurrent()。名称来获取用户的身份。但是,这显示了" IIS APPPOOL"无论我登录为谁。如何获取Active Directory用户名? (和小组)

我将以下代码添加到我的web.config:

  <system.web>
    <authentication mode="Windows" />
     <authorization>
       <allow users="DOMAINNAME\*" />
       <deny users="?"/>
      </authorization>
      ...

在我找到上面的IIS链接之前,我尝试了这些网站上列出的代码: http://www.codeproject.com/Tips/458039/Application-Login-through-Active-Directory-LDAP http://www.codeproject.com/Articles/5173/Web-based-Active-Directory-Login 这些工作用于验证用户,但他们需要一个我没有的密码。我无法找到获取密码的方法,这使我更进一步查找IIS上的信息。不幸的是,我不知道如何设置它。

如果有人能给我一些简单的步骤来解决这个问题,我会很感激。谢谢。

1 个答案:

答案 0 :(得分:0)

我最近不得不限制一个网站,只能由特定Active Directory组中的用户使用。

如果您想使用相同的方法,您只需将组名设置为&#34; Domain Users&#34;允许所有用户。像这样:

var User = System.Web.HttpContext.Current.User;
var isUser = User.IsInRole(System.Configuration.ConfigurationManager.AppSettings.Get("SystemUsersADGroupname"));

然后我将以下内容添加到web.config中,以定义所需的组名:

<configuration>
    <appSettings>
        <add key="SystemUsersADGroupname" value="mydomain\Domain Users" />
    </appSettings>
</configuration>

然后,我可以检查isUser变量的值,以确定是否允许用户继续。