具有针对活动目录的Windows身份验证的Asp.net网页
本文关键字:Windows 身份验证 net 网页 Asp 活动 | 更新日期: 2023-09-27 18:07:54
我整晚都在摆弄这个,真的很沮丧。我得到的网页显示,但由于某种原因,它不工作的意思是,它拍摄我回到我的错误页面,并指出"无法认证用户,请再试一次!"。我不能弄清楚这一点,因为这工作完美地找到我的本地机器上安装了视觉工作室。
如果有人能花点时间帮帮我,我已经和它战斗了一整天了。由于
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;
}
应用程序在IIS上部署失败的一个可能原因是,您配置它运行的帐户没有足够的权限来访问Active Directory服务器。默认情况下,IIS中的应用程序池在内置的ApplicationPoolIdentity帐户下运行,该帐户是服务器帐户的本地帐户。您应该进入IIS中的应用程序池设置,并选择具有足够权限的域帐户。
这在VS本地运行时有效,因为您正在使用您的帐户运行应用程序,该帐户可能是可以访问Active Directory的域帐户。
在另一个论坛上得到了答案,但是我没有理由做了很多额外的工作。Asp.net有一个USER.ISINROLE("GROUPNAME"),我使用了它