我已经在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上的信息。不幸的是,我不知道如何设置它。
如果有人能给我一些简单的步骤来解决这个问题,我会很感激。谢谢。
答案 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
变量的值,以确定是否允许用户继续。