使用asp.net c#中的active directory身份验证登录

本文关键字:directory 身份验证 登录 active 中的 asp net 使用 | 更新日期: 2023-09-27 18:26:46

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

使用asp.net c#中的active directory身份验证登录

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