gpt4 book ai didi

asp.net - 如何允许我的 Azure Web 应用程序访问 Active Directory?

转载 作者:行者123 更新时间:2023-12-03 04:16:16 26 4
gpt4 key购买 nike

我有一个使用 Active Directory 进行身份验证和授权的 WebForms 应用程序。它在本地主机上运行良好,但当我尝试访问发布到 Azure 的站点时失败。我已确保该应用程序已在 Azure Active Directory 中注册。如果我不尝试获取当前用户的 AD 安全组,该应用程序将启动并按预期工作。以下是导致问题的 Site Master 的 Page_Load 事件中的代码:

protected void Page_Load(object sender, EventArgs e)
{
PrincipalSearchResult<Principal> groups = UserPrincipal.Current.GetAuthorizationGroups();

IEnumerable<string> groupNames = groups.Select(x => x.Name);

if (HttpContext.Current.User.Identity.IsAuthenticated)
{
HyperLink newphaud = LIV.FindControl("liaNewPhaud") as HyperLink;
HtmlGenericControl liadmin = LIV.FindControl("navAdminsDdl") as HtmlGenericControl;

newphaud.Visible = (groupNames.Contains("SG1") || groupNames.Contains("SG2"));

liadmin.Visible = groupNames.Contains("SG1");
}
}

这是异常详细信息:

System.Runtime.InteropServices.COMException:访问被拒绝。

这是堆栈跟踪:

[COMException (0x80070005): Access is denied.
]
System.DirectoryServices.DirectoryEntry.Bind(Boolean throwIfFail) +399115
System.DirectoryServices.DirectoryEntry.Bind() +36
System.DirectoryServices.DirectoryEntry.RefreshCache() +45
System.DirectoryServices.AccountManagement.PrincipalContext.DoMachineInit() +211
System.DirectoryServices.AccountManagement.PrincipalContext.Initialize() +128
System.DirectoryServices.AccountManagement.PrincipalContext.get_QueryCtx() +31
System.DirectoryServices.AccountManagement.Principal.FindByIdentityWithTypeHelper(PrincipalContext context, Type principalType, Nullable`1 identityType, String identityValue, DateTime refDate) +14
System.DirectoryServices.AccountManagement.Principal.FindByIdentityWithType(PrincipalContext context, Type principalType, IdentityType identityType, String identityValue) +90
System.DirectoryServices.AccountManagement.UserPrincipal.FindByIdentity(PrincipalContext context, IdentityType identityType, String identityValue) +32
System.DirectoryServices.AccountManagement.UserPrincipal.get_Current() +191
phaud.SiteMaster.Page_Load(Object sender, EventArgs e) in C:\Users\user1\source\repos\phaud\phaud\Site.Master.cs:19
System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender, EventArgs e) +51
System.Web.UI.Control.OnLoad(EventArgs e) +95
System.Web.UI.Control.LoadRecursive() +59
System.Web.UI.Control.LoadRecursive() +131
System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +678

我需要做什么才能允许我的 Azure Web 应用访问 AD?

最佳答案

请注意,Azure AD != Windows AD。从代码来看,您的应用程序似乎正在访问本地 Windows AD。因此,当您使用 Azure 时,您基本上有两个选择 1)使用Azure AD API进行身份验证并获取用户信息 2) 您可以有一个单独的 Windows VM 运行 Windows AD,然后您的 Azure Web 应用程序可以访问该 VM。

如果我是你,我会探索第一个选项。希望对您有帮助

关于asp.net - 如何允许我的 Azure Web 应用程序访问 Active Directory?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52725001/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com