使用asp.net c中的活动目录autentication登录

时间:2013-08-08 07:39:10

标签: c# asp.net active-directory c#-3.0 active-directory-group

我正在创建asp.net web application。我使用活动目录登录。我有一个名为 Validusers 的组,当用户登录时,会将用户检查到 validusers 组。如果用户存在于组中,则登录成功,否则登录失败。

我做了所有的事情,它在我的本地机器上运行良好,但是当我发布网站时它不起作用。我收到以下错误

 Logon failure: unknown user name or bad password. 

在我的机器上它运行良好,而发布时我得到了一个错误。我在下面的代码中使用了

PrincipalContext ctx = new PrincipalContext(ContextType.Domain, "DomainName");
System.Security.Principal.WindowsIdentity MyIdentity = System.Security.Principal.WindowsIdentity.GetCurrent();
string LogUser = MyIdentity.Name.ToString();
UserPrincipal user = UserPrincipal.FindByIdentity(ctx, LogUser);
GroupPrincipal group = GroupPrincipal.FindByIdentity(ctx, "Validusers");Validusers---->Groupname
 if (user.IsMemberOf(group))
 {
    Login success
 }
else
{
Login Failed
}

它将使用Validusers组检查已记录的用户。如果该用户存在于该组中,则登录成功,否则登录失败。我发布这个网站时出错了。请给出一些解决方案

1 个答案:

答案 0 :(得分:0)

虽然您提供的开发机器和Web服务器的域和网络关系信息很少,但我认为Web服务器与您依赖代码的Active Directory服务器没有物理连接。那么Web服务器就不可能查询AD目录。 如果Web服务器和AD服务器位于同一网络上,则可能需要处理Web服务器和AD服务器的防火墙设置,以确保它们可以进行通信。 如果Web和AD服务器没有通信问题,则应检查“Validusers”对Web服务器上运行的代码的可用性。 由于IIS应用程序使用为托管应用程序的应用程序池定义的用户帐户运行,因此应确保应用程序池标识具有足够的权限来访问这些精细信息。

相关问题