带有Windows身份验证的Asp.net WebPage aganst Active Directory

时间:2013-04-06 19:24:57

标签: c# asp.net active-directory windows-authentication

我一直在搞乱这一晚,这真的令人沮丧。我得到了最后显示的网页,但由于某种原因,它不起作用意味着它将我回到我的错误页面并指出“无法验证用户请再试一次!”。我无法弄清楚这一点,因为这可以在我的本地机器上完美地找到安装了视觉工作室。

如果有人可以花时间帮忙解决这个问题,我一整天都在和它斗争。感谢

Class.cs

public bool IsUserInSetup(string groupName, UserPrincipal user)
    {
        PrincipalContext context = new PrincipalContext(ContextType.Domain, "DomainName");
       GroupPrincipal group = GroupPrincipal.FindByIdentity(context, "GroupName");

        if (user.IsMemberOf(group))
        {
            return true;
        }
        return false;
    }

Authentication.aspx.cs

 if (!IsPostBack)
            {
                if (Request.IsAuthenticated)
                {

                    if (gv.IsUserInSetup("GroupName", user))
                    {
                        Session["userValue"] = UserPrincipal.Current;

                        Response.Redirect("Default.aspx");

                    }
 else
                {
                    lblInfo.Text = "Could Not Authenticate User Please Try Again!";
                    lblInfo.Text += "<br><b>Name: </b>" + User.Identity.Name;
                    lblInfo.Text += "<br><b>Authenticated With: </b>";
                    lblInfo.Text += User.Identity.AuthenticationType;
                }

2 个答案:

答案 0 :(得分:1)

在IIS上部署应用程序可能失败的原因可能是因为您将其配置为在其下运行的帐户没有足够的权限来访问Active Directory服务器。默认情况下,IIS中的应用程序池在内置的ApplicationPoolIdentity帐户下运行,该帐户是服务器帐户的本地帐户。您应该转到IIS中应用程序池的设置,并选择具有足够权限的域帐户。

这在VS中本地运行时有效,因为您使用的帐户运行应用程序,该帐户可能是可以访问Active Directory的域帐户。

答案 1 :(得分:0)

在另一个论坛上得到了答案,但我无缘无故地做了很多额外的工作。 Asp.net有一个USER.ISINROLE(“GROUPNAME”),我使用它。