1

我正在创建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 组检查登录用户。如果用户存在于组中,则登录成功,否则登录失败。我发布此网站时遇到错误。请提供一些解决方案

4

1 回答 1

0

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

于 2014-02-04T18:43:40.087 回答